anchor.diff:  %% layers can learn of it via the monitor/demonitor abstraction.
   
   start() -> gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
  -stop() -> gen_server:stop(?MODULE).
  +stop()  -> gen_server:stop(?MODULE).
   
   monitor(Addr) ->
       gen_server:call(?MODULE, {monitor, Addr}).
  
positive.code:     end.
  
  notify(P, D, V) when is_pid(P) -> P ! {D, V};
  notify(_, _, _) -> ok.
  
  group_by(Keys, KeyFunc) ->
      group_by(Keys, KeyFunc, dict:new()).
  
negative.code:     end.
  
  await_ok(N) -> await_ok(undefined, N, 0).
  await_ok(Prefix, N, Acc) when N > 0 ->
      % TODO: Decrementing N due to a DOWN might be incorrect
      % during edge/race conditions.
      receive
          {Prefix, {ok, _}}              -> await_ok(Prefix, N - 1, Acc + 1);
          {Prefix, {ok, _, _}}           -> await_ok(Prefix, N - 1, Acc + 1);
          {'DOWN', _MonitorRef, _, _, _} -> await_ok(Prefix, N - 1, Acc);
          Unexpected                     -> ?debugVal(Unexpected),
                                            exit({error, Unexpected})
      end;
  await_ok(_, _, Acc) -> Acc.
  
  