// Path: language/src/com/infdot/analysis/language/statement/visitor/AbstractStatementVisitor.java
// public abstract class AbstractStatementVisitor<T> {
// 
// 	public abstract T visitAssignment(Assignment assignment);
// 	
// 	public abstract T visitCompound(Compound compound, T s1, T s2);
// 	
// 	public abstract T visitDeclaration(Declaration declaration);
// 	
// 	public abstract T visitIf(If ifStatement, T body);
// 	
// 	public abstract T visitOutput(Output output);
// 	
// 	public abstract T visitWhile(While whileStatement, T body);
// }


import com.infdot.analysis.language.statement.visitor.AbstractStatementVisitor;
package com.infdot.analysis.language.statement;



public interface Statement {
	/**
	 * Method to build string representation of code.
	 */
	void toCodeString(StringBuilder builder, String ident);
	
	/**
	 * Method for accepting statement visitor.
	 */
// Path: language/src/com/infdot/analysis/language/statement/visitor/AbstractStatementVisitor.java
// public abstract class AbstractStatementVisitor<T> {
// 
// 	public abstract T visitAssignment(Assignment assignment);
// 	
// 	public abstract T visitCompound(Compound compound, T s1, T s2);
// 	
// 	public abstract T visitDeclaration(Declaration declaration);
// 	
// 	public abstract T visitIf(If ifStatement, T body);
// 	
// 	public abstract T visitOutput(Output output);
// 	
// 	public abstract T visitWhile(While whileStatement, T body);
// }


// Path: language/src/com/infdot/analysis/language/statement/Statement.java
import com.infdot.analysis.language.statement.visitor.AbstractStatementVisitor;

package com.infdot.analysis.language.statement;



public interface Statement {
	/**
	 * Method to build string representation of code.
	 */
	void toCodeString(StringBuilder builder, String ident);
	
	/**
	 * Method for accepting statement visitor.
	 */
	<T> T visit(AbstractStatementVisitor<T> visitor);