code: @FFDCIgnore({ InvalidBundleContextException.class, LaunchException.class })
      protected void innerLaunchFramework(boolean isClient) {
          try {
              // Register services
              registerInstrumentationService(systemBundleCtx);
              registerLibertyProcessService(systemBundleCtx, config);
              preRegisterMBeanServerPipelineService(systemBundleCtx);
              openThreadIdentityTracker(systemBundleCtx);
              registerPauseableComponentController(systemBundleCtx);
  
              // Initialize the repo registry: we can use caches AND logging for messages
              BundleRepositoryRegistry.initializeDefaults(config.getProcessName(), true, isClient);
  
              Provisioner provisioner = new ProvisionerImpl();
              provisioner.initialProvisioning(systemBundleCtx, config);
  
              // All of our kernel provisioning activities are complete!
              config.getKernelResolver().dispose();
          } catch (LaunchException le) {
              // this is one of ours, no need to wrap again, just rethrow
              throw le;
          } catch (InvalidBundleContextException e) {
              // no-op: the framework was shutdown while bundles were being
              // installed -- things should stop gracefully w/ no ugly error
              // messages.
          }
      }
docs: Register core services and perform initial provisioning.
  Separate method to allow test to avoid/swap out the behavior.