anchor.diff:       , "cookie       (host cookie) target node cookie"
        , "blocking     (false)       block start/2, return a list of messages"
        , "arity        (false)       print arity instead of arg list"
  +     , "trace_child  (false)       children gets traced (set_on_spawn)"
        , "buffered     (false)       buffer messages till end of trace"
        , "discard      (false)       discard messages (when counting)"
        , "max_queue    (5000)        fail if internal queue gets this long"
  
positive.code: 
  maybe_arity(#cnf{arity=true},Flags) -> [arity|Flags];
  maybe_arity(_,Flags)                -> Flags.
  
  chk_time(Time) when is_integer(Time) -> Time;
  chk_time(X) -> throw({bad_time,X}).
  
negative.code: %%%         {ip,Port,Queue}
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  pack(Cnf) ->
    Flags0 = [call,timestamp],
    {Flags,RTPs} = lists:foldl(fun chk_trc/2,{Flags0,[]},slist(Cnf#cnf.trc)),
    dict:from_list([{time,chk_time(Cnf#cnf.time)},
                    {flags,maybe_arity(Cnf,maybe_trace_child(Cnf,Flags))},
                    {rtps,RTPs},
                    {procs,[chk_proc(P) || P <- mk_list(Cnf#cnf.procs)]},
                    {where,where(Cnf)}]).
  