private ImapList parseList(ImapList parent, char start, char end) throws IOException {
    expect(start);

    ImapList list = new ImapList();
    parent.add(list);

    String endString = String.valueOf(end);

    Object token;
    while (true) {
      token = parseToken(list);
      if (token == null) {
        return null;
      } else if (token.equals(endString)) {
        break;
      } else if (!(token instanceof ImapList)) {
        list.add(token);
      }
    }

    return list;
  }
 private void parseElements(ImapList list, char end) throws IOException, MessagingException {
   for (; ; ) {
     for (; ; ) {
       final int next = peek();
       if (next == end) {
         return;
       }
       if (next != ' ') {
         break;
       }
       // Skip space
       readByte();
     }
     final ImapElement el = parseElement();
     if (el == null) { // EOL
       return;
     }
     list.add(el);
   }
 }