final public StatusPart StatusPart(Recovery next) throws ParseException {
    Token key;
    Token value;
    NodeToken status;
    try {
      key = jj_consume_token(STATUS_T);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case CURRENT_T:
        value = jj_consume_token(CURRENT_T);
        break;
      case DEPRECATED_T:
        value = jj_consume_token(DEPRECATED_T);
        break;
      case OBSOLETE_T:
        value = jj_consume_token(OBSOLETE_T);
        break;
      case MANDATORY_T:
        value = jj_consume_token(MANDATORY_T);
        break;
      default:
        jj_la1[21] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
          status = makeNodeToken(value);
    } catch (ParseException e) {
        if (e.currentToken.kind == STATUS_T) {
            handleError(e, next, "<status value>");
            status = makeNodeToken(-1);
        } else if ((e.currentToken.next.kind == CURRENT_T) ||
                   (e.currentToken.next.kind == DEPRECATED_T) ||
                   (e.currentToken.next.kind == CURRENT_T) ||
                   (e.currentToken.next.kind == CURRENT_T)) {
            Token tok = getNextToken();
            Message.error(tok.beginLine, "missing 'STATUS'-keyword");
            status = makeNodeToken(tok);
        } else {
            Message.error(getToken(1).beginLine, "STATUS-clause missing");
            status = makeNodeToken(-1);
            recovery(next);
        }
    }
      {if (true) return new StatusPart(status);}
    throw new Error("Missing return statement in function");
  }