@Override public Expression visit(Optional optional) { Optional result = new Optional(); if (optional.getExpr().getClass() == Choice.class) { String name = "opt" + Integer.toString(count); count++; Nonterminal nt = new Nonterminal(name); Expression exp = optional.getExpr().accept(this); newRules.put(nt, exp); result.setExpr(nt); } else { Expression exp = optional.getExpr().accept(this); result.setExpr(exp); } return result; }