anchor.diff:  %% Miscellaneous
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   
  +%% @doc Filter Function for subscribing to the rm loop
   -spec rm_check(Neighbors, Neighbors, Reason) -> boolean() when
         is_subtype(Neighbors, nodelist:neighborhood()),
         is_subtype(Reason, rm_loop:reason()).
  
positive.code: request_node_details(Details) ->
      DHT_Node = pid_groups:get_my(dht_node),
      This = comm:this(),
      EnvPid = comm:reply_as(This, 3, {cb_msg, {gossip_cyclon, default}, '_'}),
      case comm:is_valid(This) of
          true ->
              comm:send_local(DHT_Node, {get_node_details, EnvPid, Details});
  
negative.code:     {true, State}.
  
  
  %% @doc Select and prepare the subset of the cache to be sent to the peer. <br/>
  %%      Called by the gossip module at the beginning of every cycle. <br/>
  %%      The selected exchange data (i.e. the selected subset of the cache) is
  %%      sent back to the gossip module as a message of the form
  %%      {selected_data, Instance, ExchangeData}.
  %%      gossip_trigger -> select_data() is equivalent to cy_shuffle in the old
  %%      cyclon module.
  -spec select_data(State::state()) -> {ok | retry, state()}.
  select_data({Cache, Node}=State) ->
      case check_state(State) of
          fail ->
              {retry, State};
  