code: public int read(byte[] b, int off, int len) throws IOException {
  
      if (currentOffset >= dataLength) {
        return -1;
      }
      
      return doRead(b,off,len);
    }
docs: Read bytes from the stream.
  At EOF, checksum is validated, but the checksum
  bytes are not passed back in the buffer.