anchor.diff:  -spec multicast_join(GroupName :: any(), Pid :: pid(), Meta :: any()) -> pid().
   multicast_join(GroupName, Pid, Meta) ->
       spawn_link(fun() ->
  -        rpc:eval_everywhere(nodes(), ?MODULE, add_to_local_table, [GroupName, Pid, Meta, undefined])
  +        lists:foreach(fun(RemoteNode) ->
  +            sync_join(RemoteNode, GroupName, Pid, Meta)
  +        end, nodes())
       end).
   
   -spec multicast_leave(GroupName :: any(), Pid :: pid()) -> pid().
   multicast_leave(GroupName, Pid) ->
       spawn_link(fun() ->
  -        rpc:eval_everywhere(nodes(), ?MODULE, remove_from_local_table, [GroupName, Pid])
  +        lists:foreach(fun(RemoteNode) ->
  +            sync_leave(RemoteNode, GroupName, Pid)
  +        end, nodes())
       end).
   
   -spec join_on_node(GroupName :: any(), Pid :: pid(), Meta :: any()) -> ok.
  
positive.code: -spec multi_call_reply(CallerPid :: pid(), Reply :: any()) -> {syn_multi_call_reply, pid(), Reply :: any()}.
  multi_call_reply(CallerPid, Reply) ->
      CallerPid ! {syn_multi_call_reply, self(), Reply}.
  
  -spec sync_get_local_group_tuples(FromNode :: node()) -> list(syn_group_tuple()).
  sync_get_local_group_tuples(FromNode) ->
  
negative.code:     {noreply, #state{}} |
      {noreply, #state{}, Timeout :: non_neg_integer()} |
      {stop, Reason :: any(), #state{}}.
  
  handle_cast({sync_join, GroupName, Pid, Meta}, State) ->
      %% add to table
      add_to_local_table(GroupName, Pid, Meta, undefined),
      %% return
      {noreply, State};
  
  handle_cast({sync_leave, GroupName, Pid}, State) ->
      %% remove entry
      remove_from_local_table(GroupName, Pid),
      %% return
      {noreply, State};
  
  handle_cast(Msg, State) ->
      error_logger:warning_msg("Syn(~p): Received an unknown cast message: ~p", [node(), Msg]),
  