public void Translate(ActionSet actionSet)
        {
            if (DefinedVariable != null)
            {
                // Add the defined variable to the index assigner.
                actionSet.IndexAssigner.Add(actionSet.VarCollection, DefinedVariable, actionSet.IsGlobal, null);

                // Set the initial variable.
                if (actionSet.IndexAssigner[DefinedVariable] is IndexReference && DefinedVariable.InitialValue != null)
                {
                    actionSet.AddAction(((IndexReference)actionSet.IndexAssigner[DefinedVariable]).SetVariable(
                                            (Element)DefinedVariable.InitialValue.Parse(actionSet)
                                            ));
                }
            }
            else if (InitialVarSet != null)
            {
                InitialVarSet.Translate(actionSet);
            }

            WhileBuilder whileBuilder = new WhileBuilder(actionSet, Condition?.Parse(actionSet));

            whileBuilder.Setup();

            Block.Translate(actionSet);

            if (SetVariableAction != null)
            {
                SetVariableAction.Translate(actionSet);
            }

            whileBuilder.Finish();
        }
        public void Translate(ActionSet actionSet)
        {
            WhileBuilder whileBuilder = new WhileBuilder(actionSet, () => { return(Condition.Parse(actionSet)); });

            whileBuilder.Setup();
            Block.Translate(actionSet);
            whileBuilder.Finish();
        }