anchor.diff:  handle_call({join, {_Name, _, _}=Node}, _From, State) ->
       gen_server:cast(?MODULE, {join, Node}),
       {reply, ok, State};
  +
  +handle_call({reserve, Tag}, _From, #state{reserved=Reserved0}=State) ->
  +    Present = lists:member(Tag, dict:fetch_keys(Reserved0)),
  +    Reserved = case Present of
  +        true ->
  +            Reserved0;
  +        false ->
  +            dict:store(Tag, undefined, Reserved0)
  +    end,
  +    {reply, ok, State#state{reserved=Reserved}};
   
   handle_call(active, _From, #state{active=Active}=State) ->
       {reply, {ok, Active}, State};
  
positive.code:          receive_message/1,
           decode/1]).
  
  %% debug.
  -export([active/0,
           passive/0]).
  
negative.code: %% @doc Decode state.
  decode(Active) ->
      sets:to_list(Active).
  
  %%%===================================================================
  %%% reservation callbacks
  %%%===================================================================
  
  %% @doc Reserve a slot for the particular tag.
  reserve(Tag) ->
      gen_server:call(?MODULE, {reserve, Tag}, infinity).
  
  %%%===================================================================
  %%% gen_server callbacks
  