final public void name_extension() throws ParseException {
    if (jj_2_35(2147483647)) {
      signature();
      jj_consume_token(157);
      identifier();
      if (jj_2_33(2147483647)) {
        jj_consume_token(152);
        expression();
        jj_consume_token(153);
      } else {
        ;
      }
    } else if (jj_2_36(2147483647)) {
      signature();
      jj_consume_token(157);
      jj_consume_token(RANGE);
      if (jj_2_34(2147483647)) {
        jj_consume_token(152);
        expression();
        jj_consume_token(153);
      } else {
        ;
      }
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 158:
        jj_consume_token(158);
        suffix();
        break;
      default:
        jj_la1[122] = jj_gen;
        if (jj_2_37(2147483647)) {
          jj_consume_token(152);
          range();
          jj_consume_token(153);
        } else if (jj_2_38(2147483647)) {
          jj_consume_token(152);
          expression();
          label_31:
          while (true) {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case 150:
              ;
              break;
            default:
              jj_la1[121] = jj_gen;
              break label_31;
            }
            jj_consume_token(150);
            expression();
          }
          jj_consume_token(153);
        } else {
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
    }
    if (jj_2_39(2147483647)) {
      name_extension();
    } else {
      ;
    }
  }