def METHOD_NAME(
        wrappingobj: CacheableMixIn,
        f: Callable,
        arguments_matter: bool,
        forward_ignore_cache: bool,
        *args: Any,
        **kwargs: Any,
) -> tuple[bool, int, 'Timestamp', dict]:
    """Base code used in the 2 cache_response_timewise decorators"""
    if forward_ignore_cache:
        ignore_cache = kwargs.get('ignore_cache', False)
    else:
        ignore_cache = kwargs.pop('ignore_cache', False)
    cache_key = function_sig_key(
        f.__name__,        # name
        arguments_matter,  # arguments_matter
        True,              # skip_ignore_cache
        *args,
        **kwargs,
    )
    now = ts_now()
    if ignore_cache is False and cache_key in wrappingobj.results_cache:
        # Check the cache
        cache_life_secs = now - wrappingobj.results_cache[cache_key].timestamp
    cache_miss = (
        ignore_cache is True or
        cache_key not in wrappingobj.results_cache or
        cache_life_secs >= wrappingobj.cache_ttl_secs
    )
    return cache_miss, cache_key, now, kwargs