code: final KeyValue<ByteBuffer, ByteBuffer> getKeyValueFromPointer(int index) {
      int origionalLimit = memoryBuffer.limit();
      memoryBuffer.limit(memoryBuffer.capacity());
      int pointerOffset = computePointerOffset(index);
      int keyPos =  memoryBuffer.getInt(pointerOffset);
      int valuePos =  memoryBuffer.getInt(pointerOffset + 4);
      int valueLength = memoryBuffer.getInt(pointerOffset + 8);
      memoryBuffer.limit(origionalLimit);
      assert valuePos >= keyPos;
      ByteBuffer key = sliceOutRange(keyPos, valuePos);
      ByteBuffer value = sliceOutRange(valuePos, valuePos + valueLength);
      return new KeyValue<>(key, value);
    }
docs: Get a key and its value given the index of its pointer.