anchor.diff:  %% accept RTM updates
   on({get_rtm_reply, InKey, InPid, InAcceptor}, State) ->
       ?TRACE_RTM_MGMT("tx_tm_rtm:on:get_rtm_reply in Pid ~p for Pid ~p and State ~p~n", [self(), InPid, _State]),
  -    tx_tm = state_get_role(State),
  +    %% only in tx_tm not in rtm processes!
  +    ?ASSERT(tx_tm =:= state_get_role(State)),
       RTMs = state_get_RTMs(State),
       NewRTMs = rtms_upd_entry(RTMs, InKey, InPid, InAcceptor),
       rtms_of_same_dht_node(NewRTMs),
  
positive.code: %% periodic RTM update
  on({update_RTMs}, State) ->
      ?TRACE_RTM_MGMT("tx_tm_rtm:on:update_RTMs in Pid ~p ~n", [self()]),
      tx_tm = state_get_role(State),
      RTMs = state_get_RTMs(State),
      rtm_update(RTMs, config:read(tx_rtm_update_interval) div 1000,
                 {update_RTMs}),
  
negative.code: %%     State;
  
  on({new_node_id, Id}, State) ->
      %% only in tx_tm not in rtm processes!
      ?ASSERT(tx_tm =:= state_get_role(State)),
      RTMs = state_get_RTMs(State),
      IDs = ?RT:get_replica_keys(Id),
      NewRTMs = [ set_rtmkey(R, I) || {R, I} <- lists:zip(RTMs, IDs) ],
  