class ServletContainerInitializerExtension implements WebApplicationExtension {

    @Override
    public void configure(WebApplication webApplication) {
        LOGGER.log(FINER, "Starting ServletContainerInitializer processing");
        ServiceLoader<ServletContainerInitializer> serviceLoader = ServiceLoader.load(
                ServletContainerInitializer.class, webApplication.getClassLoader());

        for (ServletContainerInitializer initializer : serviceLoader) {
            LOGGER.log(FINE, () -> "Adding initializer: " + initializer.getClass().getName());

            if (shouldAdd(webApplication, initializer)) {
                webApplication.addInitializer(initializer);
            }
        }

        if (this.getClass().getModule().isNamed()) {
            // We are running in a modular environment,
            // the providers from modules aren't available in the webApplication classloader
            serviceLoader = ServiceLoader.load(ServletContainerInitializer.class);
            for (ServletContainerInitializer initializer : serviceLoader) {
                LOGGER.log(FINE, () -> "Adding initializer: " + initializer.getClass().getName());

                if (shouldAdd(webApplication, initializer)) {
                    webApplication.addInitializer(initializer);
                }
            }
        }

        LOGGER.log(FINER, "Finished ServletContainerInitializer processing");
    }

    public  ServletContainerInitializerExtension();
    public  ServletContainerInitializerExtension(boolean excludeExistingInitializers, List<String> ignoreInitializers);

}