anchor.diff:  %% =========================================================================
   
   ring_changed(Node, CState) ->
  -    {C1, CState2} = maybe_update_claimant(Node, CState),
  -    {C2, CState3} = maybe_handle_joining(Node, CState2),
  -    case C2 of
  -        true ->
  -            Changed = true,
  -            CState5 = CState3;
  -        false ->
  -            {C3, CState4} = maybe_update_ring(Node, CState3),
  -            {C4, CState5} = maybe_remove_exiting(Node, CState4),
  -            Changed = (C1 or C2 or C3 or C4)
  -    end,
  +    {Changed, CState5} = do_claimant(Node, CState, fun log/2),
  +    inform_removed_nodes(Node, CState, CState5),
   
       %% Start/stop converge and rebalance delay timers
       %% (converge delay)
  
positive.code:                PrevOwner /= NewOwner,
                 not lists:member(Idx, RemovedIndices)],
  
      [log(reassign, {Idx, NewOwner, CState}) || {Idx, NewOwner} <- Reassign],
  
      %% Unlike rebalance_ring, remove_node can be called when Next is non-empty,
      %% therefore we need to merge the values. Original Next has priority.
  
negative.code:             OldS = ordsets:from_list([{Idx,O,NO} || {Idx,O,NO,_,_} <- Next0]),
              NewS = ordsets:from_list([{Idx,O,NO} || {Idx,O,NO,_,_} <- Next4]),
              Diff = ordsets:subtract(NewS, OldS),
              [Log(next, NChange) || NChange <- Diff],
              ?ROUT("Updating ring :: next3 : ~p~n", [Next4]),
              CState5 = riak_core_ring:set_pending_changes(CState4, Next4),
              CState6 = riak_core_ring:increment_ring_version(CNode, CState5),
  