ParenExpr extends Expr { @Override public void accept(IAstVisitor visitor) { visitor.visitParenExpr(this); } ParenExpr(Expr expr); Expr getExpr(); @Override void accept(IAstVisitor visitor); @Override ParenExpr clone(); @Override boolean hasChild(IAstNode candidateChild); @Override Expr getChild(int index); @Override void setChild(int index, Expr expr); @Override int getNumChildren();  }
@Test public void accept() { ParenExpr nested = new ParenExpr( new ParenExpr( new ParenExpr( new ParenExpr( new ParenExpr( vie))))); assertEquals(5, new StandardVisitor() { private int numParens; @Override public void visitParenExpr(ParenExpr parenExpr) { super.visitParenExpr(parenExpr); numParens++; } int getNumParens(ParenExpr expr) { numParens = 0; visit(expr); return numParens; } }.getNumParens(nested) ); }