void ASTNode::accept(ASTVisitor &visitor) { visitor.visit(this); }
void ASTElem::accept(ASTVisitor &v) { v.addToPath(this); v.visit(*this); v.removeFromPath(this); }
void ScopeBody::accept(ASTVisitor& visitor) { visitor.visit(*this); for(auto it = children.begin() ; it != children.end() ; ++it) (*it)->accept(visitor); }
void ProgramElement::accept(ASTVisitor& visitor) { visitor.visit(*this); for(auto it = children.begin() ; it != children.end() ; ++it) (*it)->accept(visitor); }
void ModuleMemberAccessNode::accept(ASTVisitor& visitor) { visitor.visit(this); }
void ASTAttribTest::accept(ASTVisitor &v) { v.addToPath(this); v.visit(*this); v.removeFromPath(this); }
void NonTerminal::accept(ASTVisitor& visitor) { visitor.visit(*this); for(auto it = children.begin() ; it != children.end() ; ++it) (*it)->accept(visitor); }
void Op_PostfixDecrement::accept(ASTVisitor& visitor) { visitor.visit(*this); for(auto it = children.begin() ; it != children.end() ; ++it) (*it)->accept(visitor); }
void AtomicExpressionNode::accept(ASTVisitor& visitor) { visitor.visit(*this); }
void ASTDefCollation::accept(ASTVisitor &v) { v.addToPath(this); v.visit(*this); v.removeFromPath(this); }
void VariableDeclarationNode::accept(ASTVisitor& visitor) { visitor.visit(*this); }
void NT_FunctionCall::accept(ASTVisitor& visitor) { visitor.visit(*this); for(auto it = children.begin() ; it != children.end() ; ++it) (*it)->accept(visitor); }
void SoyExpression::accept(ASTVisitor& visitor) { visitor.visit(*this); for(auto it = children.begin() ; it != children.end() ; ++it) (*it)->accept(visitor); }
void Op_Exponentiation::accept(ASTVisitor& visitor) { visitor.visit(*this); for(auto it = children.begin() ; it != children.end() ; ++it) (*it)->accept(visitor); }
void ASTCreateFtIndex::accept(ASTVisitor &v) { v.addToPath(this); v.visit(*this); v.removeFromPath(this); }
void Op_CompNotEqual::accept(ASTVisitor& visitor) { visitor.visit(*this); for(auto it = children.begin() ; it != children.end() ; ++it) (*it)->accept(visitor); }
void FunctionDeclarationNode::accept(ASTVisitor& visitor) { visitor.visit(this); }
void Op_AssignMult::accept(ASTVisitor& visitor) { visitor.visit(*this); for(auto it = children.begin() ; it != children.end() ; ++it) (*it)->accept(visitor); }
void ClosingChevr::accept(ASTVisitor& visitor) { visitor.visit(*this); for(auto it = children.begin() ; it != children.end() ; ++it) (*it)->accept(visitor); }