anchor.diff:  
       rt_loop:set_rt(State, NewRT)
       ;
  +
  +handle_custom_message({send_rt, From}, State) ->
  +    comm:send_local(From, {send_rt_response, rt_loop:get_rt(State)}),
  +    State;
   
   handle_custom_message(_Message, _State) -> unknown_event.
   %% userdevguide-end rt_frtchord:handle_custom_message
  
positive.code: %% @doc Converts the internal RT to the external RT used by the dht_node.
  %% The external routing table is optimized to speed up ?RT:next_hop/2. For this, it is
  %%  only a gb_tree with keys being node ids and values being of type node:node_type().
  %%  TODO merge the Neighborhood into the external RT
  -spec export_rt_to_dht_node(rt(), Neighbors::nodelist:neighborhood()) -> external_rt().
  export_rt_to_dht_node(RT, _Neighbors) ->
      % From each rt_entry, we extract only the field "node" and add it to the tree
  
negative.code:     end
      .
  
  %% @doc Filter the source node's pid from a list of pids.
  -spec filter_source_pid(RT :: rt(), ListOfPids :: [pid()]) -> [pid()].
  filter_source_pid(RT,ListOfPids) ->
      SourcePid = node:pidX(rt_entry_node(get_source_node(RT))),
      [P || P <- ListOfPids, P =/= SourcePid].
  
  %% @doc Set up a set of subscriptions from a routing table
  -spec add_fd(RT :: rt())  -> ok.
  add_fd(#rt_t{} = RT) ->
      NewPids = to_pid_list(RT),
      % Filter the source node from the Pids, as we don't need an FD for that node. If the
      % source node crashes (which is the process calling this function), we are done
      % for.
      fd:subscribe(filter_source_pid(RT, NewPids)).
  
  %% @doc Update subscriptions
  -spec update_fd(OldRT :: rt(), NewRT :: rt()) -> ok.
  update_fd(OldRT, OldRT) -> ok;
  update_fd(#rt_t{} = OldRT, #rt_t{} = NewRT) ->
      OldPids = filter_source_pid(OldRT, to_pid_list(OldRT)),
      NewPids = filter_source_pid(NewRT, to_pid_list(NewRT)),
      fd:update_subscriptions(OldPids, NewPids).
  
  %% userdevguide-end rt_frtchord:check
  