ProxyKeyValueStore(store: KeyValueStore<E, R>, unproxyKey: (E) -> K, proxyKey: (K) -> E, unproxyValue: (R) -> V, proxyValue: (K, V) -> R, coroutineContext: CoroutineContext = store.coroutineContext)
A store used as a proxy for another store.
For example, we may want to store rich objects and transform them to a lower-level form, or reuse the same store across multiple usages.