anchor.diff:      DBusRootNode.
   
   
  -handle_release_all_services(_Pid, _State) ->
  +handle_release_all_services(Pid, State) ->
  +    error_logger:info_msg("~p: handle_release_all_services ~p~n", [?MODULE, Pid]),
       throw(unimplemented).
  +
  +
  +handle_release_service(Service, Pid, State) ->
  +    Services = State#state.services,
  +    case lists:keysearch(Service, 2, Services) of
  +	{value, {ServiceName, _, Pids}} ->
  +            case lists:delete(Pid, Pids) of
  +                Pids ->
  +                    %% Pid was not in Pids!
  +                    %% Do nothing
  +                    {reply, {error, not_registered}, State};
  +                [] ->
  +                    %% No more Pids, remove service.
  +                    true = unlink(Pid),
  +                    error_logger:info_msg("~p: ~p Service terminated ~p~n", [?MODULE, self(), ServiceName]),
  +                    Services1 = lists:keydelete(Service, 2, Services),
  +                    if
  +                        Services1 == [] ->
  +                            %%error_logger:info_msg("~p: No more services stopping ~p bus~n", [?MODULE, State#state.name]),
  +                            %%{stop, normal, State};
  +                            error_logger:warning_msg("~p: No more services TODO stop bus~n", [?MODULE]),
  +                            {reply, ok, State#state{services=Services1}};
  +                        true ->
  +                            {reply, ok, State#state{services=Services1}}
  +                    end;
  +                Pids1->
  +                    %% Update tuple with new Pids.
  +                    true = unlink(Pid),
  +                    Value = {ServiceName, Service, Pids1},
  +                    Services1 = lists:keyreplace(Service, 2, Services, Value),
  +                    {reply, ok, State#state{services=Services1}}
  +            end;
  +	false ->
  +	    {reply, {error, not_registered}, State}
  +    end.
   
   %%     Services = State#state.services,
   %%     case lists:keysearch(Service, 2, Services) of
  
positive.code: get_service(Bus, ServiceName) ->
      gen_server:call(Bus, {get_service, ServiceName, self()}).
  
  cast(Bus, Header) ->
      gen_server:cast(Bus, {cast, Header}).
  
  
negative.code: %% gen_server callbacks
  %%
  init([BusId, Owner]) ->
      %%process_flag(trap_exit, true),
      self() ! {setup, BusId},
      {ok, #state{owner=Owner}}.
  
  