anchor.diff:  % @doc Filter one element from a set of nodes. Do it in a way that filters such a node
   % that the resulting routing table is the best one under all _possible_ routing tables.
   -spec entry_filtering(rt(),[rt_entry()]) -> rt().
  -entry_filtering(RT, []) -> RT;
  -entry_filtering(RT, AllowedNodes) ->
  +entry_filtering(RT, []) -> RT; % only sticky entries and the source node given; nothing to do
  +entry_filtering(RT, [_|_] = AllowedNodes) ->
       % XXX ensure that the allowed nodes are actually contained in the routing table
       false = lists:any(fun(none) -> true; (_) -> false end,
               [rt_lookup_node(entry_nodeid(N), RT) || N
                   <- AllowedNodes]),
  +
       Spacings = [
           begin PredNode = predecessor_node(RT,Node),
                 {Node, spacing(Node, RT) + spacing(PredNode, RT)}
  
positive.code: %-spec add_entry(Node :: node:node_type(), Type :: entry_type(), RT :: rt()) -> rt().
  -spec add_entry(node:node_type(),'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 :: node:node_type(), rt()) -> rt().
  add_sticky_entry(Entry, RT) -> add_entry(Entry, sticky, RT).
  
  % @doc Add the source entry to the routing table
  % TODO unit test that only one source entry is allowed
  -spec add_source_entry(Entry :: node:node_type(), rt()) -> rt().
  add_source_entry(Entry, RT) -> add_entry(Entry, source, RT).
  
  % @doc Add a normal entry to the routing table
  -spec add_normal_entry(Entry :: node:node_type(), 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().
  
negative.code: 
  handle_custom_message({rt_get_node_response, NewNode}, State) ->
      OldRT = rt_loop:get_rt(State),
      NewRT = case rt_lookup_node(node:id(NewNode), OldRT) of
          none -> RT = add_normal_entry(NewNode, OldRT),
                  check(OldRT, RT, rt_loop:get_neighb(State), true),
                  RT;
          _Else ->  OldRT
      end,
  
      rt_loop:set_rt(State, NewRT)
      ;
  
  handle_custom_message(_Message, _State) -> unknown_event.
  %% userdevguide-end rt_frtchord:handle_custom_message
  