anchor.diff:  rm_filter(Old, New, Reason) ->
       OldRange = nodelist:node_range(Old),
       NewRange = nodelist:node_range(New),
  -    %case OldRange =/= NewRange of
  -    %    true ->
  -    %        log:log("the range has changed: ~w -> ~w (~w)",
  -    %                [OldRange, NewRange, Reason]);
  -    %    false ->
  -    %        ok
  -    %end,
       case Reason of
           {slide_finished, _} ->
               false;
  
positive.code:             % we lost our active lease; we do not participate in the ring anymore
              State;
          false ->
              MissingRange = intervals:minus(MyRange, ActiveRange),
              case intervals:is_non_empty(MissingRange) 
                   andalso
                  intervals:is_left_of(MissingRange, ActiveRange) of
                  false ->
                      State;
                  true ->
                      %% log:log("missing range:~n missing=~p~n active=~p~n my_range=~p", 
                      %%         [MissingRange, ActiveRange, MyRange]),
                      %% log:log("missing range: ~w", [MissingRange]),
                      LeaseId = l_on_cseq:id(MissingRange),
                      Pid = comm:reply_as(self(), 3, {read_after_rm_change, MissingRange, '_'}),
                      l_on_cseq:read(LeaseId, Pid),
                      State
              end
      end.
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  
negative.code:             State
      end;
  
  on({merge_after_leave, _NewLease, _OldLease, _Result}, State) ->
      ?TRACE("merge after finish done: ~w", [_Result]),
      State;
  
  on({get_node_for_new_neighbor, {get_state_response, Node}}, State) ->
  