anchor.diff:  
   %% @doc Message handler when the rm_loop module is fully initialized.
   -spec on(message() | ?RM:custom_message(), state()) -> state().
  -on({rm, notify_new_pred, NewPred}, State = {RM_State, _HasLeft, _SubscrTable}) ->
  -    RMFun = fun() -> ?RM:new_pred(RM_State, NewPred) end,
  +on({rm, notify_new_pred, NewPred}, State) ->
  +    RMFun = fun(RM_State) -> ?RM:new_pred(RM_State, NewPred) end,
       update_state(State, RMFun);
   
  -on({rm, notify_new_succ, NewSucc}, State = {RM_State, _HasLeft, _SubscrTable}) ->
  -    RMFun = fun() -> ?RM:new_succ(RM_State, NewSucc) end,
  +on({rm, notify_new_succ, NewSucc}, State) ->
  +    RMFun = fun(RM_State) -> ?RM:new_succ(RM_State, NewSucc) end,
       update_state(State, RMFun);
   
   on({rm, notify_slide_finished, SlideType}, State = {RM_State, _HasLeft, SubscrTable}) ->
  
positive.code:                              nodelist:succ(Neighborhood),
                               Reason]),
                      State
              end;
          _ -> State
      end;
  
  on({rm, leave}, {RM_State, _HasLeft, SubscrTable}) ->
  
negative.code: 
  %% @doc Calls RMFun (which may update the Neighborhood), then calls all
  %%      subscribers and updates the failure detector if necessary.
  -spec update_state(OldState::state_t(), RMFun::fun((?RM:state()) -> ?RM:state()))
          -> NewState::state_t().
  update_state(OldState, RMFun) ->
      update_state(OldState, RMFun, null).
  
  -spec update_state(OldState::state_t(), RMFun::fun((?RM:state()) -> ?RM:state()),
                     CrashedPid::comm:mypid() | null) -> NewState::state_t().
  update_state({OldRM_State, HasLeft, SubscrTable} = _OldState, RMFun, CrashedPid) ->
      OldNeighborhood = ?RM:get_neighbors(OldRM_State),
      NewRM_State = RMFun(OldRM_State),
      NewNeighborhood = ?RM:get_neighbors(NewRM_State),
      call_subscribers(OldNeighborhood, NewNeighborhood, none, SubscrTable),
      update_failuredetector(OldNeighborhood, NewNeighborhood, CrashedPid),
  