package org.eclipse.gymnast.examples.game.lang.gen.ast;

/**
 *
 * @generated by Gymnast from game.ast on Jun 7, 2006 1:11:57 AM
 */
public abstract class Command extends GameASTNode {
	/**
	 * Construct a new Command.
	 */
	public Command() {
		super();
	}

	/**
	 * This method overrides the superclass <code>acceptImpl</code> providing
	 * the same implementation.  Here <code>this</code> refers to this specific node
	 * class, so the <code>beginVisit</code> and <code>endVisit</code> methods
	 * specific to this type in the visitor will be invoked.
	 */
	public void acceptImpl(GameASTNodeVisitor visitor) {
		boolean visitChildren = visitor.beginVisit(this);
		if (visitChildren) visitChildren(visitor);
		visitor.endVisit(this);
	}

}