docs: protected CDI11Deployment createDeployment(ServletContext context, CDI11Bootstrap bootstrap) {
  
          ImmutableSet.Builder<Metadata<Extension>> extensionsBuilder = ImmutableSet.builder();
          extensionsBuilder.addAll(bootstrap.loadExtensions(WeldResourceLoader.getClassLoader()));
          if (isDevModeEnabled) {
              extensionsBuilder.add(new MetadataImpl<Extension>(DevelopmentMode.getProbeExtension(resourceLoader), "N/A"));
          }
  
          final Iterable<Metadata<Extension>> extensions = extensionsBuilder.build();
          final TypeDiscoveryConfiguration typeDiscoveryConfiguration = bootstrap.startExtensions(extensions);
          final EEModuleDescriptor eeModule = new EEModuleDescriptorImpl(context.getContextPath(), ModuleType.WEB);
  
          final DiscoveryStrategy strategy = DiscoveryStrategyFactory.create(resourceLoader, bootstrap, typeDiscoveryConfiguration.getKnownBeanDefiningAnnotations(),
              Boolean.parseBoolean(context.getInitParameter(Jandex.DISABLE_JANDEX_DISCOVERY_STRATEGY)));
  
          if (Jandex.isJandexAvailable(resourceLoader)) {
              try {
                  Class<? extends BeanArchiveHandler> handlerClass = Reflections.loadClass(resourceLoader, JANDEX_SERVLET_CONTEXT_BEAN_ARCHIVE_HANDLER);
                  strategy.registerHandler((SecurityActions.newConstructorInstance(handlerClass, new Class<?>[] { ServletContext.class }, context)));
              } catch (Exception e) {
                  throw CommonLogger.LOG.unableToInstantiate(JANDEX_SERVLET_CONTEXT_BEAN_ARCHIVE_HANDLER, Arrays.toString(new Object[] { context }), e);
              }
          } else {
              strategy.registerHandler(new ServletContextBeanArchiveHandler(context));
          }
          strategy.setScanner(new WebAppBeanArchiveScanner(resourceLoader, bootstrap, context));
          Set<WeldBeanDeploymentArchive> beanDeploymentArchives = strategy.performDiscovery();
  
          String isolation = context.getInitParameter(CONTEXT_PARAM_ARCHIVE_ISOLATION);
  
          if (isolation == null || Boolean.valueOf(isolation)) {
              CommonLogger.LOG.archiveIsolationEnabled();
          } else {
              CommonLogger.LOG.archiveIsolationDisabled();
              Set<WeldBeanDeploymentArchive> flatDeployment = new HashSet<WeldBeanDeploymentArchive>();
              flatDeployment.add(WeldBeanDeploymentArchive.merge(bootstrap, beanDeploymentArchives));
              beanDeploymentArchives = flatDeployment;
          }
  
          for (BeanDeploymentArchive archive : beanDeploymentArchives) {
              archive.getServices().add(EEModuleDescriptor.class, eeModule);
          }
  
          CDI11Deployment deployment = new WeldDeployment(resourceLoader, bootstrap, beanDeploymentArchives, extensions) {
              @Override
              protected WeldBeanDeploymentArchive createAdditionalBeanDeploymentArchive() {
                  WeldBeanDeploymentArchive archive = super.createAdditionalBeanDeploymentArchive();
                  archive.getServices().add(EEModuleDescriptor.class, eeModule);
                  return archive;
              }
          };
  
          if (strategy.getClassFileServices() != null) {
              deployment.getServices().add(ClassFileServices.class, strategy.getClassFileServices());
          }
          return deployment;
      }