code: public FloatBuffer slice () {
        byteBuffer.limit(limit << 2);
        byteBuffer.position(position << 2);
        FloatBuffer result = new FloatBuffer(byteBuffer.slice());
        byteBuffer.clear();
        return result;
      }
docs: Returns a sliced buffer that shares its content with this buffer.
  <p> The sliced buffer's capacity will be this buffer's {@code remaining()}, and its zero
  position will correspond to this buffer's current position. The new buffer's position will
  be 0, limit will be its capacity, and its mark is cleared. The new buffer's read-only
  property and byte order are same as this buffer's. </p>
  <p> The new buffer shares its content with this buffer, which means either buffer's change
  of content will be visible to the other. The two buffer's position, limit and mark are
  independent. </p>
  
  @return a sliced buffer that shares its content with this buffer.