withFiniteCache :: Monad m
                => Int
                -> (Cache (StateT Int m) k v -> StateT Int m a)
                -> (Cache m k v -> m a)
withFiniteCache n body c = evalStateT (body $ finiteCache n c) 0
withFiniteCache :: Monad m
                => Int
                -> (Cache (StateT Int m) k v -> StateT Int m a)
                -> (Cache m k v -> m a)
withFiniteCache n body c = evalStateT (body $ finiteCache n c) 0
withFiniteCache n body c = evalStateT (body $ finiteCache n c) 0