code: public int readBytes(GatheringByteChannel out, int length)
              throws IOException
      {
          int readBytes = slice.getBytes(position, out, length);
          position += readBytes;
          return readBytes;
      }
docs: Transfers this buffer's data to the specified stream starting at the
  current {@code position}.
  
  @param length the maximum number of bytes to transfer
  @return the actual number of bytes written out to the specified channel
  @throws IndexOutOfBoundsException if {@code length} is greater than {@code this.available()}
  @throws java.io.IOException if the specified channel threw an exception during I/O