/// <summary>
 /// Initialize a new instance of <see cref="AlgorithmClassMethodDeclaration"/>
 /// </summary>
 /// <param name="name">The name of the method</param>
 /// <param name="isAsync">Defines whether the method can be call asynchronously</param>
 /// <param name="arguments">The arguments declaration for this method</param>
 public AlgorithmClassMethodDeclaration(string name, bool isAsync, params AlgorithmParameterDeclaration[] arguments)
     : base(name)
 {
     Statements = new AlgorithmStatementCollection();
     IsAsync    = isAsync;
     Arguments  = new AlgorithmParameterDeclarationCollection();
     Arguments.AddRange(arguments);
 }
 /// <summary>
 /// Initialize a new instance of <see cref="AlgorithmIterationStatement"/>
 /// </summary>
 /// <param name="initializationStatement">The statement that initialize the iteration</param>
 /// <param name="incrementStatement">The statement that define the incrementation</param>
 /// <param name="condition">The test expression of the iteration</param>
 /// <param name="conditionAfterBody">This value defines whether the test expression will be run before of after the execution of the iteration's body</param>
 /// <param name="statements">The statements in the iteration's body</param>
 public AlgorithmIterationStatement(AlgorithmStatement initializationStatement, AlgorithmStatement incrementStatement, AlgorithmExpression condition, bool conditionAfterBody = false, AlgorithmStatementCollection statements = null)
 {
     InitializationStatement = initializationStatement;
     IncrementStatement      = incrementStatement;
     Condition          = condition;
     ConditionAfterBody = conditionAfterBody;
     Statements         = statements ?? new AlgorithmStatementCollection();
 }
 /// <summary>
 /// Initialize a new instance of <see cref="AlgorithmConditionStatement"/>
 /// </summary>
 /// <param name="condition">The expression to evaluate true or false</param>
 /// <param name="trueStatement">The collection of statements to run when the condition is true</param>
 /// <param name="falseStatement">The collection of statements to run when the condition is false</param>
 public AlgorithmConditionStatement(AlgorithmExpression condition, AlgorithmStatementCollection trueStatement, AlgorithmStatementCollection falseStatement)
 {
     Condition       = condition;
     TrueStatements  = trueStatement ?? new AlgorithmStatementCollection();
     FalseStatements = falseStatement ?? new AlgorithmStatementCollection();
 }