anchor.diff:             , "buffered     (no)          buffer messages till end of trace"
              , "print_form   (\"~s~n\")      print msgs using this format"
              , "print_file   (standard_io) print to this file"
  +           , "print_p      (999999)      formatting depth for \"~P\""
              , "print_re     (\"\")          print only strings that match this"
              , "  trc file related opts"
              , "file         (none)        use a trc file based on this name"
  
positive.code: slist(X) -> [X].
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  printi(PrintFun) ->
    receive 
      {trace_consumer,TC} -> 
        erlang:monitor(process,TC),
        printl(PrintFun)
    end.
  
  printl(PrintFun) ->
    receive
      {'DOWN',_,_,_,R} -> io:fwrite("quitting: ~p~n",[R]);
      X                -> outer(PrintFun,X), printl(PrintFun)
    end.
  
  outer(_,[]) -> ok;
  outer(PrintFun,[Msg|Msgs]) ->
    case Msg of
      {'call',{MFA,Bin},PI,TS} ->
        PrintFun(flat("~n~s <~p> ~p",[ts(TS),PI,MFA])),
        foreach(fun(L)->PrintFun(flat("  ~s",[L])) end, stak(Bin));
      {'retn',{MFA,Val},PI,TS} -> 
        PrintFun(flat("~n~s <~p> ~p -> ~p",[ts(TS),PI,MFA,Val]));
      {'send',{MSG,To},PI,TS} -> 
        PrintFun(flat("~n~s <~p> <~p> <<< ~p",[ts(TS),PI,To,MSG]));
      {'recv',MSG,PI,TS} -> 
        PrintFun(flat("~n~s <~p> <<< ~p",[ts(TS),PI,MSG]));
      _ ->
        PrintFun(flat("~n~p", [Msg]))
    end,
    outer(PrintFun,Msgs).
  
  ts({H,M,S,_Us}) -> flat("~2.2.0w:~2.2.0w:~2.2.0w",[H,M,S]).
  
  
negative.code: 
  maybe_print(Cnf) ->
    PF = the_print_fun(Cnf),
    Cnf#cnf{print_pid=spawn_link(fun()->printi(PF,Cnf#cnf.print_p) end)}.
  
  the_print_fun(Cnf) ->
    PrintFun = mk_the_print_fun(Cnf),
  