code: @Override
    public int read(long pos, byte []buf, int offset, int length)
    {
      if (pos < 0) {
        throw new IllegalArgumentException();
      }
      
      if (_length <= pos) {
        return -1;
      }
      
      int bufOffset = (int) (_offset + pos);
      int sublen = (int) Math.min(length, _length - pos);
      
      System.arraycopy(_pageBuffer, bufOffset, buf, offset, sublen);
      
      return sublen;
    }
docs: Reads a buffer.