anchor.diff:  %% userdevguide-begin rt_frtchord:types
   -type key_t() :: 0..16#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF. % 128 bit numbers
   -type external_rt_t() :: gb_tree().
  --type custom_message() :: {get_rt, SourcePID :: comm:mypid()}.
   
   % define the possible types of nodes in the routing table:
   %  - normal nodes are nodes which have been added by entry learning
  
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: %%      Begin==End, the whole key range is split in halves.
  %%      Beware: SplitFactor must be in [0, 1]; the final key will be rounded
  %%      down and may thus be Begin.
  -spec get_split_key(Begin::key(), End::key() | ?PLUS_INFINITY_TYPE, SplitFraction::{Num::0..100, Denom::0..100}) -> key().
  get_split_key(Begin, _End, {Num, _Denom}) when Num == 0 -> Begin;
  get_split_key(_Begin, End, {Num, Denom}) when Num == Denom -> End;
  get_split_key(Begin, End, {Num, Denom}) ->
  