'Call the hook with some additional temporarily participating
methods using the specified kwargs as call parameters.'

def call_extra(self, methods, kwargs):

    old = (list(self._nonwrappers), list(self._wrappers))
    for method in methods:
        opts = dict(hookwrapper=False, trylast=False, tryfirst=False)
        hookimpl = HookImpl(None, '<temp>', method, opts)
        self._add_hookimpl(hookimpl)
    try:
        return self(**kwargs)
    finally:
        (self._nonwrappers, self._wrappers) = old
