def METHOD_NAME(wrapped, args, kwargs):
    # take a snapshot of args and kwargs before they are modified by the
    # wrapped function
    try:
        result = wrapped(*args, **kwargs)
        # capture the return value
        mock, v = arg
        mock(v)
        return result
    except Exception:
        # capture the exception
        raise
    finally:
        # finalise and push the snapshot
        pass