anchor.diff:      common(Msg, From, State, prelead).
   
   -spec leading(_, state()) -> next_state().
  -leading(init, State=#state{id=_Id}) ->
  +leading(init, State=#state{id=_Id, watchers=Watchers}) ->
       ?OUT("~p: Leading~n", [_Id]),
       _ = lager:info("~p: Leading~n", [_Id]),
       start_exchange(State),
  +    notify_leader_status(Watchers, leading, State),
       leading(tick, State#state{alive=?ALIVE, tree_ready=false});
   leading(tick, State) ->
       leader_tick(State);
  
positive.code: -spec get_leader(pid()) -> peer_id().
  get_leader(Pid) when is_pid(Pid) ->
      gen_fsm:sync_send_all_state_event(Pid, get_leader, infinity).
  
  get_info(Pid) when is_pid(Pid) ->
      gen_fsm:sync_send_all_state_event(Pid, get_info, infinity).
  
negative.code: step_down(State) ->
      step_down(probe, State).
  
  step_down(Next, State=#state{lease=Lease, watchers=Watchers}) ->
      ?OUT("~p: stepping down~n", [State#state.id]),
      notify_leader_status(Watchers, Next, State),
      riak_ensemble_lease:unlease(Lease),
      State2 = cancel_timer(State),
      reset_workers(State),
  