anchor.diff:                          get_rt_tree(RT)),
                       rt_set_nodes(RT, Nodes);
                   _ ->
  -                    case node:is_newer(Entry, rt_entry_node(ExistingEntry)) of
  -                        true -> % replace an existing node with a newer version
  -                            Nodes = gb_trees:enter(rt_entry_id(ExistingEntry),
  +                    Nodes = gb_trees:enter(rt_entry_id(ExistingEntry),
                                              rt_entry_set_node(ExistingEntry, Entry),
                                              get_rt_tree(RT)),
  -                            rt_set_nodes(RT, Nodes);
  -                        false -> RT
  -                    end
  +                    rt_set_nodes(RT, Nodes)
               end
       end.
   
  
positive.code: 
  % @doc Helper to do the actual work of converting a list of node:node_type() records
  % to list beginning with the source node and wrapping around at 0
  -spec sorted_nodelist(nodelist:snodelist(), SourceNode::key()) -> nodelist:snodelist().
  sorted_nodelist(ListOfNodes, SourceNode) ->
      % sort
      Sorted = lists:sort(fun(A, B) -> id(A) =< id(B) end,
  
negative.code: 
  % @doc Add an entry of a specific type to the routing table
  %-spec add_entry(Node :: node:node_type(), Type :: entry_type(), RT :: rt()) -> rt().
  -spec add_entry(mynode(), 'normal' | 'source' | 'sticky', rt()) -> rt().
  add_entry(Node, Type, RT) ->
      entry_learning_and_filtering(Node, Type, RT).
  
  % @doc Add a sticky entry to the routing table
  -spec add_sticky_entry(Entry :: mynode(), rt()) -> rt().
  add_sticky_entry(Entry, RT) -> add_entry(Entry, sticky, RT).
  
  % @doc Add the source entry to the routing table
  