'Return a new _HookCaller instance for the named method
which manages calls to all registered plugins except the
ones from remove_plugins.'

def subset_hook_caller(self, name, remove_plugins):

    orig = getattr(self.hook, name)
    plugins_to_remove = [plug for plug in remove_plugins if hasattr(plug, name)]
    if plugins_to_remove:
        hc = _HookCaller(orig.name, orig._hookexec, orig._specmodule_or_class, orig.spec_opts)
        for hookimpl in (orig._wrappers + orig._nonwrappers):
            plugin = hookimpl.plugin
            if (plugin not in plugins_to_remove):
                hc._add_hookimpl(hookimpl)
                self._plugin2hookcallers.setdefault(plugin, []).append(hc)
        return hc
    return orig
