anchor.diff:      % API
       {request_sync, DestKey::random | ?RT:key()} |
       {request_sync, Method::rr_recon:method(), DestKey::random | ?RT:key()} |
  +    {request_sync, Method::rr_recon:method(), DestKey::random | ?RT:key(), Principal::principal_id()} |
       {request_resolve, rr_resolve:operation(), rr_resolve:options()} |
       {get_state, Sender::comm:mypid(), Key::state_field()} |
       % internal
  
positive.code: 
  % Requests db sync with DestKey using default recon method (given in config).
  on({request_sync, DestKey}, State) ->
      comm:send_local(self(), {request_sync, get_recon_method(), DestKey}),
      State;
  
  % Requests database synchronization with DestPid (DestPid=DhtNodePid or random).
  %   Random leads to sync with a node which is associated with this (e.g. symmetric partner)
  on({request_sync, Method, DestKey}, State = #rrepair_state{ round = Round, 
                                                              open_recon = OpenRecon,
                                                              open_sessions = Sessions }) ->
      ?TRACE("RR: REQUEST SYNC WITH ~p", [DestKey]),
      S = new_session(Round, comm:this(), Method),
      {ok, Pid} = rr_recon:start(S#session.id),
      comm:send_local(Pid, {start, Method, DestKey}),
      State#rrepair_state{ round = next_round(Round),
  
negative.code: 
  -type round()       :: {non_neg_integer(), non_neg_integer()}.
  -type session_id()  :: {round(), comm:mypid()}.
  -type principal_id():: comm:mypid() | none.
  
  % @doc session contains only data of the sync request initiator thus rs_stats:regen_count represents only 
  %      number of regenerated db items on the initator
  -record(session, 
          { id                = ?required(session, id)            :: session_id(), 
            principal         = none                              :: principal_id(),
            rc_method         = ?required(session, rc_method)     :: rr_recon:method(), 
            rc_stats          = none                              :: rr_recon_stats:stats() | none,
            rs_stats          = none                              :: rr_resolve:stats() | none,
  