anchor.diff:  
   handle_cast({add_hook, Pid, Hook, Mod, Func, Info, Nodes}, State) ->
   	Monref = erlang:monitor(process, Pid),
  -	Rec = #hook{pid = Pid, hook = Hook, mod = Mod, func = Func, info = Info,
  +	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};
  
positive.code: 	trigger_hooks(Hook, Args, first).
  
  trigger_hooks(Hook, Args, Mode) ->
  	Node = node(),
  	QH = qlc:q([HookRec ||
  		#hook{hook = AHook, nodes = ANodes} = HookRec <- ets:table(?MODULE),
  		AHook == Hook, (ANodes == global orelse lists:member(Node, ANodes))]),
  	Hooks = qlc:e(QH),
  	Acc = case Mode of
  
negative.code: -include("log.hrl").
  -include_lib("stdlib/include/qlc.hrl").
  
  -record(hook_key, {pid, hook}).
  -record(hook, {
  	key :: #hook_key{}, mod, func, info, nodes, mon
  }).
  
  % public api
  