final public DefValPart DefValPart(Recovery next) throws ParseException {
    NodeOptional value = new NodeOptional();
    Token defval_t;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case DEFVAL_T:
      defval_t = jj_consume_token(DEFVAL_T);
            next.push(RIGHT_BRACE_T);
            next.push(DEC_NUMBER_T);
            next.push(VALUE_IDENTIFIER_T);
            next.push(TEXT_T);
      LBraceSymbol(next);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case BIN_NUMBER_T:
      case HEX_NUMBER_T:
      case DEC_NUMBER_T:
                NumericValue number;
        number = NumericValue();
                value.addNode(number);
        break;
      case CURRENT_T:
      case DEPRECATED_T:
      case OBSOLETE_T:
      case MANDATORY_T:
      case NOT_IMPLEMENTED_T:
      case VALUE_IDENTIFIER_T:
      case TYPE_IDENTIFIER_T:
                Identifier identifier;
        identifier = ValueIdentifier();
                value.addNode(identifier);
        break;
      case TEXT_T:
                Token text_t;
        text_t = jj_consume_token(TEXT_T);
                value.addNode(makeNodeToken(text_t));
        break;
      default:
        jj_la1[64] = jj_gen;
        if (jj_2_11(2)) {
                NodeList list;
          list = BitValueList(next);
                value.addNode(new BitValueList(list));
        } else if (jj_2_12(2)) {
                AssignedValue oidValue;
          oidValue = AssignedValue();
                value.addNode(oidValue);
        } else {
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
            next.pop(4); /* TEXT_T, VALUE_IDENTIFIER_T, DEC_NUMBER_T, RIGHT_BRACE_T */

      RBraceSymbol(next);
      break;
    default:
      jj_la1[65] = jj_gen;
      ;
    }
        {if (true) return new DefValPart(value);}
    throw new Error("Missing return statement in function");
  }