anchor.diff:  -spec all_till_ok(HookName::hookname(), Args::list())
   -> ok | {ok, any()} | {error, term()}.
   all_till_ok(HookName, Args) ->
  -    case hooks_list:find(HookName) of
  -        {ok, Hooks} -> all_till_ok1(Hooks, Args, []);
  -        _ -> []
  +    case ?find_hook(HookName) of
  +        no_hook -> [];
  +        Hooks -> all_till_ok1(Hooks, Args, [])
       end.
   
   all_till_ok1([{Module, Fun} | Rest], Args, ErrAcc) ->
  
positive.code:     ok = hooks:reg(a, ?MODULE, hook_add2, 1, 0),
  
      ?assertEqual({ok, [{?MODULE, hook_add2}, {?MODULE, hook_add}]},
                   hooks_list:find(a)),
  
      ?assertEqual(3, hooks:only(a, [1])),
  
      ok = hooks:unreg(a, ?MODULE, hook_add, 1, 10),
      ok = hooks:unreg(a, ?MODULE, hook_add2, 1, 0),
      ?assertEqual(hook_not_found, hooks_list:find(a)),
      ok.
  
  plugin_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
  