anchor.diff:  get_service(Bus, ServiceName) ->
       gen_server:call(Bus, {get_service, ServiceName, self()}).
   
  +release_service(Bus, Service) ->
  +    gen_server:call(Bus, {release_service, Service, self()}).
  +
   cast(Bus, Header) ->
       gen_server:cast(Bus, {cast, Header}).
   
  
positive.code: %% gen_server callbacks
  %%
  init([BusId, Owner]) ->
      process_flag(trap_exit, true),
      self() ! {setup, BusId},
      {ok, #state{owner=Owner}}.
  
  
negative.code:     DBusRootNode.
  
  
  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
  