anchor.diff:      erlang:trace_pattern(on_load, MatchSpec, [local]),
       erlang:trace_pattern({'_', '_', '_'}, MatchSpec, [local]),
       erlang:trace(self(), true, [{tracer, Tracer} | trace_flags(normal_with_children)]),
  -    erlang:apply(M, F, A),
  +    Return = (catch erlang:apply(M, F, A)),
       erlang:trace(self(), false, [all]),
   
       Tracer ! {dump, self()},
  
positive.code: trace_proc_stream({trace_ts, _Ps, return_to, _, _Ts}, State) ->
      State;
  
  trace_proc_stream({trace_ts, _Ps, in, _MFA, Ts}, #dump{stack=Stack} = State) ->
      new_state(State, Stack, Ts);
  
  trace_proc_stream({trace_ts, _Ps, out, _MFA, Ts}, #dump{stack=Stack} = State) ->
      new_state(State, Stack, Ts);
  
  trace_proc_stream(TraceTs, State) ->
      io:format("trace_proc_stream: unknown trace: ~p~n", [TraceTs]),
      State.
  
  stack_collapse(Stack) ->
      intercalate(";", [[atom_to_binary(M, utf8), <<":">>, atom_to_binary(F, utf8), <<"/">>, integer_to_list(A)] || {M, F, A} <- Stack]).
  
  dump_to_iolist(Pid, #dump{acc=Acc}) ->
      [[pid_to_list(Pid), <<";">>, stack_collapse(S), <<"\n">>] || S <- lists:reverse(Acc)].
  
negative.code: 
      Bytes = iolist_to_binary([dump_to_iolist(Pid, Dump) || {Pid, [Dump]} <- PS]),
      ok = file:write_file(OutputFile, Bytes),
      Return.
  
  trace_flags(normal) ->
      [call, arity, return_to, timestamp, running];
  