anchor.diff:      end.
   
   -spec state_changed(state()) -> state().
  -state_changed(State=#state{ensemble_data=EnsData, cluster_state=CS, subscribers=Subscribers}) ->
  +state_changed(State=#state{ensemble_data=EnsData, cluster_state=CS}) ->
       true = ets:insert(?ETS, {cluster_state, CS}),
       true = ets:insert(?ETS, {cluster, riak_ensemble_state:members(CS)}),
       true = ets:insert(?ETS, {enabled, riak_ensemble_state:enabled(CS)}),
  
positive.code:         exit:{{nodedown, _},_} ->
              nodedown
      end.
  
  subscribe(Callback)->
      gen_server:call(?MODULE, {subscribe, Callback}, infinity).
  
  
  %%%===================================================================
  %%% Gossip/State API
  
negative.code: -spec init([]) -> {ok, state()}.
  init([]) ->
      _ = ets:new(?ETS, [named_table, public, {read_concurrency, true}, {write_concurrency, true}]),
      State = reload_state(),
      schedule_tick(),
      true = ets:insert(?ETS, {cluster_state, State#state.cluster_state}),
      gen_server:cast(self(), init),
  