final public void process_declarative_item() throws ParseException {
    if (jj_2_52(2147483647)) {
      subprogram_declaration();
    } else {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case FUNCTION:
      case IMPURE:
      case PROCEDURE:
      case PURE:
        subprogram_body();
        break;
      case TYPE:
        type_declaration();
        break;
      case SUBTYPE:
        subtype_declaration();
        break;
      case CONSTANT:
        constant_declaration();
        break;
      case SHARED:
      case VARIABLE:
        variable_declaration();
        break;
      case FILE:
        file_declaration();
        break;
      case ALIAS:
        alias_declaration();
        break;
      default:
        jj_la1[151] = jj_gen;
        if (jj_2_53(2147483647)) {
          attribute_declaration();
        } else {
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case ATTRIBUTE:
            attribute_specification();
            break;
          case USE:
            use_clause();
            break;
          default:
            jj_la1[152] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
        }
      }
    }
  }