anchor.diff:      .
   
   % @doc Delete an entry from the routing table
  -% TODO stale fingers, delete pointers
   -spec entry_delete(EntryKey :: key(), RT :: rt()) -> RefinedRT :: rt().
   entry_delete(EntryKey, RT) ->
       Tree = gb_trees:delete(EntryKey, get_rt_tree(RT)),
  
positive.code:             gb_trees:enter(PredId, NewPred,
                  gb_trees:enter(SuccId, NewSucc, Tree))
      end,
      Ns = gb_trees:values(UpdatedTree),
  
      %% TODO DELETE ASSERT
      Adjs = [tuple_to_list(adjacent_fingers(N)) || N <- Ns],
      Ids = lists:flatten(Adjs),
      false = lists:any(fun (none) -> true; (_) -> false end, [gb_trees:lookup(N,
                  UpdatedTree) || N <- Ids]),
      RT#rt_t{nodes=UpdatedTree}.
  
  % @doc Create an rt_entry and return the entry together with the Pred und Succ node, where
  
negative.code: %% @doc Creates an "empty" routing table.
  -spec empty(nodelist:neighborhood()) -> rt().
  empty(Neighbors) ->
      EmptyRT = add_source_entry(nodelist:node(Neighbors), #rt_t{}),
      remove_and_ping_entries(Neighbors, EmptyRT)
      .
  %% userdevguide-end rt_frtchord:empty
  
  