code: @Private
    void ringRead(int position, byte[] buffer, int offset, int count) throws IOException {
      position = wrapPosition(position);
      if (position + count <= fileLength) {
        raf.seek(position);
        raf.readFully(buffer, offset, count);
      } else {
        // The read overlaps the EOF.
        // # of bytes to read before the EOF.
        int beforeEof = fileLength - position;
        raf.seek(position);
        raf.readFully(buffer, offset, beforeEof);
        raf.seek(HEADER_LENGTH);
        raf.readFully(buffer, offset + beforeEof, count - beforeEof);
      }
    }
docs: Reads count bytes into buffer from file. Wraps if necessary.
  
  @param position in file to read from
  @param buffer to read into
  @param count # of bytes to read