public long put(final K key, final V value, final long timestamp) {
        if (timestampedStore != null) {
            timestampedStore.put(key, ValueAndTimestamp.make(value, timestamp));
            return PUT_RETURN_CODE_IS_LATEST;
        }
        if (versionedStore != null) {
            return versionedStore.put(key, value, timestamp);
        }
        throw new IllegalStateException("KeyValueStoreWrapper must be initialized with either timestamped or versioned store");
    }
@Test
    public void shouldPutToTimestampedStore() {
        givenWrapperWithTimestampedStore();

        final long putReturnCode = wrapper.put(KEY, VALUE_AND_TIMESTAMP.value(), VALUE_AND_TIMESTAMP.timestamp());

        assertThat(putReturnCode, equalTo(PUT_RETURN_CODE_IS_LATEST));
        verify(timestampedStore).put(KEY, VALUE_AND_TIMESTAMP);
    }