anchor.diff:  %% @doc execute all hooks for this HookName and return all results
   -spec all(HookName::hookname(), Args::list()) -> [any()].
   all(HookName, Args) ->
  -    case hooks_list:find(HookName) of
  -        {ok, Hooks} -> all1(Hooks, Args, []);
  -        _ -> []
  +    case ?find_hook(HookName) of
  +        no_hook -> [];
  +        Hooks -> all1(Hooks, Args, [])
       end.
   
   all1([{Module, Fun} | Rest], Args, Acc) ->
  
positive.code:              {b, [{?MODULE, hook1, 2},
                    {?MODULE, hook2, 2}]}],
      ?assertEqual(ok, hooks:mreg(Hooks)),
      FoundA = hooks_list:find(a),
      ?assertEqual({ok, [{?MODULE, hook1}, {?MODULE, hook2}]}, FoundA),
      FoundB = hooks_list:find(b),
      ?assertEqual({ok, [{?MODULE, hook1}, {?MODULE, hook2}]}, FoundB),
      ?assertEqual(ok, hooks:munreg(Hooks)),
      ?assertEqual(hook_not_found, hooks_list:find(a)),
      ?assertEqual(hook_not_found, hooks_list:find(b)),
      ok.
  
  run_test() ->
  
negative.code: 
  
  %% @doc call the top priority hook for the HookName
  -spec only(HookName::hookname(), Args::list()) -> any() | no_hook.
  only(HookName, Args) ->
      case ?find_hook(HookName) of
          no_hook -> no_hook;
          [{Module, Fun} |_] -> apply(Module, Fun, Args)
      end.
  
  
  %% @doc retrieve the lists of registered functions for an hook.
  -spec find(HookName::hookname()) -> {ok, [{atom(), atom()}]} | error.
  find(HookName) ->
      case ?find_hook(HookName) of
          no_hook -> error;
          Hooks -> {ok, Hooks}
      end.
  
  %% @hidden
  