anchor.diff:          end,
       case gen_server:call(?MODULE, {pid, Addr}) of
           {ok, MBoxPid} ->
  -            {ok, Monitor} = monitor_mbox(MBoxPid),
  +            Monitor = erlang:monitor(process, MBoxPid),
               MBoxPid ! {send, NotifyPid, NotifyData, ResponseFun,
                          kind_to_module(Kind), Cmd, CmdArgs},
               {ok, [Monitor]};
  -        _Error -> {error, []}
  +        Error -> Error
       end.
   
   kind_to_module(ascii)  -> mc_client_ascii_ac;
  
positive.code: start_link()     -> start_link([{timeout, ?TIMEOUT_WORKER_INACTIVE}]).
  start_link(Args) -> gen_server:start_link({local, ?MODULE}, ?MODULE, Args, []).
  
  monitor(Addr) ->
      case gen_server:call(?MODULE, {pid, Addr}) of
          {ok, MBoxPid} -> monitor_mbox(MBoxPid);
          Error         -> Error
      end.
  
  demonitor(undefined)   -> ok;
  demonitor(MonitorRefs) ->
      % The flush removes a single DOWN message, if any, that are
      % already waiting in our/self()'s mailbox.
      lists:foreach(fun(MonitorRef) ->
                            erlang:demonitor(MonitorRef, [flush])
                    end,
                    MonitorRefs),
      ok.
  
  send(Addr, Out, Cmd, CmdArgs, ResponseFilter, ResponseModule) ->
      send(Addr, Out, Cmd, CmdArgs, ResponseFilter, ResponseModule,
  
negative.code: -define(TIMEOUT_WORKER_GO,          1000). % 1 seconds.
  -define(TIMEOUT_WORKER_INACTIVE, 1000000). % 1000 seconds.
  
  -record(dmgr, {timeout % Timeout for worker inactivity.
                }).
  
  % We have one MBox (or worker) per Addr.
  