docs: public InputStream openStream(final ProgressMonitor pmon) {
      return new InputStream() {
        final long [] sz = new long[1];
        private int _cidx, _sz;
        private C1NChunk _c0;
        @Override public int available() throws IOException {
          if( _c0 == null || _sz >= _c0._len ) {
            sz[0] += _c0 != null?_c0._len:0;
            if(_cidx >= nChunks() )return 0;
            _c0 = chunkForChunkIdx(_cidx++);
            _sz = C1NChunk.OFF;
            if( pmon != null ) pmon.update(_c0._len);
          }
          return _c0._len-_sz;
        }
        @Override public void close() { _cidx = nChunks(); _c0 = null; _sz = 0;}
        @Override public int read() throws IOException {
          return available() == 0 ? -1 : 0xFF&_c0._mem[_sz++];
        }
        @Override public int read(byte[] b, int off, int len) throws IOException {
          int sz = available();
          if( sz == 0 )
            return -1;
          len = Math.min(len,sz);
          System.arraycopy(_c0._mem,_sz,b,off,len);
          _sz += len;
          return len;
        }
      };
    }