code: public static Injector start(BundleContext bundleContext, Injector injector) {
          registerInjector(bundleContext, injector);
          RegistrationHandler registrationHandler = getRegistrationHandler(injector);
          registerRegistrationHandler(bundleContext, registrationHandler);
          RegistryListenerHandler registryListenerHandler = getRegistryListenerHandler(injector);
          registerListenerHandler(bundleContext, registryListenerHandler);
          attachStoppingListener(bundleContext, injector);
          initHandlers(registrationHandler, registryListenerHandler);
          return injector;
      }
docs: The start method is responsible to 'start' the given injector.
  <p>More formally, it:
  <ul>
  <li>registers the injector has an OSGi</li>
  <li>Gets the inject supplier registration handler and registry listener handle</li>
  <li>saves the Handlers into the OSGi registry.</li>
  <li>Init the Handlers.</li>
  <li>Add cleaner to remove all the registered suppliers and listeners on bundle shutdown.</li>
  </ul>
  </p>
  <p><b>Warning:</b>This injector must have been created with
  one and only one {@link org.javabits.yar.guice.RegistryModule}
  to ensure bind registry handlers for Guice. But you can add/use as many as you want
  {@link org.javabits.yar.guice.AbstractRegistryModule}.</p>
  
  @param bundleContext the bundle context from where the injector is created.
  @param injector      the injector that must be started.
  @return the given injector.