code: public boolean addService(Class serviceClass, BeanContextServiceProvider serviceProvider) {
          // todo: for multithreaded usage this block needs to be synchronized
          if (!_serviceProviders.containsKey(serviceClass)) {
              _serviceProviders.put(serviceClass, new ServiceProvider(serviceProvider));
              BeanContextServiceAvailableEvent bcsae = new BeanContextServiceAvailableEvent((BeanContextServices)getPeer(), serviceClass);
              fireServiceAvailableEvent(bcsae);
              return true;
          }
          // end synchronized
          return false;
      }
docs: Adds a service to this BeanContext.
  <code>BeanContextServiceProvider</code>s call this method
  to register a particular service with this context.
  If the service has not previously been added, the
  <code>BeanContextServices</code> associates
  the service with the <code>BeanContextServiceProvider</code> and
  fires a <code>BeanContextServiceAvailableEvent</code> to all
  currently registered <code>BeanContextServicesListeners</code>.
  The method then returns <code>true</code>, indicating that
  the addition of the service was successful.
  If the given service has already been added, this method
  simply returns <code>false</code>.
  
  @param serviceClass    the service to add
  @param serviceProvider the <code>BeanContextServiceProvider</code>
  associated with the service
  @return true if service was added.