anchor.diff:      lists:foreach(fun({Pid, Meta}) ->
           spawn_link(?MODULE, multi_call_and_receive, [Self, Pid, Meta, Message, Timeout])
       end, Members),
  -    collect_replies(Members).
  +    collect_replies(orddict:from_list(Members)).
   
   -spec multi_call_reply(CallerPid :: pid(), Reply :: any()) -> {syn_multi_call_reply, pid(), Reply :: any()}.
   multi_call_reply(CallerPid, Reply) ->
  
positive.code: 
  -spec do_rebuild_monitors([syn_groups_tuple()], #{pid() => reference()}, #state{}) -> ok.
  do_rebuild_monitors([], _, _) -> ok;
  do_rebuild_monitors([{GroupName, Pid, Meta, Time} | T], NewMonitorRefs, #state{
      table_by_name = TableByName,
      table_by_pid = TableByPid
  } = State) ->
      remove_from_local_table(GroupName, Pid, TableByName, TableByPid),
      case is_process_alive(Pid) of
          true ->
              case maps:find(Pid, NewMonitorRefs) of
                  error ->
                      MRef = erlang:monitor(process, Pid),
                      add_to_local_table(GroupName, Pid, Meta, Time, MRef, TableByName, TableByPid),
                      do_rebuild_monitors(T, maps:put(Pid, MRef, NewMonitorRefs), State);
  
                  {ok, MRef} ->
                      add_to_local_table(GroupName, Pid, Meta, Time, MRef, TableByName, TableByPid),
                      do_rebuild_monitors(T, NewMonitorRefs, State)
              end;
  
          _ ->
              do_rebuild_monitors(T, NewMonitorRefs, State)
      end.
  
  -spec do_join_on_node(
  
negative.code: ) -> any().
  multi_call_and_receive(CollectorPid, Pid, Meta, Message, Timeout) ->
      %% monitor
      MRef = monitor(process, Pid),
      %% send
      Pid ! {syn_multi_call, Message, self(), Meta},
      %% wait for reply
  