// Path: src/java/minijava/visitor/Visitor.java
// public interface Visitor<R> {
// 
// 	//Lists
// 	public <T extends AST> R visit(NodeList<T> ns);
// 	
// 	//Declarations
// 	public R visit(Program n);
// 	public R visit(MainClass n);
// 	public R visit(ClassDecl n);
// 	public R visit(VarDecl n);
// 	public R visit(MethodDecl n);
// 	
// 	//Types
// 	public R visit(IntArrayType n);
// 	public R visit(BooleanType n);
// 	public R visit(IntegerType n);
// 	public R visit(ObjectType n);
// 
// 	//Statements
// 	public R visit(Block n);
// 	public R visit(If n);
// 	public R visit(While n);
// 	public R visit(Print n);
// 	public R visit(Assign n);
// 	public R visit(ArrayAssign n);
// 	
// 	//Expressions
// 	public R visit(And n);
// 	public R visit(LessThan n);
// 	public R visit(Plus n);
// 	public R visit(Minus n);
// 	public R visit(Times n);
// 	public R visit(ArrayLookup n);
// 	public R visit(ArrayLength n);
// 	public R visit(Call n);
// 	public R visit(IntegerLiteral n);
// 	public R visit(BooleanLiteral n);
// 	public R visit(IdentifierExp n);
// 	public R visit(This n);
// 	public R visit(NewArray n);
// 	public R visit(NewObject n);
// 	public R visit(Not not);
// 
// }


import minijava.visitor.Visitor;
package minijava.ast;



public class VarDecl extends AST {

	public static enum Kind {
		FIELD, LOCAL, FORMAL
	}

	public final Kind   kind;
	public final Type   type;
	public final String name;

	public VarDecl(Kind kind, Type type, String name) {
		super();
		this.kind = kind;
		this.type = type;
		this.name = name;
	}

// Path: src/java/minijava/visitor/Visitor.java
// public interface Visitor<R> {
// 
// 	//Lists
// 	public <T extends AST> R visit(NodeList<T> ns);
// 	
// 	//Declarations
// 	public R visit(Program n);
// 	public R visit(MainClass n);
// 	public R visit(ClassDecl n);
// 	public R visit(VarDecl n);
// 	public R visit(MethodDecl n);
// 	
// 	//Types
// 	public R visit(IntArrayType n);
// 	public R visit(BooleanType n);
// 	public R visit(IntegerType n);
// 	public R visit(ObjectType n);
// 
// 	//Statements
// 	public R visit(Block n);
// 	public R visit(If n);
// 	public R visit(While n);
// 	public R visit(Print n);
// 	public R visit(Assign n);
// 	public R visit(ArrayAssign n);
// 	
// 	//Expressions
// 	public R visit(And n);
// 	public R visit(LessThan n);
// 	public R visit(Plus n);
// 	public R visit(Minus n);
// 	public R visit(Times n);
// 	public R visit(ArrayLookup n);
// 	public R visit(ArrayLength n);
// 	public R visit(Call n);
// 	public R visit(IntegerLiteral n);
// 	public R visit(BooleanLiteral n);
// 	public R visit(IdentifierExp n);
// 	public R visit(This n);
// 	public R visit(NewArray n);
// 	public R visit(NewObject n);
// 	public R visit(Not not);
// 
// }


// Path: src/java/minijava/ast/VarDecl.java
import minijava.visitor.Visitor;

package minijava.ast;



public class VarDecl extends AST {

	public static enum Kind {
		FIELD, LOCAL, FORMAL
	}

	public final Kind   kind;
	public final Type   type;
	public final String name;

	public VarDecl(Kind kind, Type type, String name) {
		super();
		this.kind = kind;
		this.type = type;
		this.name = name;
	}

	@Override