docs: final public void Compare() throws ParseException {
      Concatenation();
      label_10:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case GT0:
        case GT1:
        case LT0:
        case LT1:
        case GE0:
        case GE1:
        case LE0:
        case LE1:
          ;
          break;
        default:
          jj_la1[18] = jj_gen;
          break label_10;
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case LT0:
        case LT1:
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case LT0:
            jj_consume_token(LT0);
            break;
          case LT1:
            jj_consume_token(LT1);
            break;
          default:
            jj_la1[19] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
                           AstLessThan jjtn001 = new AstLessThan(JJTLESSTHAN);
                           boolean jjtc001 = true;
                           jjtree.openNodeScope(jjtn001);
          try {
            Concatenation();
          } catch (Throwable jjte001) {
                           if (jjtc001) {
                             jjtree.clearNodeScope(jjtn001);
                             jjtc001 = false;
                           } else {
                             jjtree.popNode();
                           }
                           if (jjte001 instanceof RuntimeException) {
                             {if (true) throw (RuntimeException)jjte001;}
                           }
                           if (jjte001 instanceof ParseException) {
                             {if (true) throw (ParseException)jjte001;}
                           }
                           {if (true) throw (Error)jjte001;}
          } finally {
                           if (jjtc001) {
                             jjtree.closeNodeScope(jjtn001,  2);
                           }
          }
          break;
        case GT0:
        case GT1:
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case GT0:
            jj_consume_token(GT0);
            break;
          case GT1:
            jj_consume_token(GT1);
            break;
          default:
            jj_la1[20] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
                           AstGreaterThan jjtn002 = new AstGreaterThan(JJTGREATERTHAN);
                           boolean jjtc002 = true;
                           jjtree.openNodeScope(jjtn002);
          try {
            Concatenation();
          } catch (Throwable jjte002) {
                           if (jjtc002) {
                             jjtree.clearNodeScope(jjtn002);
                             jjtc002 = false;
                           } else {
                             jjtree.popNode();
                           }
                           if (jjte002 instanceof RuntimeException) {
                             {if (true) throw (RuntimeException)jjte002;}
                           }
                           if (jjte002 instanceof ParseException) {
                             {if (true) throw (ParseException)jjte002;}
                           }
                           {if (true) throw (Error)jjte002;}
          } finally {
                           if (jjtc002) {
                             jjtree.closeNodeScope(jjtn002,  2);
                           }
          }
          break;
        case LE0:
        case LE1:
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case LE0:
            jj_consume_token(LE0);
            break;
          case LE1:
            jj_consume_token(LE1);
            break;
          default:
            jj_la1[21] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
                           AstLessThanEqual jjtn003 = new AstLessThanEqual(JJTLESSTHANEQUAL);
                           boolean jjtc003 = true;
                           jjtree.openNodeScope(jjtn003);
          try {
            Concatenation();
          } catch (Throwable jjte003) {
                           if (jjtc003) {
                             jjtree.clearNodeScope(jjtn003);
                             jjtc003 = false;
                           } else {
                             jjtree.popNode();
                           }
                           if (jjte003 instanceof RuntimeException) {
                             {if (true) throw (RuntimeException)jjte003;}
                           }
                           if (jjte003 instanceof ParseException) {
                             {if (true) throw (ParseException)jjte003;}
                           }
                           {if (true) throw (Error)jjte003;}
          } finally {
                           if (jjtc003) {
                             jjtree.closeNodeScope(jjtn003,  2);
                           }
          }
          break;
        case GE0:
        case GE1:
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case GE0:
            jj_consume_token(GE0);
            break;
          case GE1:
            jj_consume_token(GE1);
            break;
          default:
            jj_la1[22] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
                           AstGreaterThanEqual jjtn004 = new AstGreaterThanEqual(JJTGREATERTHANEQUAL);
                           boolean jjtc004 = true;
                           jjtree.openNodeScope(jjtn004);
          try {
            Concatenation();
          } catch (Throwable jjte004) {
                           if (jjtc004) {
                             jjtree.clearNodeScope(jjtn004);
                             jjtc004 = false;
                           } else {
                             jjtree.popNode();
                           }
                           if (jjte004 instanceof RuntimeException) {
                             {if (true) throw (RuntimeException)jjte004;}
                           }
                           if (jjte004 instanceof ParseException) {
                             {if (true) throw (ParseException)jjte004;}
                           }
                           {if (true) throw (Error)jjte004;}
          } finally {
                           if (jjtc004) {
                             jjtree.closeNodeScope(jjtn004,  2);
                           }
          }
          break;
        default:
          jj_la1[23] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
    }