anchor.diff:                      lager:info("disconnection from node ~p failed - local node is not alive", [Node])
               end,
   
  +            % publish removed/disconnected node
  +            gen_server:cast(self(), {publish, disconnect, Node}),
  +
               Ns0 = maps:remove(Node, Ns),
               {true, schedule_persist_timer(State#state{nodes=Ns0})};
           {ok, _Info} ->
  
positive.code: %%--------------------------------------------------------------------
  handle_info({connect, Node}, State) ->
      {_, State0} = try_connect(Node, State),
      {noreply, State0};
  
  handle_info(persist, State) ->
  
negative.code: 
      {noreply, State#state{nodes=Merged}};
  
  handle_cast({publish, Type, Node}, State) ->
      % publish current node set to everyone but `Node` and ourselves
      maps:fold(fun(K, _Info, _) when K /= Node ->
                        if K /= node() ->
                               lager:debug("publishing ~p to ~p [~p]", [Node, K, Type]),
                               {statser_discoverer, K} ! {Type, Node};
                           true -> ok
                        end,
                        lager:debug("publishing ~p to ~p [~p]", [K, Node, Type]),
                        {statser_discoverer, Node} ! {Type, K};
                   (_, _, _) -> ok
                end, ok, State#state.nodes),
  
  