code: private void serviceabilityChecks() {
          final String m = "serviceabilityChecks";
          String requiredSpecVersionRange = JSFContainer.getJSFSpecLevel() + ".*";
  
          // Check version of JSF spec
          String apiVersion = javax.faces.application.ApplicationFactory.class.getPackage().getSpecificationVersion();
          if (apiVersion != null && !isVersionValid(apiVersion)) {
              IllegalStateException ex = new IllegalStateException(Messages.get("jsf.container.bad.spec.api.version", appName, requiredSpecVersionRange, apiVersion));
              if (log.isLoggable(Level.SEVERE))
                  log.logp(Level.SEVERE, clazz, m, ex.getMessage(), ex);
              throw ex;
          }
  
          // Check version of JSF impl
          Class<?> appFactoryClass = delegate.getClass();
          while (appFactoryClass != Object.class
                 && !appFactoryClass.getCanonicalName().equals(MYFACES_APP_FACTORY)
                 && !appFactoryClass.getCanonicalName().equals(MOJARRA_APP_FACTORY))
              appFactoryClass = appFactoryClass.getSuperclass();
          String appFactoryClassName = appFactoryClass.getCanonicalName();
          if (appFactoryClassName.equals(MYFACES_APP_FACTORY) || appFactoryClassName.equals(MOJARRA_APP_FACTORY)) {
              String implVersion = appFactoryClass.getPackage().getSpecificationVersion();
              if (implVersion != null && !isVersionValid(implVersion)) {
                  IllegalStateException ex = new IllegalStateException(Messages.get("jsf.container.bad.impl.version", appName, requiredSpecVersionRange, implVersion));
                  if (log.isLoggable(Level.SEVERE))
                      log.logp(Level.SEVERE, clazz, m, ex.getMessage(), ex);
                  throw ex;
              }
          }
      }
docs: Get a hold of the archives provides JSF spec API (specifically javax.faces.application.ApplicationFactory)
  and make sure the 'Specification-Version' header in the archive manifest is valid.
  Also do the same check for the JSF implementation (either MYFACES_APP_FACTORY or MOJARRA_APP_FACTORY)
  If the API or Impl versions are bad, blow up.