final public NodeList RevisionPart(Recovery next) throws ParseException {
    NodeList revisions = new NodeList();
    Token revision_t;
    Token time_t;
    NodeToken time;
    DescriptionPart description;
    next.push(REVISION_T);
    label_5:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case REVISION_T:
        ;
        break;
      default:
        jj_la1[20] = jj_gen;
        break label_5;
      }
      revision_t = jj_consume_token(REVISION_T);
            next.push(DESCRIPTION_T);
      try {
        time_t = jj_consume_token(UTC_TIME_T);
      } catch (ParseException e) {
            handleError(e, next, "<utc time>");
            time_t = new Token();
      } finally {
            next.pop(); /* DESCRIPTION_T */

      }
      description = DescriptionPart(next);
            revisions.addNode(new Revision(
                        makeNodeToken(time_t), description));
    }
      revisions.nodes.trimToSize();
      {if (true) return revisions;}
    throw new Error("Missing return statement in function");
  }