anchor.diff:  %% userdevguide-begin rt_frtchord:to_pid_list
   %% @doc Returns the pids of the routing table entries.
   %% TODO RT should probably be a State tuple, not the RT itself
  +-spec to_pid_list(rt()) -> [comm:mypid()].
   to_pid_list(RT) -> [node:pidX(rt_entry_node(N)) || N <- to_list(RT)].
   %% userdevguide-end rt_frtchord:to_pid_list
   
   %% userdevguide-begin rt_frtchord:get_size
   %% @doc Returns the size of the routing table.
  +-spec get_size(rt() | external_rt()) -> non_neg_integer().
   get_size(RT) -> gb_trees:size(get_rt_tree(RT)).
   %% userdevguide-end rt_frtchord:get_size
   
   %% userdevguide-begin rt_frtchord:n
   %% @doc Returns the size of the address space.
  +-spec n() -> integer().
   n() -> n_().
   %% @doc Helper for n/0 to make dialyzer happy with internal use of n/0.
  +-spec n_() -> 16#100000000000000000000000000000000.
   n_() -> 16#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 1.
   %% userdevguide-end rt_frtchord:n
   
   %% @doc Keep a key in the address space. See n/0.
  +-spec normalize(Key::key_t()) -> key_t().
   normalize(Key) -> Key band 16#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.
   
   %% @doc Gets the number of keys in the interval (Begin, End]. In the special
   %%      case of Begin==End, the whole key range as specified by n/0 is returned.
  +-spec get_range(Begin::key(), End::key() | ?PLUS_INFINITY_TYPE) -> number().
   get_range(Begin, End) -> get_range_(Begin, End).
   
   %% @doc Helper for get_range/2 to make dialyzer happy with internal use of
   %%      get_range/2 in the other methods, e.g. get_split_key/3.
  +-spec get_range_(Begin::key_t(), End::key_t() | ?PLUS_INFINITY_TYPE) -> number().
   get_range_(Begin, Begin) -> n_(); % I am the only node
   get_range_(?MINUS_INFINITY, ?PLUS_INFINITY) -> n_(); % special case, only node
   get_range_(Begin, End) when End > Begin -> End - Begin;
  
positive.code: 
  %% userdevguide-begin rt_frtchord:dump
  %% @doc Dumps the RT state for output in the web interface.
  dump(RT) -> [{"0", webhelpers:safe_html_string("~p", [RT])}].
  %% userdevguide-end rt_frtchord:dump
  
  %% @doc Checks whether config parameters of the rt_frtchord process exist and are
  %%      valid.
  check_config() ->
      config:cfg_is_in(key_creator, [random, random_with_bit_mask]) and
          case config:read(key_creator) of
  
negative.code: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  %% userdevguide-begin rt_frtchord:empty_ext
  -spec empty_ext(nodelist:neighborhood()) -> external_rt().
  empty_ext(Neighbors) -> empty(Neighbors).
  %% userdevguide-end rt_frtchord:empty_ext
  
  %% userdevguide-begin rt_frtchord:next_hop
  %% @doc Returns the next hop to contact for a lookup.
  %% TODO Next hop contains type errors
  -spec next_hop(dht_node_state:state(), key()) -> comm:mypid().
  next_hop(State, Id) ->
      Neighbors = dht_node_state:get(State, neighbors),
      case intervals:in(Id, nodelist:succ_range(Neighbors)) of
  