docs: protected void initializeServletContainerInitializers(DeployedModule moduleConfig) {
          if (WCCustomProperties.DISABLE_SCI_FOR_PRE_V8_APPS && this.getVersionID()<30 ) { //don't do this for 2.5 apps 
              //don't handle SCIs for Servlet 2.5 and lower apps
              logger.logp(Level.FINE, CLASS_NAME, "initializeServletContainerInitializers", "No processing of ServletContainerInitializers on application due to custom property");
              return;
          }
          
          if (com.ibm.ws.webcontainer.osgi.WebContainer.isServerStopping())
              return;
  
          ServletContext ctx = this;
          List<ServletContainerInitializer> myScis = new ArrayList<ServletContainerInitializer>();
          HashMap<ServletContainerInitializer, Class[]> handleTypesHashMap = new HashMap<ServletContainerInitializer, Class[]>();
          HashMap<ServletContainerInitializer, HashSet<Class<?>>> onStartupHashMap = new HashMap<ServletContainerInitializer, HashSet<Class<?>>>();
          boolean needToScanClassesExtensionPoint = false;
          boolean needToScanClasses = false;
          
              if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)){
              logger.entering(CLASS_NAME, "initializeServletContainerInitializers");
              StringBuffer msg=new StringBuffer(";warFile=").append(moduleConfig.getName());
              logger.logp(Level.FINEST, CLASS_NAME, "initializeServletContainerInitializers", msg.toString());
          } 
  
          // investigate all of the ExtensionPointSCIs and determine if there is a need to scan for classes.
          needToScanClassesExtensionPoint = initializeExtensionPointSCIs(myScis, moduleConfig, handleTypesHashMap, onStartupHashMap);
          
          ServiceLoader<ServletContainerInitializer> scis = ServiceLoader.load(ServletContainerInitializer.class, this.getClassLoader());
              
          //map for classNames and 
          for (ServletContainerInitializer sci:scis) {
              
              // If server is stopping don't process any more sci's
              if (com.ibm.ws.webcontainer.osgi.WebContainer.isServerStopping())
                  break;
              
              if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)){
                  logger.logp(Level.FINE, CLASS_NAME, "initializeServletContainerInitializers","Checking " +sci.getClass().getName());
              }
              
              if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)){
                  logger.logp(Level.FINE, CLASS_NAME, "initializeServletContainerInitializers","ServletContainerInitializer " +sci.getClass().getName() + " is valid.");
              }
              determineWhetherToAddScis(sci, myScis);
              //if the ServletContainerInitializer came from a valid jar, check the HandlesTypes annotation
              if(investigateHandlesTypes(sci, handleTypesHashMap, onStartupHashMap)){
                  needToScanClasses = true;
              }
          }
          //by now we should have put the SCI's with their appropriate classes in the handleTypesHashMap
          // if we need to scan classes for either regular or ExtesnionPoint SCIs then we need to do so.
          if (needToScanClasses || needToScanClassesExtensionPoint) {
             scanForHandlesTypesClasses(moduleConfig, handleTypesHashMap, onStartupHashMap);
          }
          
          //need to use myScis instead of scis as the instances of the ServletContainerInitializer changes in scis
          for (ServletContainerInitializer sci:myScis) {
              if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)){
                  logger.logp(Level.FINE, CLASS_NAME, "initializeServletContainerInitializers", "looping through ServletContainerInitializers again");
              }
              HashSet<Class<?>> setOfClasses = onStartupHashMap.get(sci);
              if (setOfClasses!=null && setOfClasses.isEmpty()) {
                  setOfClasses=null;
              }
              try {
                  sci.onStartup(setOfClasses, ctx);
              } catch (ServletException e) {
                  logger.logp(Level.WARNING, CLASS_NAME,"initializeServletContainerInitializers", "exception.occurred.while.running.ServletContainerInitializers.onStartup", new Object[] {sci, this.config.getDisplayName()});;
              }
          }
  
          if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)){
              logger.exiting(CLASS_NAME, "initializeServletContainerInitializers");
          }
      }