code: @Override
      public int read(long offset, ByteBuffer destBuffer) throws IOException {
          offset += contentStart;
          destBuffer.clear();
          int length = destBuffer.capacity();
          if (offset > filledUpTo) {
              String errorMessage = "Tried to read data beginning at " + offset + " in File (max=" + filledUpTo + ") "
                      + osFile.getName();
              logger.debug(errorMessage);
              throw new IOException(errorMessage);
          } else if (offset + length > filledUpTo) {
              logger.debug("Tried to read data over {} in File " + osFile.getName() + ". Limit will be set to {}",
                      filledUpTo, destBuffer.limit());
              destBuffer.limit((int) (filledUpTo - offset));
          }
          offset = checkRegions(offset, destBuffer.limit());
          int readBytes = channel.read(destBuffer, offset);
          return readBytes;
      }
docs: Reads x bytes from the file to the given ByteBuffer (position was set to zero), where x is the minimum of the
  capacity of the buffer and the remaining written bytes in the file. The size of the HEADER will be respected
  automatically. The position is set to the number of read bytes.
  
  @param offset
  the file offset, where to start reading
  @param destBuffer
  the buffer to fill
  @throws IOException