anchor.diff:  
   -spec successor_node(RT :: rt(), Node :: rt_entry()) -> rt_entry().
   successor_node(RT, Node) ->
  -    gb_trees:get(adjacent_succ(Node), get_rt_tree(RT)).
  +    try gb_trees:get(adjacent_succ(Node), get_rt_tree(RT)) catch
  +         error:function_clause -> exit('stale adjacent fingers')
  +    end.
   
   -spec spacing(Node :: rt_entry(), RT :: rt()) -> float().
   spacing(Node, RT) ->
  
positive.code:     %% merge the routing tables. Note: We don't care if this message is not from our
      %current successor. We just have to make sure that the merged entries are valid.
      LocalRT = rt_loop:get_rt(State),
      NewRT = case LocalRT =:= RT of
          true ->
              % - add each entry from the other RT if it doesn't already exist
              % - entries to be added have to be normal entries
              util:gb_trees_foldl(
                  fun(Key, Entry, Acc) ->
                          %% TODO send an async message to check if entry is valid; if it
  
negative.code:                         case entry_exists(Key, Acc) of
                              true -> Acc;
                              false -> 
                                  add_normal_entry(Entry, Acc)
                          end
                  end,
                  To, get_rt_tree(From)
              )
              ;
  
          false -> LocalRT
      end,
      rt_loop:set_rt(State, NewRT)
  