public <T> T accept(ASTVisitor<T> v) { return v.forVariable(this); }
public <ResType> ResType accept(ASTVisitor<ResType> v) { return v.forPrimFun(this); }
public <T> T accept(ASTVisitor<T> v) { return v.forNullConstant(this); }
public <ResType> ResType accept(ASTVisitor<ResType> av) { return av.forBoolConstant(this); }
public <T> T accept(ASTVisitor<T> v) { return v.forBlock(this); }
public <T> T accept(ASTVisitor<T> v) { return v.forLetcc(this); }
public <ResType> ResType accept(ASTVisitor<ResType> v) { return v.forIntConstant(this); }
public <T> T accept(ASTVisitor<T> v) { return v.forApp(this); }