// Path: src/main/java/de/uni/bremen/monty/moco/ast/ASTNode.java
// public interface ASTNode {
// 
// 	ASTNode getParentNode();
// 
// 	void setParentNode(ASTNode parentNode);
// 
// 	Position getPosition();
// 
// 	void setScope(Scope scope);
// 
// 	Scope getScope();
// 
// 	/** Visit this node using double-dispatch.
// 	 * <p>
// 	 * This method is only called from within the BaseVisitor. Every actual subclass must implement this method with the
// 	 * following body:
// 	 *
// 	 * <pre>
// 	 * {@code visitor.visit(this);}
// 	 * </pre>.
// 	 *
// 	 * @param visitor
// 	 *            the visitor to visit this node */
// 	void visit(BaseVisitor visitor);
// 
// 	/** Comfort method to visit all children.
// 	 * <p>
// 	 * Can be used from any visitor if the traversal order does not matter. The BaseVisitor uses this method by default. @
// 	 * param visitor the visitor to viit this node
// 	 *
// 	 * @param visitor
// 	 *            the visitor to visit this node */
// 	void visitChildren(BaseVisitor visitor);
// 
// 	BitSet getVisitedFlags();
// }


import de.uni.bremen.monty.moco.ast.ASTNode;
import de.uni.bremen.monty.moco.ast.Block;
import de.uni.bremen.monty.moco.ast.Import;
import de.uni.bremen.monty.moco.ast.Package;
import de.uni.bremen.monty.moco.ast.declaration.*;
import de.uni.bremen.monty.moco.ast.expression.*;
import de.uni.bremen.monty.moco.ast.expression.literal.*;
import de.uni.bremen.monty.moco.ast.statement.*;
import de.uni.bremen.monty.moco.exception.MontyBaseException;

	// Expression

	/** Visitor method to visit a ConditionalExpression.
	 *
	 * @param node
	 *            the node to visit */
	public void visit(ConditionalExpression node) {
		onEnterChildrenEachNode(node);
		node.visitChildren(this);
		onExitChildrenEachNode(node);
	}

	/** Visitor method to visit a SelfExpression.
	 *
	 * @param node
	 *            the node to visit */
	public void visit(SelfExpression node) {
		onEnterChildrenEachNode(node);
		node.visitChildren(this);
		onExitChildrenEachNode(node);
	}

	/** Visitor method to visit a ParentExpression.
	 *
	 * @param node
	 *            the node to visit */
	public void visit(ParentExpression node) {
		onEnterChildrenEachNode(node);
		node.visitChildren(this);
// Path: src/main/java/de/uni/bremen/monty/moco/ast/ASTNode.java
// public interface ASTNode {
// 
// 	ASTNode getParentNode();
// 
// 	void setParentNode(ASTNode parentNode);
// 
// 	Position getPosition();
// 
// 	void setScope(Scope scope);
// 
// 	Scope getScope();
// 
// 	/** Visit this node using double-dispatch.
// 	 * <p>
// 	 * This method is only called from within the BaseVisitor. Every actual subclass must implement this method with the
// 	 * following body:
// 	 *
// 	 * <pre>
// 	 * {@code visitor.visit(this);}
// 	 * </pre>.
// 	 *
// 	 * @param visitor
// 	 *            the visitor to visit this node */
// 	void visit(BaseVisitor visitor);
// 
// 	/** Comfort method to visit all children.
// 	 * <p>
// 	 * Can be used from any visitor if the traversal order does not matter. The BaseVisitor uses this method by default. @
// 	 * param visitor the visitor to viit this node
// 	 *
// 	 * @param visitor
// 	 *            the visitor to visit this node */
// 	void visitChildren(BaseVisitor visitor);
// 
// 	BitSet getVisitedFlags();
// }


// Path: src/main/java/de/uni/bremen/monty/moco/visitor/BaseVisitor.java
import de.uni.bremen.monty.moco.ast.ASTNode;
import de.uni.bremen.monty.moco.ast.Block;
import de.uni.bremen.monty.moco.ast.Import;
import de.uni.bremen.monty.moco.ast.Package;
import de.uni.bremen.monty.moco.ast.declaration.*;
import de.uni.bremen.monty.moco.ast.expression.*;
import de.uni.bremen.monty.moco.ast.expression.literal.*;
import de.uni.bremen.monty.moco.ast.statement.*;
import de.uni.bremen.monty.moco.exception.MontyBaseException;


	// Expression

	/** Visitor method to visit a ConditionalExpression.
	 *
	 * @param node
	 *            the node to visit */
	public void visit(ConditionalExpression node) {
		onEnterChildrenEachNode(node);
		node.visitChildren(this);
		onExitChildrenEachNode(node);
	}

	/** Visitor method to visit a SelfExpression.
	 *
	 * @param node
	 *            the node to visit */
	public void visit(SelfExpression node) {
		onEnterChildrenEachNode(node);
		node.visitChildren(this);
		onExitChildrenEachNode(node);
	}

	/** Visitor method to visit a ParentExpression.
	 *
	 * @param node
	 *            the node to visit */
	public void visit(ParentExpression node) {
		onEnterChildrenEachNode(node);
		node.visitChildren(this);
		onExitChildrenEachNode(node);