anchor.diff:  start() -> gen_server:start({local, ?MODULE}, ?MODULE, [], []).
   stop()  -> gen_server:call(?MODULE, stop, infinity).
   
  -profile(Fun) when is_function(Fun) ->
  -    profile([], Fun);
  -profile(Rs) when is_list(Rs) ->
  -    start_profiling(Rs).
  -
  -profile(Pids, Fun) ->
  -    profile(Pids, Fun, {'_','_','_'}).
  -
  -profile(Pids, Fun, Pattern) ->
  -    profile(Pids, erlang, apply, [Fun,[]], Pattern).
  -
  -profile(Pids, M, F, A) ->
  -    profile(Pids, M, F, A, {'_','_','_'}).
  -
  -profile(Pids, M, F, A, Pattern) ->
  -    start(),
  -    gen_server:call(?MODULE, {profile,Pids,Pattern,M,F,A},infinity).
  -
  -dump() -> 
  -    gen_server:call(?MODULE, dump, infinity).
   
   analyze() ->
       analyze(procs).
  
positive.code: 	 handle_info/2,
  	 terminate/2,
  	 code_change/3]).
  -record(bpd, {
  	n   = 0,                 % number of total calls
  	us  = 0,                 % sum of uS for all calls
  
negative.code: 	mfa = []                 % list of {Mfa, {Count, Us}}
      }).
  
  -define(default_options, [{set_on_spawn, true}]).
  -define(default_pattern, {'_','_','_'}).
  
  -record(state, {
  	profiling  = false,
  	pattern    = ?default_pattern,
  	rootset    = [],
  	trace_opts = [],
  	fd         = undefined,
  	start_ts   = undefined,
  	reply      = undefined,
  	bpd        = #bpd{}
      }).
  
  
  