private JavaBytecodeGenerator compileWithIfElseOpt(String rule, String input) {
   JavaBytecodeGenerator jbcg = new JavaBytecodeGenerator();
   Object node = getAst(rule, input);
   jbcg.generateOptimizedIfElse(node);
   return jbcg;
 }
 private JavaBytecodeGenerator compile(String rule, String input) {
   JavaBytecodeGenerator jbcg = new JavaBytecodeGenerator();
   Object node = getAst(rule, input);
   jbcg.generate(node);
   return jbcg;
 }
 private JavaBytecodeGenerator compileWhileUnrolling(String rule, String input) {
   JavaBytecodeGenerator jbcg = new JavaBytecodeGenerator();
   Object node = getAst(rule, input);
   jbcg.generateOptimizedUnrolling(node);
   return jbcg;
 }