def unpivot[CombinedK, InnerK, InnerV]()

in storehaus-algebra/src/main/scala/com/twitter/storehaus/algebra/EnrichedMergeableStore.scala [36:59]


  def unpivot[CombinedK, InnerK, InnerV](split: CombinedK => (K, InnerK))
    (implicit ev: V <:< Map[InnerK, InnerV], monoid: Semigroup[InnerV])
      : MergeableStore[CombinedK, InnerV] =
    MergeableStore.unpivot(store.asInstanceOf[MergeableStore[K, Map[InnerK, InnerV]]])(split)

  def withSummer(summerCons: SummerConstructor[K]): MergeableStore[K, V] =
    MergeableStore.withSummer(store)(summerCons)

  def composeKeyMapping[K1](fn: K1 => K): MergeableStore[K1, V] =
    MergeableStore.convert(store)(fn)

  def mapValues[V1](implicit bij: ImplicitBijection[V1, V]): MergeableStore[K, V1] =
    MergeableStore.convert(store)(identity[K])

  def convert[K1, V1](fn: K1 => K)(implicit bij: ImplicitBijection[V1, V]): MergeableStore[K1, V1] =
    MergeableStore.convert(store)(fn)

  def onMergeFailure(rescueException: Throwable => Unit): MergeableStore[K, V] =
    new MergeableStoreProxy[K, V] {
      override def self = store
      override def merge(kv: (K, V)) = store.merge(kv).onFailure(rescueException)
      override def multiMerge[K1 <: K](kvs: Map[K1, V]) =
        store.multiMerge(kvs).map { case (key, value) => (key, value.onFailure(rescueException)) }
    }