anchor.diff:                           Source::pidinfo(), Dest::pidinfo(), comm:message()}.
   -type trace_event()  :: send_event() | info_event() | recv_event().
   -type trace()        :: [trace_event()].
  --type passed_state() :: {trace_id(), logger()}.
  +-type msg_map_fun()  :: fun((comm:message()) -> comm:message()).
  +-type passed_state() :: {trace_id(), logger(), msg_map_fun()}.
   -type gc_mpath_msg() :: {'$gen_component', trace_mpath, passed_state(),
                            Source::pidinfo(), Dest::pidinfo(), comm:message()}.
   
  
positive.code: start() -> start(default).
  
  -spec start(trace_id() | passed_state()) -> ok.
  start(TraceName) when is_atom(TraceName) ->
      LoggerPid = pid_groups:find_a(trace_mpath),
      start(TraceName, comm:make_global(LoggerPid));
  start(PState) when is_tuple(PState) ->
      start(passed_state_trace_id(PState), passed_state_logger(PState)).
  
  -spec start(trace_id(), logger() | comm:mypid()) -> ok.
  start(TraceId, Logger) ->
      case comm:is_valid(Logger) of
          true -> %% just a pid was given
              PState = passed_state_new(TraceId, {log_collector, Logger}),
              own_passed_state_put(PState);
          false ->
              PState = passed_state_new(TraceId, Logger),
              own_passed_state_put(PState)
      end,
      ok.
  
  -spec stop() -> ok.
  stop() ->
  
negative.code:     From = normalize_pidinfo(FromPid),
      To = normalize_pidinfo(ToPid),
      Now = os:timestamp(),
      MsgMapFun = passed_state_msg_map_fun(PState),
      case passed_state_logger(PState) of
          io_format ->
              io:format("~p send ~.0p -> ~.0p:~n  ~.0p.~n",
                        [util:readable_utc_time(Now), From, To, MsgMapFun(Msg)]);
          {log_collector, LoggerPid} ->
              TraceId = passed_state_trace_id(PState),
              send_log_msg(LoggerPid, {log_send, Now, TraceId, From, To, MsgMapFun(Msg)})
      end,
      epidemic_reply_msg(PState, From, To, Msg).
  
  -spec log_info(passed_state(), anypid(), term()) -> ok.
  log_info(PState, FromPid, Info) ->
      From = normalize_pidinfo(FromPid),
      Now = os:timestamp(),    
      case passed_state_logger(PState) of
          io_format ->
              io:format("~p info ~.0p:~n  ~.0p.~n",
  