class_docstr: Core :py:class:`.PluginManager` class which manages registration
  of plugin objects and 1:N hook calling.
  
  You can register new hooks by calling :py:meth:`add_hookspecs(module_or_class)
  <.PluginManager.add_hookspecs>`.
  You can register plugin objects (which contain hooks) by calling
  :py:meth:`register(plugin) <.PluginManager.register>`.  The :py:class:`.PluginManager`
  is initialized with a prefix that is searched for in the names of the dict
  of registered plugin objects.
  
  For debugging purposes you can call :py:meth:`.PluginManager.enable_tracing`
  which will subsequently send debug information to the trace helper.
code: def _verify_hook(self, hook, hookimpl):
      if hook.is_historic() and hookimpl.hookwrapper:
          raise PluginValidationError(
              hookimpl.plugin,
              "Plugin %r\nhook %r\nhistoric incompatible to hookwrapper"
              % (hookimpl.plugin_name, hook.name),
          )
      if hook.spec.warn_on_impl:
          _warn_for_function(hook.spec.warn_on_impl, hookimpl.function)
      # positional arg checking
      notinspec = set(hookimpl.argnames) - set(hook.spec.argnames)
      if notinspec:
          raise PluginValidationError(
              hookimpl.plugin,
              "Plugin %r for hook %r\nhookimpl definition: %s\n"
              "Argument(s) %s are declared in the hookimpl but "
              "can not be found in the hookspec"
              % (
                  hookimpl.plugin_name,
                  hook.name,
                  _formatdef(hookimpl.function),
                  notinspec,
              ),
          )
  
imports: import inspect
  import sys
  from .None import _tracing
  from .callers import _Result
  from .hooks import HookImpl, _HookRelay, _HookCaller, normalize_hookimpl_opts
  import warnings
label_desc: Use image node_id 16 for calling the PluginManager obj's underlying member method code with example usage: obj._verify_hook(hook, hookimpl) without return types