docs: private ByteBuffer _read(long offset, long length, ByteBuffer buffer) throws IOException {
      if (offset + length > this.length) {
        throw new IllegalArgumentException("Piece#" + this.index +
                " overrun (" + offset + " + " + length + " > " +
                this.length + ") !");
      }
  
      // TODO: remove cast to int when large ByteBuffer support is
      // implemented in Java.
      int position = buffer.position();
      byte[] bytes = this.pieceStorage.readPiecePart(this.index, (int)offset, (int)length);
      buffer.put(bytes);
      buffer.rewind();
      buffer.limit(bytes.length + position);
      return buffer;
    }