anchor.diff:             , "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"
  
positive.code: 
  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(Head, [{_,Cond,Body}]) when is_tuple(Head)-> [{Head,Cond,Body}];
  msf(X,_) -> exit({bad_match_spec,X}).
  
  ass_list(L) when is_list(L) -> usort(L);
  ass_list(X) -> [X].
  
negative.code:              , proc         = all          % list of procs (or 'all')
  	     , targ         = node()       % target node
  	     , buffered     = no           % output buffering
               , arity        = false        % arity instead of args
               , print_form   = "~s~n"       % format for printing
  	     , print_file   = ""           % file to print to (standard_io)
               , print_re     = ""           % regexp that must match to print
  