anchor.diff:      NewRT.
   
   % @doc Add a normal entry to the routing table
  --spec add_normal_entry(Entry :: node:node_type(), rt()) -> rt().
  +-spec add_normal_entry(Entry :: mynode(), rt()) -> rt().
   add_normal_entry(Entry, RT) ->
       add_entry(Entry, normal, RT).
   
   % @doc Get the inner node:node_type() of a rt_entry
  --spec rt_entry_node(N :: rt_entry()) -> node:node_type().
  +-spec rt_entry_node(N :: rt_entry()) -> mynode().
   rt_entry_node(#rt_entry{node=N}) -> N.
   
   % @doc Set the inner node:node_type() of a rt_entry
  --spec rt_entry_set_node(Entry :: rt_entry(), Node :: node:node_type()) -> rt_entry().
  +-spec rt_entry_set_node(Entry :: rt_entry(), Node :: mynode()) -> rt_entry().
   rt_entry_set_node(#rt_entry{} = Entry, Node) -> Entry#rt_entry{node=Node}.
   
   % @doc Calculate the distance between two nodes in the routing table
  
positive.code: %% @doc Converts the internal representation of the routing table to a list
  %%      in the order of the fingers, i.e. first=succ, second=shortest finger,
  %%      third=next longer finger,...
  -spec internal_to_list(rt()) -> nodelist:snodelist().
  internal_to_list(#rt_t{} = RT) ->
      SourceNode = get_source_node(RT),
      ListOfNodes = [rt_entry_node(N) || N <- gb_trees:values(get_rt_tree(RT))],
  
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
  