anchor.diff:  process_frame(Nodes, DownNodes, State) ->
       SortedNodes = ordsets:from_list(Nodes),
       SortedDownNodes = ordsets:from_list(DownNodes),
  -    SizeChanged = (length(Nodes) =/= length(State#state.nodes_states)),
  +
  +    PrevNodes = [NS#node_state.name || NS <- State#state.nodes_states],
  +    NodesChanged = (SortedNodes =/= ordsets:from_list(PrevNodes)),
  +
       UpNodes = ordsets:subtract(SortedNodes, SortedDownNodes),
       UpFun =
           fun (#node_state{state = removed}, Acc) -> Acc;
  
positive.code:                         %% doing failover
                          {[{failover, Node}], DownStates};
                      false ->
                          case State#state.mailed_too_small_cluster =:= ClusterSize of
                              true ->
                                  {[], DownStates};
                              false ->
  
negative.code: 
  -record(state, {
            nodes_states :: [#node_state{}],
            mailed_too_small_cluster :: list(),
            down_threshold :: pos_integer()
           }).
  
  init_state(DownThreshold) ->
      #state{nodes_states = [],
             mailed_too_small_cluster = [],
             down_threshold = DownThreshold - 1 - ?DOWN_GRACE_PERIOD}.
  
  fold_matching_nodes([], NodeStates, Fun, Acc) ->
  