@Override public void accept(ExprVisitor exprVisitor) { exprVisitor.visit(this); }
@Override public void visit(ExprVisitor visitor) { visitor.visit(this); }
@Override public <R, A> R accept(ExprVisitor<R, A> visitor, A arg) { return visitor.methodCall(this, arg); }
@Override public <R, A> R accept(ExprVisitor<R, A> visitor, A arg) { return visitor.builtInRead(this, arg); }
@Override public <R, A> R accept(ExprVisitor<R, A> visitor, A arg) { return visitor.var(this, arg); }
@Override public <R, A> R accept(ExprVisitor<R, A> visitor, A arg) { return visitor.booleanConst(this, arg); }