@staticmethod
def _wrap_method(wrapper_infodict, cls):
    """Return a wrapped version of func.

        :param wrapper_infodict: The infodict to be used for constructing the
            wrapper.
        :param cls: Class to which the wrapper method will be added, this is
            used for the super call.
        """
    src = (
        'lambda %(signature)s: super(_wrapper_class_, _wrapper_class_).%(name)s(%(signature)s)'
         % wrapper_infodict)
    wrapped_func = eval(src, {'_wrapper_class_': cls})
    wrapped_func.__name__ = wrapper_infodict['name']
    wrapped_func.__doc__ = wrapper_infodict['doc']
    wrapped_func.__module__ = wrapper_infodict['module']
    wrapped_func.__dict__.update(wrapper_infodict['dict'])
    wrapped_func.__defaults__ = wrapper_infodict['defaults']
    return wrapped_func
