changed interface of Cache.S.with_cache_rec