anchor.diff:  %% @doc Converts the (external) 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 to_list(dht_node_state:state()) -> nodelist:snodelist().
  +-spec to_list(dht_node_state:state() | rt_t()) -> nodelist:snodelist().
   to_list(#rt_t{} = RT) ->
       SourceNode = get_source_node(RT),
       % sort
  
positive.code: 
  %% userdevguide-begin rt_frtchord:empty
  %% @doc Creates an "empty" routing table containing the successor.
  add_sticky_nodes_to_rt([H|_] = List, RT) when is_tuple(H) ->
      lists:foldl(fun(Entry, Acc) ->
                  add_sticky_entry(Entry, Acc)
          end, RT, List).
  
  -spec empty(nodelist:neighborhood()) -> rt().
  empty(Neighbors) -> 
  
negative.code: -spec add_entry(Entry :: rt_entry() | node:node_type(),
      entry_type(),
      RT :: rt()) -> rt().
  add_entry(#rt_entry{node=Node}, Type, RT) ->
      add_entry(Node, Type, RT);
  add_entry(Node, Type, RT) ->
      NewNode = #rt_entry{
          node = Node,
          id   = node:id(Node),
          type = Type
      },
      entry_learning_and_filtering(NewNode, RT)
  