class CachingSessionStore extends WrappedStateStore<SessionStore<Bytes, byte[]>, byte[], byte[]> implements SessionStore<Bytes, byte[]>, CachedStateStore<byte[], byte[]> {

    @Override
    public void put(final Windowed<Bytes> key, final byte[] value) {
        validateStoreOpen();
        final Bytes binaryKey = SessionKeySchema.toBinary(key);
        final LRUCacheEntry entry =
            new LRUCacheEntry(
                value,
                context.headers(),
                true,
                context.offset(),
                context.timestamp(),
                context.partition(),
                context.topic());
        context.cache().put(cacheName, cacheFunction.cacheKey(binaryKey), entry);

        maxObservedTimestamp = Math.max(keySchema.segmentTimestamp(binaryKey), maxObservedTimestamp);
    }

      CachingSessionStore(final SessionStore<Bytes, byte[]> bytesStore,
                        final long segmentInterval);

}