anchor.diff:  
   %% profile
   
  -handle_call({profile, _Rootset, _Pattern, _M,_F,_A}, _From, #state{ profiling = true } = S)->
  +handle_call({profile, _Rootset, _Pattern, _M,_F,_A}, _From, #state{ profiling = true } = S) ->
       {reply, {error, already_profiling}, S};
   
   handle_call({profile, Rootset, Pattern, M,F,A}, From, #state{fd = Fd } = S) ->
  
positive.code: 	    exit(Pid, kill),
  	    {reply, error, #state{ fd = Fd}}
      end;
  
  handle_call({profile, Rootset, Pattern}, From, #state{ fd = Fd } = S) ->
  
  
negative.code:     end, {0,0, Tree}, Data).
  
  %% manipulators
  sort_mfa(Bpfs, mfa) when is_list(Bpfs) ->
      lists:sort(fun
  	    ({A,_}, {B,_}) when A < B -> true;
  	    (_, _) -> false
  	end, Bpfs);
  sort_mfa(Bpfs, time) when is_list(Bpfs) ->
      lists:sort(fun
  	    ({_,{A,_}}, {_,{B,_}}) when A < B -> true;
  	    (_, _) -> false
  	end, Bpfs);
  sort_mfa(Bpfs, calls) when is_list(Bpfs) ->
      lists:sort(fun
  	    ({_,{_,A}}, {_,{_,B}}) when A < B -> true;
  	    (_, _) -> false
  	end, Bpfs);
  sort_mfa(Bpfs, _) when is_list(Bpfs) -> sort_mfa(Bpfs, calls).
  
  filter_mfa(Bpfs, Ts) when is_list(Ts) ->
      filter_mfa(Bpfs, [], proplists:get_value(calls, Ts, 0), proplists:get_value(time, Ts, 0));
  