code: public <T> T getService(Class<T> serviceClass, Object selector)
      {
          T service = super.getService(serviceClass, selector);
          if (service == null && serviceClass.equals(ControlBeanContextFactory.class)) {
              return (T)_bcsp.getService(this, this, serviceClass, selector);
          }
          return service;
      }
docs: Override ControlBeanContext.getService().  A control bean creates its bean context using the
  ControlBeanContextFactory service provided by this context.  A control bean will attempt to create
  its context before adding its self to this context as a child. This creates a chicken/egg problem since
  only a child of a context may request a service from it.
  
  This method provides a way to crack the chicken/egg problem by first trying to get the service using the
  control bean context's getService() method, and if that call returns null and the requested service is
  the ControlBeanContextFactory then returning an instance of the service provider.
  
  @param serviceClass
  @param selector