anchor.diff:      erlang:send_after(BroadcastInterval, ?MODULE, broadcast).
   
   %% @private
  -gen_unicast_name(#{name := Name, listen_addrs := ListenAddrs}) ->
  -    ListName = atom_to_list(Name),
  -    #{port := Port} = hd(ListenAddrs),
  -    Exchange = ListName ++ ":" ++ integer_to_list(Port),
  -    list_to_binary(Exchange).
  +gen_unicast_name(Node) when is_atom(Node) ->
  +    gen_unicast_name(#{name => Node});
  +gen_unicast_name(#{name := Name}) ->
  +    list_to_binary(atom_to_list(Name)).
   
   %% @private
   do_send_message(Message, Channel) ->
  
positive.code:             case amqp_connection:open_channel(Connection) of
                  {ok, Channel} ->
                      ok = gen_unicast_exchanges_channels_bindings(Myself, Channel),
                      ok = gen_broadcast_exchanges_channels_bindings(Channel),
  
                      ok = gen_unicast_subscription(Myself, Channel),
                      ok = gen_broadcast_subscription(Channel),
  
                      {ok, #state{myself=Myself,
                                  membership=Membership,
  
negative.code: gen_unicast_exchanges_channels_bindings(Node, Channel) ->
      UnicastName = gen_unicast_name(Node),
  
      %% Create a direct exchange for this node.
      ExchangeDeclare = #'exchange.declare'{exchange = UnicastName},
      #'exchange.declare_ok'{} = amqp_channel:call(Channel, ExchangeDeclare),
  
      %% Create a queue for this node.
      QueueDeclare = #'queue.declare'{queue = UnicastName},
      #'queue.declare_ok'{} = amqp_channel:call(Channel, QueueDeclare),
  
      %% Bind this queue to the direct exchange for this node;
      %% this serves as our unicast messaging channel for the node.
      Binding = #'queue.bind'{queue = UnicastName,
                              exchange = UnicastName,
                              routing_key = UnicastName},
  