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:     end;
  
  on_init({new_node_id, Id}, State) ->
      tx_tm = state_get_role(State),
      case state_get_RTMs(State) of
          [] -> State;
          [_|_] = RTMs ->
              IDs = ?RT:get_replica_keys(Id),
              NewRTMs = [ set_rtmkey(R, I) || {R, I} <- lists:zip(RTMs, IDs) ],
              state_set_RTMs(State, NewRTMs)
  
negative.code: 
  %% do not accept new commit requests when not enough rtms are valid
  on_init({tx_tm_rtm_commit, _Client, _ClientsID, _TransLog} = Msg, State) ->
      %% only in tx_tm not in rtm processes!
      ?ASSERT(tx_tm =:= state_get_role(State)),
      %% forward request to a node which is ready to serve requests
      DHTNode = pid_groups:get_my(dht_node),
      %% there, redirect message to tx_tm
  