code: final ByteBuffer copyPointer(int index) {
      ByteBuffer pointer = readPointer(index);
      // Making a copy for so that someone can modify the underlying impl
      ByteBuffer result = ByteBuffer.allocate(pointer.capacity());
      result.put(pointer);
      result.flip();
      return result;
    }
docs: Get a Copy of a pointer