final public ValueType ValueType(Recovery next) throws ParseException {
    Identifier identifier;
    Type type;
    Identifier type_exception;
    try {
      identifier = ValueIdentifier();
    } catch (ParseException e) {
        handleError(e, next, "<value identifier>");
        {if (true) return null;}
    }
    try {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case OBJECT_IDENTIFIER_T:
      case INTEGER_T:
      case BITS_T:
      case BIT_STRING_T:
      case OCTET_STRING_T:
      case SEQUENCE_OF_T:
      case COUNTER32_T:
      case COUNTER_T:
      case GAUGE32_T:
      case GAUGE_T:
      case TIMETICKS_T:
      case OPAQUE_T:
      case IP_ADDRESS_T:
      case NETWORK_ADDRESS_T:
      case NSAP_ADDRESS_T:
      case COUNTER64_T:
      case UNSIGNED32_T:
      case UINTEGER32_T:
      case INTEGER32_T:
      case TYPE_IDENTIFIER_T:
        type = Types();
        break;
      case INDEX_SYNTAX_T:
      case APPLICATION_SYNTAX_T:
      case OBJECT_SYNTAX_T:
      case SIMPLE_SYNTAX_T:
        type_exception = TypeIdentifierException();
              type = new TypeIdentifier(type_exception);
        break;
      default:
        jj_la1[70] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    } catch (ParseException e) {
        handleError(e, next, "<type>");
        {if (true) return null;}
    }
      {if (true) return new ValueType(identifier, type);}
    throw new Error("Missing return statement in function");
  }