code: @FFDCIgnore(BundleException.class)
      public BundleLifecycleStatus preStartBundles(List<Bundle> installedBundles) {
          BundleLifecycleStatus startStatus = new BundleLifecycleStatus();
  
          if (installedBundles == null || installedBundles.size() == 0)
              return startStatus;
  
          for (Bundle b : installedBundles) {
              // Skip any null bundles in the list
              if (b == null)
                  continue;
  
              int state = b.getState();
  
              // Only start bundles that are in certain states (not UNINSTALLED, or already STARTING)
              if (state == Bundle.UNINSTALLED || state >= org.osgi.framework.Bundle.STARTING)
                  continue;
  
              try {
                  b.start(Bundle.START_ACTIVATION_POLICY);
              } catch (BundleException e) {
                  // No FFDC, these are handled later.
                  startStatus.addStartException(b, e);
              }
          }
  
          return startStatus;
      }
docs: Start all previously installed bundles, but defer (or not)
  the ACTIVATION of those bundles based on the Bundle-ActivationPolicy
  value set in MANIFEST.MF.
  
  Perform the resolve operation before starting bundles
  to avoid intermittent issues with BundleException.STATECHANGED
  during Bundle start as other bundles resolve asynchronously
  
  @return BundleStartStatus object containing exceptions encountered while
  starting bundles
  @see BundleLifecycleStatus