anchor.diff:      -> state() |
          {'$gen_component', [{on_handler, Handler::gen_component:handler()}], State::state()}.
   on_init({get_node_details}, State) ->
  +    %% only in tx_tm not in rtm processes!
  +    ?ASSERT(tx_tm =:= state_get_role(State)),
       util:wait_for(fun() -> comm:is_valid(comm:this()) end),
       comm:send_local(pid_groups:get_my(dht_node),
                       {get_node_details, comm:this(), [node]}),
  
positive.code:     state_set_RTMs(State, NewRTMs);
  
  on_init({update_RTMs}, State) ->
      rtm_update(state_get_RTMs(State),
                 config:read(tx_rtm_update_interval) div 1000,
                 {update_RTMs}),
      State;
  on_init({update_RTMs_on_init}, State) ->
      ?TRACE_RTM_MGMT("tx_tm_rtm:on_init:update_RTMs in Pid ~p ~n", [self()]),
      rtm_update(state_get_RTMs(State), 1, {update_RTMs_on_init}),
      State;
  
  
negative.code: 
  %% sent by snapshot.erl to update tx_tm on new local snapshot numbers
  on({update_snapno, SnapNo}, State) ->
      %% only in tx_tm not in rtm processes!
      ?ASSERT(tx_tm =:= state_get_role(State)),
      state_set_local_snapno(State, SnapNo);
  
  %% failure detector events
  on({crash, Pid, _Cookie}, State) ->
      %% only in tx_tm not in rtm processes!
      ?ASSERT(tx_tm =:= state_get_role(State)),
      on({crash, Pid}, State);
  on({crash, Pid}, State) ->
      ?TRACE_RTM_MGMT("tx_tm_rtm:on({crash,...}) of Pid ~p~n", [Pid]),
      %% only in tx_tm not in rtm processes!
      ?ASSERT(tx_tm =:= state_get_role(State)),
      handle_crash(Pid, State, on);
  %% on({crash, _Pid, _Cookie},
  %%    {_RTMs, _TableName, _Role, _LAcceptor, _GLLearner} = State) ->
  