anchor.diff:  is_source(Entry) -> entry_is_of_type(Entry, source).
   is_sticky(Entry) -> entry_is_of_type(Entry, sticky).
   
  -entry_nodeid(#rt_entry{node=Node}) -> nodelist:id(Node).
  -
  --spec entry_learn(rt_entry(), gb_tree()) -> gb_tree().
  -entry_learn(Entry, RT) -> 
  -    gb_trees:enter(node:id(Entry#rt_entry.node), Entry, RT)
  -    .
  -
  --spec entry_delete(EntryKey :: key(), rt()) -> rt().
  -entry_delete(EntryKey, RT) ->
  -    gb_trees:delete(EntryKey, RT).
  -
  +entry_nodeid(#rt_entry{node=Node}) -> node:id(Node).
  +
  +adjacent_pred(#rt_entry{adjacent_fingers={Pred,_Succ}}) -> Pred.
  +
  +predecessor_node(RT, Node) ->
  +    gb_trees:get(adjacent_pred(Node), get_rt_tree(RT)).
  +
  +spacing(Node) -> Node#rt_entry.spacing.
  
positive.code: 
  %% userdevguide-begin rt_frtchord:get_random_node_id
  %% @doc Generates a random node id, i.e. a random 128-bit number.
  -spec get_random_node_id() -> key().
  get_random_node_id() ->
      case config:read(key_creator) of
          random -> hash_key_(randoms:getRandomString());
  
negative.code: %% userdevguide-begin rt_frtchord:check
  %% @doc Notifies the dht_node and failure detector if the routing table changed.
  %%      Provided for convenience (see check/5).
  check(OldRT, NewRT, Neighbors, ReportToFD) ->
      check(OldRT, NewRT, Neighbors, Neighbors, ReportToFD).
  
  