anchor.diff:      {noreply, State};
   
   handle_info({'EXIT', Pid, Reason}, State) ->
  -    Objects = State#state.objects,
  -    case lists:keysearch(Pid, 2, Objects) of
  -	{value, {Path, _}} ->
  -	    error_logger:info_msg("~p: Object terminated ~p ~p ~p~n", [?MODULE, Pid, Reason, Path]),
  -	    Objects1 =
  -		lists:keydelete(Pid, 2, Objects),
  -	    if
  -		Objects1 == [] ->
  -		    error_logger:info_msg("~p: No more objects stopping ~p service~n", [?MODULE, State#state.name]),
  -		    {stop, normal, State};
  -		true ->
  -		    {noreply, State#state{objects=Objects1}}
  -	    end;
  -	false ->
  +    case handle_unregister_object(Pid, State) of
  +	{ok, State1} ->
  +	    {noreply, State1};
  +	{stop, State1} ->
  +	    {stop, normal, State1};
  +	{error, not_registered, State1} ->
   	    if
   		Reason /= normal ->
  -		    {stop, Reason};
  +		    {stop, Reason, State1};
   		true ->
  -		    {noreply, State}
  +		    {noreply, State1}
   	    end
       end;
   
  
positive.code: 
  register_object(Service, Path, Object) ->
      gen_server:call(Service, {register_object, Path, Object}).
  
  %%
  %% gen_server callbacks
  
negative.code: 
  terminate(_Reason, _State) ->
      terminated.
  
  %%
  %% Return {ok, State}|{error, Reason, State}|{stop, State}
  %%
  handle_unregister_object(Object, State) ->
      Objects = State#state.objects,
      case lists:keysearch(Object, 2, Objects) of
  	{value, {Path, _}} ->
  	    true = unlink(Object),
  	    error_logger:info_msg("~p: Object terminated ~p ~p~n", [?MODULE, Object, Path]),
  	    Objects1 = lists:keydelete(Object, 2, Objects),
  	    if
  		Objects1 == [] ->
  		    error_logger:info_msg("~p: No more objects stopping ~p service~n", [?MODULE, State#state.name]),
  		    {stop, State};
  		true ->
  		    {ok, State#state{objects=Objects1}}
  	    end;
  	false ->
  	    {error, not_registered, State}
      end.
  