public static KeyValueIterator<Windowed<GenericKey>, GenericRow> fetch(
      final ReadOnlySessionStore<GenericKey, GenericRow> store,
      final GenericKey key
  ) {
    Objects.requireNonNull(key, "key can't be null");
    final List<ReadOnlySessionStore<GenericKey, GenericRow>> stores = getStores(store);
    final Function<ReadOnlySessionStore<GenericKey, GenericRow>,
            KeyValueIterator<Windowed<GenericKey>, GenericRow>> fetchFunc
            = sessionStore -> fetchUncached(sessionStore, key);
    return findFirstNonEmptyIterator(stores, fetchFunc);
  }
@Test
  public void shouldCallUnderlyingStoreSingleKey() throws IllegalAccessException {
    when(provider.stores(any(), any())).thenReturn(ImmutableList.of(meteredSessionStore));
    SERDES_FIELD.set(meteredSessionStore, serdes);
    when(serdes.rawKey(any())).thenReturn(BYTES);
    when(meteredSessionStore.wrapped()).thenReturn(wrappedSessionStore);
    when(wrappedSessionStore.wrapped()).thenReturn(sessionStore);
    when(sessionStore.fetch(any())).thenReturn(storeIterator);
    when(storeIterator.hasNext()).thenReturn(false);

    SessionStoreCacheBypass.fetch(store, SOME_KEY);
    verify(sessionStore).fetch(new Bytes(BYTES));
  }