anchor.diff:  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   
   %% userdevguide-begin rt_frtchord:empty
  -%% @doc Creates an "empty" routing table containing the successor.
  +%% @doc Creates an "empty" routing table.
   -spec empty(nodelist:neighborhood()) -> rt().
   empty(Neighbors) ->
  -    RT = add_source_entry(nodelist:node(Neighbors), #rt_t{}),
  -    Preds = nodelist:preds(Neighbors),
  -    Succs = nodelist:succs(Neighbors),
  -
  -    % coyping the preds and succs silences dialyzer
  -    StickyPreds = [N || N <- Preds],
  -    StickySuccs = [N || N <- Succs],
  -
  -    % insert preds and succs as sticky entries to the routing table
  -    % TODO We should always be able to add sticky nodes -> don't check the RT size
  -    TmpRT = lists:foldl(fun add_sticky_entry/2, RT, StickyPreds),
  -    lists:foldl(fun add_sticky_entry/2, TmpRT, StickySuccs)
  +    add_source_entry(nodelist:node(Neighbors), #rt_t{})
       .
   %% userdevguide-end rt_frtchord:empty
   
  
positive.code: -spec entry_nodeid(Node :: rt_entry()) -> key().
  entry_nodeid(#rt_entry{node=Node}) -> node:id(Node).
  
  %% @doc Get the adjacent predecessor key() of the current node.
  -spec adjacent_pred(rt_entry()) -> key().
  adjacent_pred(#rt_entry{adjacent_fingers={Pred,_Succ}}) -> Pred.
  
negative.code: %% This function removes sticky nodes from the RT which aren't in the neighborhood
  %% anymore. Additionally, it pings all entries to make sure that the IDs of the entries
  %% haven't changed.
  -spec remove_and_ping_entries(NewNeighbors :: nodelist:neighborhood(),
                                RT :: rt()) -> rt().
  remove_and_ping_entries(NewNeighbors, RT) ->
      OldStickyNodes = sets:from_list(lists:map(fun rt_entry_node/1,
              get_sticky_entries(RT))),
      NewStickyNodes = get_node_neighbors(NewNeighbors),
      DeadStickyNodes = sets:subtract(OldStickyNodes, NewStickyNodes),
      DeadStickyNodesIds = util:sets_map(fun node:id/1, DeadStickyNodes),
      ToBeAddedNodes = sets:subtract(NewStickyNodes, OldStickyNodes),
      % filter dead nodes and add sticky nodes
      FilteredRT = lists:foldl(fun entry_delete/2, RT, DeadStickyNodesIds),
      NewRT = sets:fold(fun add_sticky_entry/2, FilteredRT, ToBeAddedNodes),
      %% TODO ping entries
      NewRT.
  
  