docs: final public void Math() throws ParseException {
      Multiplication();
      label_12:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case PLUS:
        case MINUS:
          ;
          break;
        default:
          jj_la1[25] = jj_gen;
          break label_12;
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case PLUS:
          jj_consume_token(PLUS);
                    AstPlus jjtn001 = new AstPlus(JJTPLUS);
                    boolean jjtc001 = true;
                    jjtree.openNodeScope(jjtn001);
          try {
            Multiplication();
          } 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 MINUS:
          jj_consume_token(MINUS);
                     AstMinus jjtn002 = new AstMinus(JJTMINUS);
                     boolean jjtc002 = true;
                     jjtree.openNodeScope(jjtn002);
          try {
            Multiplication();
          } 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;
        default:
          jj_la1[26] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
    }