anchor.diff:      %% monitor
       MRef = monitor(process, Pid),
       %% send
  -    Pid ! {syn_multi_call, Message, self(), Meta},
  +    Ref = make_ref(),
  +    From = {Ref, self()},
  +    Pid ! {syn_multi_call, Message, From, Meta},
       %% wait for reply
       receive
  -        {syn_multi_call_reply, Pid, Reply} ->
  -            CollectorPid ! {reply, Pid, Reply};
  +        {syn_multi_call_reply, Ref, Reply} ->
  +            CollectorPid ! {syn_reply, Pid, Reply};
   
           {'DOWN', MRef, _, _, _} ->
  -            CollectorPid ! {bad_pid, Pid}
  +            CollectorPid ! {syn_bad_reply, Pid}
   
       after Timeout ->
  -        CollectorPid ! {bad_pid, Pid}
  +        CollectorPid ! {syn_bad_reply, Pid}
       end.
   
   -spec collect_replies(MembersOD :: orddict:orddict({pid(), Meta :: term()})) ->
  
positive.code: collect_replies([], Replies, BadReplies) -> {Replies, BadReplies};
  collect_replies(MembersOD, Replies, BadReplies) ->
      receive
          {reply, Pid, Reply} ->
              {Meta, MembersOD1} = orddict:take(Pid, MembersOD),
              collect_replies(MembersOD1, [{{Pid, Meta}, Reply} | Replies], BadReplies);
  
          {bad_pid, Pid} ->
              {Meta, MembersOD1} = orddict:take(Pid, MembersOD),
              collect_replies(MembersOD1, Replies, [{Pid, Meta} | BadReplies])
      end.
  
negative.code:     collect_replies(orddict:from_list(Members)).
  
  -spec multi_call_reply(CallerPid :: pid(), Reply :: term()) -> {syn_multi_call_reply, pid(), Reply :: term()}.
  multi_call_reply({Ref, ClientPid}, Reply) ->
      ClientPid ! {syn_multi_call_reply, Ref, Reply}.
  
  %% ===================================================================
  %% Callbacks
  