code: @Override
    public int available() throws IOException {
      int rawAvailable = in.available();
  
      return (int)(rawOffsetToDataOffset(rawBlockOffset + rawAvailable)
          - rawOffsetToDataOffset(rawBlockOffset));
    }
docs: Returns the amount of data bytes available to read.
  This function depends on the underlying InputStream to tell
  the actual available bytes for reading in available().