anchor.diff:  
   %% debug callbacks
   -export([local_bind/4]).
  -
  -%% broadcast interface
  --export([broadcast/1]).
   
   %% transmission callbacks
   -export([extract_log_type_and_payload/1]).
  
positive.code: %%%===================================================================
  %%% Internal functions
  %%%===================================================================
  
  %% @private
  broadcast({Id, Type, Metadata, Value}) ->
      case broadcast_tree_mode() of
          true ->
              Servers = sets:to_list(servers()),
              case length(Servers) of
                  0 ->
                      ok;
                  _ ->
                      Root = hd(Servers),
                      EagerPeers = plumtree_eager_peers(Root),
                      BroadcastFun = fun(Peer) ->
                                          send({aae_send,
                                                node(),
                                                {Id, Type, Metadata, Value}},
                                                Peer)
                                     end,
                      lists:foreach(BroadcastFun, EagerPeers)
              end,
              ok;
          false ->
              ok
      end.
  
  %% @private
  local_bind(Id, Type, Metadata, Value) ->
  
negative.code:     lasp_logger:extended("Beginning AAE synchronization."),
  
      %% Get the active set from the membership protocol.
      Members = case broadcast_tree_mode() of
          true ->
              Servers = sets:to_list(servers()),
              case length(Servers) of
                  0 ->
                      [];
                  _ ->
                      Root = hd(Servers),
                      plumtree_eager_peers(Root)
              end;
          false ->
              {ok, Members1} = membership(),
              Members1
      end,
  
      %% Remove ourself and compute exchange peers.
      Peers = compute_exchange(without_me(Members)),
  