anchor.diff:      ?log_error("Activity ~p failed with error ~p", [{Domain, Name}, Error]),
       {leader_activities_error, {Domain, Name}, Error}.
   
  -is_verbose(#activity{options = Options}) ->
  -    not proplists:get_bool(quiet, Options).
  +is_verbose(Activity) ->
  +    not proplists:get_bool(quiet, get_options(Activity)).
  +
  +get_options(#activity{options = Options}) ->
  +    Options.
  
positive.code: 
      State#state{activities = Quorum}.
  
  handle_wait_for_quorum(Lease, Quorum, SubCall, Timeout, From, State) ->
      gen_server2:conditional(
        wait_for_quorum_pred(Lease, Quorum, _),
        ?cut({noreply, handle_activity_subcall(SubCall, From, _2)}),
        Timeout,
        reply_no_quorum(From, Lease, Quorum, _)),
  
      State.
  
  wait_for_quorum_pred(undefined, Quorum, State) ->
      have_quorum(Quorum, State);
  wait_for_quorum_pred(Lease, Quorum, State) ->
      have_lease(Lease, State) andalso have_quorum(Quorum, State).
  
  reply_no_quorum(From, RequiredLease, RequiredQuorum,
                  #state{local_lease_holder = LocalLease,
  
negative.code:             {ok, A, State#state{activities = Rest}}
      end.
  
  have_local_lease(#state{local_lease_holder = Lease}) ->
      Lease =/= undefined.
  
  have_lease(undefined, State) ->
      have_local_lease(State);
  have_lease(ExpectedLease, #state{local_lease_holder = ActualLease}) ->
      ExpectedLease =:= ActualLease.
  
  have_quorum(follower, State) ->
      true = (State#state.local_lease_holder =/= undefined),
      true;
  have_quorum({all, Nodes}, #state{leases = Leases}) ->
      sets:is_subset(Nodes, Leases);
  