anchor.diff:  
   ms(MS) -> foldl(fun msf/2, [{'_',[],[]}], MS).
   
  -msf(stack, [{Head,Cond,Body}]) -> [{Head,Cond,[{message,{process_dump}}|Body]}];
  -msf(return, [{Head,Cond,Body}]) -> [{Head,Cond,[{return_trace}|Body]}];
  +msf(stack,[{Head,Cond,Body}]) -> [{Head,Cond,[{message,{process_dump}}|Body]}];
  +msf(return,[{Head,Cond,Body}])-> [{Head,Cond,[{return_trace}|Body]}];
  +msf(Ari, [{_,Cond,Body}]) when is_integer(Ari)-> [{mk_head(Ari),Cond,Body}];
   msf(Head, [{_,Cond,Body}]) when is_tuple(Head)-> [{Head,Cond,Body}];
   msf(X,_) -> exit({bad_match_spec,X}).
  +
  +mk_head(N) -> erlang:make_tuple(N,'_').
   
   ass_list(L) when is_list(L) -> usort(L);
   ass_list(X) -> [X].
  
positive.code:     Cnf#cnf.max_queue,
      Cnf#cnf.max_msg_size}}.
  
  chk_time(Time) when is_integer(Time) -> Time;
  chk_time(X) -> exit({bad_time,X}).
  
  
negative.code:            , "msgs         (10)          stop trace after this many msgs"
             , "proc         (all)         (list of) Erlang process(es)"
             , "targ         (node())      node to trace on"
             , "arity        (false)       print arity instead of arg list"
             , "  print-related opts"
             , "max_queue    (5000)        fail if internal queue gets this long"
             , "max_msg_size (50000)       fail if seeing a msg this big"
  