def _wrap(method: Callable, wrapper: Callable) -> Callable:
        """
        Wraps the given callable method in the given wrapper, passing through the callable's arguments to the wrapper.
        :param method: the callable method to wrap
        :param wrapper: the wrapper to wrap callable with
        :return:
        """
        def wrapped(*args, **kwargs):
            return wrapper(method, *args, **kwargs)
        return wrapped