def METHOD_NAME(f: Callable) -> Callable:
    @wraps(f)
    def wrapper(wrappingobj: CacheableMixIn, *args: Any, **kwargs: Any) -> Any:
        cache_miss, cache_key, now, kwargs = _cache_response_timewise_base(
            wrappingobj,
            f,
            arguments_matter,
            forward_ignore_cache,
            *args,
            **kwargs,
        )
        if cache_miss:
            # Call the function, write the result in cache and return it
            result = f(wrappingobj, *args, **kwargs)
            wrappingobj.results_cache[cache_key] = ResultCache(result, now)
            return result
        # else hit the cache and return it
        return wrappingobj.results_cache[cache_key].result
    return wrapper