public override void Accept(INodeVisitor visitor)
 {
     visitor.Visit(this);
     LoopBody.Accept(visitor);
     visitor.VisitAfterBody(this);
     LoopCondition.Accept(visitor);
     visitor.Exit(this);
 }
 public override void Accept(INodeVisitor visitor)
 {
     visitor.Visit(this);
     foreach (Declaration decl in Declarations)
     {
         decl.Accept(visitor);
     }
     visitor.Exit(this);
 }
 public override void Accept(INodeVisitor visitor)
 {
     visitor.Visit(this);
     foreach (var statement in Statements)
     {
         statement.Accept(visitor);
     }
     visitor.Exit(this);
 }
 public override void Accept(INodeVisitor visitor)
 {
     Condition.Accept(visitor);
     visitor.VisitAfterCondition(this);
     ThenBranch.Accept(visitor);
     visitor.VisitAfterThenBranch(this);
     if (ElseBranch != null)
     {
         ElseBranch.Accept(visitor);
     }
     visitor.Exit(this);
 }
 public override void Accept(INodeVisitor visitor)
 {
     visitor.Visit(this);
     foreach (var decl in Formals)
     {
         decl.Accept(visitor);
     }
     foreach (var statement in MethodBody)
     {
         statement.Accept(visitor);
     }
     visitor.Exit(this);
 }