anchor.diff:      {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]),
  
positive.code: -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])
      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])
      end).
  
  -spec join_on_node(GroupName :: any(), Pid :: pid(), Meta :: any()) -> ok.
  
negative.code: -export([multi_call/2, multi_call/3, multi_call_reply/2]).
  
  %% sync API
  -export([sync_join/4, sync_leave/3]).
  -export([sync_get_local_group_tuples/1]).
  -export([remove_from_local_table/2]).
  
  %% gen_server callbacks
  