### Question:
OffHeapByteBufferStore implements OffHeapStore { public Pointer store(byte[] payload, long expiry) { while (true) { try { return currentBuffer().store(payload, expiry); } catch (BufferOverflowException exception) { try { return currentBuffer().store(payload, expiry); } catch (BufferOverflowException overflowException) { nextBuffer(); return store(payload, expiry); } } } } OffHeapByteBufferStore(int capacity, int bufferSize);  OffHeapByteBufferStore(int capacity, int bufferSize, int concurrencyLevel); byte[] retrieve(Pointer pointer); byte[] remove(Pointer pointer); Pointer store(byte[] payload, long expiry); Pointer update(final Pointer pointer, final byte[] payload, final long expiry); long dirtyMemory(); long usedMemory(); long freeMemory(); void free(); void free(int bufferIndex);  }### Answer:
@Test public void store() { int size = 100; final long expiry = System.currentTimeMillis(); byte[] expectedBytes = new byte[size]; random.nextBytes(expectedBytes); Pointer pointer = bufferStore.store(expectedBytes, expiry); byte[] actualBytes = bufferStore.retrieve(pointer); assertArrayEquals(expectedBytes, actualBytes); }