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

    while (ch < 0) {
      if (readers.isEmpty()) {
        return true;
      }

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

    currentReader.pbReader.unread(ch);
    return false;
  }
public boolean atEOF()