anchor.diff:  -include("log.hrl").
   -include_lib("stdlib/include/qlc.hrl").
   
  --record(hook_key, {pid, hook}).
  +-record(hook_key, {pid, hook, mod}).
   -record(hook, {
  -	key :: #hook_key{}, mod, func, info, nodes, mon
  +	key :: #hook_key{}, func, info, nodes, mon
   }).
   
   % public api
  
positive.code: 	{error, not_handled};
  
  run_hooks([HookRec | Tail], Args, Acc) ->
  	#hook{mod = Mod, func = Func, info = Info} = HookRec,
  	try erlang:apply(Mod, Func, [Info | Args]) of
  		{ok, Val} when Acc == first ->
  			{ok, Val};
  
negative.code: 
  handle_cast({add_hook, Pid, Hook, Mod, Func, Info, Nodes}, State) ->
  	Monref = erlang:monitor(process, Pid),
  	Rec = #hook{key = #hook_key{pid = Pid, hook = Hook, mod = Mod}, func = Func, info = Info,
  		nodes = Nodes, mon = Monref},
  	ets:insert(?MODULE, [Rec]),
  	{noreply, State};
  