public char read() throws IOException {
    int ch = currentReader.pbReader.read();

    while (ch < 0) {
      if (readers.isEmpty()) {
        throw new IOException("Unexpected EOF");
      }

      currentReader.pbReader.close();
      currentReader = readers.pop();
      ch = currentReader.pbReader.read();
    }

    return (char)ch;
  }
public char read()