code: public int fill(ByteBuffer bb) throws IOException
      {
          return fill((dsts, offset, length)->ByteBuffers.move(bb, dsts, offset, length), fillSplitter);
      }
docs: Reads bytes from bb as much as there is room in this buffer starting from
  limit and not passing mark/position. Positions are updated in bb and also
  in this buffer.
  @param bb
  @return
  @throws IOException