code: public FloatBuffer duplicate () {
        FloatBuffer buf = new FloatBuffer(byteBuffer.duplicate());
        buf.limit = limit;
        buf.position = position;
        buf.mark = mark;
        return buf;
      }
docs: Returns a duplicated buffer that shares its content with this buffer.
  <p> The duplicated buffer's position, limit, capacity and mark are the same as this buffer.
  The duplicated buffer's read-only property and byte order are same as this buffer too. </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 duplicated buffer that shares its content with this buffer.