anchor.diff:  check_plugins([{plugins, Plugins}], Acc) ->
       check_plugins(Plugins, Acc);
   check_plugins([{module, {Name, Module, Fun, Arity}}|Rest], Acc) ->
  -    case lists:member(Module, erlang:loaded()) of
  -        true ->
  -            check_plugins(Rest, [{module_plugin, [{Name, Module, Fun, Arity}]}
  -                                 | Acc]);
  -        false ->
  -            {error, {not_loaded, Module}}
  +    case catch apply(Module, module_info, [exports]) of
  +        {'EXIT', _} ->
  +            {error, unknown_module};
  +        Exports ->
  +            case lists:member({Fun, Arity}, Exports) of
  +                true ->
  +                    check_plugins(Rest,
  +                                  [{module_plugin,
  +                                    [{Name, Module, Fun, Arity}]} | Acc]);
  +                false ->
  +                    {error, no_matching_fun_in_module}
  +            end
       end;
   check_plugins([{application, App, AppPath}|Rest], Acc) ->
       case check_plugin(App, AppPath) of
  
positive.code:          other_sample_hook_c/1,
           other_sample_hook_d/1,
           other_sample_hook_e/1,
           other_sample_hook_f/1
          ]).
  -endif.
  
  
negative.code:     application:set_env(vmq_plugin, vmq_plugin_hooks, Hooks),
      %% we have to step out .eunit
      application:set_env(vmq_plugin, plugin_dir, ".."),
      ok = application:start(vmq_plugin),
      %% no plugin is yet registered
      call_no_hooks(),
  
  