anchor.diff:  
   % exports for unit tests
   -export([check_rt_integrity/1, check_well_connectedness/1, get_random_key_from_generator/3]).
  -
  -%% Make dialyzer stop complaining about unused functions
  -
  -% The following functions are not used when ?GFRT is not defined. Dialyzer should not
  -% complain when they are not called.
  --compile({nowarn_unused_function,
  -          [{get_num_active_learning_lookups, 1},
  -           {set_num_active_learning_lookups, 2},
  -           {inc_num_active_learning_lookups, 1},
  -           {rt_entry_distance, 2},
  -           {rt_entry_id, 1},
  -           {set_custom_info, 2},
  -           {get_custom_info, 1}]}).
   
   % Functions which are specific to the frt/gfrt implementation
   -export([allowed_nodes/1, frt_check_config/0, rt_entry_info/4]).
  
positive.code: -spec rt_entry_set_node(Entry :: rt_entry(), Node :: mynode()) -> rt_entry().
  rt_entry_set_node(#rt_entry{} = Entry, Node) -> Entry#rt_entry{node=Node}.
  
  % @doc Calculate the distance between two nodes in the routing table
  -spec rt_entry_distance(From :: rt_entry(), To :: rt_entry()) -> non_neg_integer().
  rt_entry_distance(From, To) ->
      get_range(id(rt_entry_node(From)), id(rt_entry_node(To))).
  
  % @doc Get all nodes within the routing table
  -spec rt_get_nodes(RT :: rt()) -> [rt_entry()].
  rt_get_nodes(RT) -> gb_trees:values(get_rt_tree(RT)).
  
negative.code: set_adjacent_pred(#rt_entry{adjacent_fingers={_Pred, SuccId}} = Entry, PredId) ->
      set_adjacent_fingers(Entry, PredId, SuccId).
  
  -ifdef(GFRT).
  %% @doc Get the custom info field of a rt entry
  -spec get_custom_info(rt_entry()) -> custom_info().
  get_custom_info(#rt_entry{custom=CustomInfo}) -> CustomInfo.
  -endif.
  
  %% @doc Get the adjacent predecessor rt_entry() of the given node.
  -spec predecessor_node(RT :: rt(), Node :: rt_entry()) -> rt_entry().
  