anchor.diff:  
   %% "registry-like" functions
   -export([register/1,
  +         register_member/1,
            unregister/1,
  +         unregister_member/1,
            lookup/1,
  +         lookup_members/1,
            await/1]).
   
   %%====================================================================
  
positive.code: register(Name) ->
      gproc:add_local_name(Name).
  
  
  %% @doc Unregister the local process from a name
  %% @end
  
negative.code:     {setup,
          fun() -> application:start(gproc) end,
          fun(_) -> application:stop(gproc) end,
      [?_test(test_register()),
       ?_test(test_register_group())
      ]}.
  
  test_register() ->
      true = ?utils:register(name),
      ?assertEqual(self(), ?utils:lookup(name)),
      ?assertEqual(self(), ?utils:await(name)).
  
  test_register_group() ->
      ?assertEqual([], ?utils:lookup_members(group)),
      true = ?utils:register_member(group),
      ?assertEqual([self()], ?utils:lookup_members(group)),
      Main = self(),
      Pid = spawn_link(fun() ->
          ?utils:register_member(group),
          Main ! registered,
          ?utils:expect(die)
      end),
      ?utils:expect(registered),
      ?assertEqual([self(),Pid], lists:sort(?utils:lookup_members(group))),
      Pid ! die, ?utils:wait(Pid).
  
  
  -ifdef(PROPER).
  
  