anchor.diff:  %% possibly used to populate the cache.
   %% Request_node_details() is called in check_state() (i.e. in on_active({cy_shuffle})).
   handle_msg({get_node_details_response, NodeDetails}, {OldCache, Node}=State) ->
  -    ?TRACE_DEBUG("get_node_details_response", []),
       case cyclon_cache:size(OldCache) =< 2 of
           true  ->
  -            %% ?TRACE_DEBUG("get_node_details_response: true", []),
               Pred = node_details:get(NodeDetails, pred),
               Succ = node_details:get(NodeDetails, succ),
               NewCache =
  
positive.code: %%      will be re-scheduled after 1s.
  -spec check_state(state()) -> ok | fail.
  check_state({Cache, _Node} = _State) ->
      % if the own node is unknown or the cache is empty (it should at least
      % contain the nodes predecessor and successor), request this information
      % from the local dht_node
      NeedsInfo = case cyclon_cache:size(Cache) of
                      0 -> [pred, succ];
                      _ -> []
  
negative.code:     end.
  
  
  %% @doc Process the subset from the requestor (P) and select a subset as reply
  %%      data (at Q). <br/>
  %%      Called by the behaviour module upon a p2p_exch message. <br/>
  %%      PSubset: exchange data (subset) from the p2p_exch request <br/>
  %%      Ref: used by the gossip module to identify the request <br/>
  %%      RoundStatus / Round: ignored, as cyclon does not implement round handling
  %%      p2p_exch msg -> seleft_reply_data() is equivalent to cy_subset msg in the
  