anchor.diff:  
   %%%----------------------------------------------------------------
   init(_) ->
  +    new_table(),
       {ok, #data{}}.
  +
  +
  +new_table() ->
  +    try 
  +        ets:new(?MODULE, [public, named_table]),
  +        ok
  +    catch
  +        exit:badarg ->
  +            ok
  +    end.
  +
  +
  +get_proc_stack(Pid) when is_pid(Pid) ->
  +    try ets:lookup_element(?MODULE, Pid, 2)
  +    catch
  +        error:badarg ->
  +            %% Non-existing item
  +            new_proc(Pid),
  +            ets:insert(?MODULE, {Pid,[]}),
  +            []
  +    end.
  +
  +
  +put_proc_stack(Pid, Data) when is_pid(Pid),
  +                               is_list(Data) ->
  +    ets:insert(?MODULE, {Pid,Data}).
  +
  +
  +new_proc(Pid) when is_pid(Pid) ->
  +    gen_server:cast(?SERVER, {new_proc,Pid}).
  +
  +ets_delete(Tab, Key) ->
  +    catch ets:delete(Tab, Key).
   
   %%%----------------------------------------------------------------
   handle_call({switch,on,Types}, _From, D) ->
  
positive.code:           fun(Type, Acc1) ->
                    lists:foldl(
                      fun(SshMod,Acc) ->
                              try SshMod:ssh_dbg_format(Type, INFO)
                              of
                                  skip ->
                                      %% Don't try to print this later
                                      written;
                                  Txt when is_list(Txt) ->
                                      WriteFun("~n~s ~p ~s~n", 
                                               [lists:flatten(TS),
                                                PID,
                                                lists:flatten(Txt)],
                                               written % this is returned
                                              )
                              catch
                                  _:_ -> Acc
                              end
                      end, Acc1, SshModules)
            end, Acc0, TypesOn),
  
negative.code: 
  -type trace_point() :: atom().
  -type trace_points() :: [trace_point()].
  -type stack() :: list(term()).
  
  -callback ssh_dbg_trace_points() -> trace_points().
  -callback ssh_dbg_flags(trace_point()) -> [atom()].
  -callback ssh_dbg_on(trace_point() | trace_points()) -> term().
  -callback ssh_dbg_off(trace_point() | trace_points()) -> term().
  -callback ssh_dbg_format(trace_point(), term()) -> iolist() | skip.
  -callback ssh_dbg_format(trace_point(), term(), stack()) -> {iolist() | skip, stack()}.
  
  -optional_callbacks([ssh_dbg_format/2, ssh_dbg_format/3]).  % At least one of them are to be used
  
  %%%================================================================
  
  