Buggy code:
public static final String UNDERTOW = "undertow" ; private DeploymentInfo deploymentInfo ; private final JBossWebMetaData mergedMetaData ; private final String deploymentName ; private final TldsMetaData tldsMetaData ; private final List < TldMetaData > sharedTlds ; private final Module module ; private final ScisMetaData scisMetaData ; private final VirtualFile deploymentRoot ; private final String jaccContextId ; private final String securityDomain ; private final List < ServletContextAttribute > attributes ; private final String contextPath ; private final List < SetupAction > setupActions ; private final Set < VirtualFile > overlays ; private final List < ExpressionFactoryWrapper > expressionFactoryWrappers ; private final List < PredicatedHandler > predicatedHandlers ; private final List < HandlerWrapper > initialHandlerChainWrappers ; private final List < HandlerWrapper > innerHandlerChainWrappers ; private final List < HandlerWrapper > outerHandlerChainWrappers ; private final List < ThreadSetupAction > threadSetupActions ; private final List < ServletExtension > servletExtensions ; private final SharedSessionManagerConfig sharedSessionManagerConfig ; private final boolean explodedDeployment ; private final InjectedValue < UndertowService > undertowService = new InjectedValue ( ) ; private final InjectedValue < SessionManagerFactory > sessionManagerFactory = new InjectedValue ( ) ; private final InjectedValue < SessionIdentifierCodec > sessionIdentifierCodec = new InjectedValue ( ) ; private final InjectedValue < SecurityDomainContext > securityDomainContextValue = new InjectedValue < SecurityDomainContext > ( ) ; private final InjectedValue < ServletContainerService > container = new InjectedValue ( ) ; private final InjectedValue < ComponentRegistry > componentRegistryInjectedValue = new InjectedValue ( ) ; private final InjectedValue < Host > host = new InjectedValue ( ) ; private final InjectedValue < ControlPoint > controlPointInjectedValue = new InjectedValue ( ) ; private final Map < String , InjectedValue < Executor > > executorsByName = new HashMap < String , InjectedValue < Executor > > ( ) ; private final String topLevelDeploymentName ; private final WebSocketDeploymentInfo webSocketDeploymentInfo ; private final File tempDir ; private UndertowDeploymentInfoService ( final JBossWebMetaData mergedMetaData , final String deploymentName , final TldsMetaData tldsMetaData , final List < TldMetaData > sharedTlds , final Module module , final ScisMetaData scisMetaData , final VirtualFile deploymentRoot , final String jaccContextId , final String securityDomain , final List < ServletContextAttribute > attributes , final String contextPath , final List < SetupAction > setupActions , final Set < VirtualFile > overlays , final List < ExpressionFactoryWrapper > expressionFactoryWrappers , List < PredicatedHandler > predicatedHandlers , List < HandlerWrapper > initialHandlerChainWrappers , List < HandlerWrapper > innerHandlerChainWrappers , List < HandlerWrapper > outerHandlerChainWrappers , List < ThreadSetupAction > threadSetupActions , boolean explodedDeployment , List < ServletExtension > servletExtensions , SharedSessionManagerConfig sharedSessionManagerConfig , String topLevelDeploymentName , WebSocketDeploymentInfo webSocketDeploymentInfo , File tempDir ) { } @ Override public synchronized void start ( final StartContext startContext ) throws StartException { } private void handleAuthManagerLogout ( DeploymentInfo deploymentInfo , JBossWebMetaData mergedMetaData ) { } @ Override public synchronized void stop ( final StopContext stopContext ) { } @ Override public synchronized DeploymentInfo getValue ( ) throws IllegalArgumentException , IllegalStateException { } private void handleJASPIMechanism ( final DeploymentInfo deploymentInfo ) { } private void handleJACCAuthorization ( final DeploymentInfo deploymentInfo ) { } private void handleAdditionalAuthenticationMechanisms ( final DeploymentInfo deploymentInfo ) { } private void handleIdentityManager ( final DeploymentInfo deploymentInfo ) { } private ConfidentialPortManager getConfidentialPortManager ( ) { } private void handleDistributable ( final DeploymentInfo deploymentInfo ) { } private String resolveContextPath ( ) { } private DeploymentInfo createServletConfig ( ) throws StartException { final ComponentRegistry componentRegistry = componentRegistryInjectedValue . getValue ( ) ; try { if ( ! ( mergedMetaData . isMetadataComplete ( ) ) ) { mergedMetaData . resolveAnnotations ( ) ; } final DeploymentInfo d = new DeploymentInfo ( ) ; d . setContextPath ( resolveContextPath ( ) ) ; if ( ( mergedMetaData . getDescriptionGroup ( ) ) != null ) { d . setDisplayName ( mergedMetaData . getDescriptionGroup ( ) . getDisplayName ( ) ) ; } d . setDeploymentName ( deploymentName ) ; d . setHostName ( host . getValue ( ) . getName ( ) ) ; final ServletContainerService servletContainer = container . getValue ( ) ; try { <START_BUG> ResourceManager resourceManager = new ServletResourceManager ( deploymentRoot , overlays , explodedDeployment ) ; <END_BUG> resourceManager = new io . undertow . server . handlers . resource . CachingResourceManager ( 100 , ( ( 10 * 1024 ) * 1024 ) , servletContainer . getBufferCache ( ) , resourceManager , ( explodedDeployment ? 2000 : - 1 ) ) ; d . setResourceManager ( resourceManager ) ; } catch ( IOException e ) { throw new StartException ( e ) ; } d . setTempDir ( tempDir ) ; d . setClassLoader ( module . getClassLoader ( ) ) ; final String servletVersion = mergedMetaData . getServletVersion ( ) ; if ( servletVersion != null ) { d . setMajorVersion ( Integer . parseInt ( ( ( servletVersion . charAt ( 0 ) ) + "" ) ) ) ; d . setMinorVersion ( Integer . parseInt ( ( ( servletVersion . charAt ( 2 ) ) + "" ) ) ) ; } else { d . setMajorVersion ( 3 ) ; d . setMinorVersion ( 1 ) ; } d . setIgnoreFlush ( servletContainer . isIgnoreFlush ( ) ) ; d . setEagerFilterInit ( servletContainer . isEagerFilterInit ( ) ) ; d . setAllowNonStandardWrappers ( servletContainer . isAllowNonStandardWrappers ( ) ) ; d . setServletStackTraces ( servletContainer . getStackTraces ( ) ) ; d . setDisableCachingForSecuredPages ( servletContainer . isDisableCachingForSecuredPages ( ) ) ; if ( ( servletContainer . getSessionPersistenceManager ( ) ) != null ) { d . setSessionPersistenceManager ( servletContainer . getSessionPersistenceManager ( ) ) ; } boolean is22OrOlder ; if ( ( d . getMajorVersion ( ) ) == 1 ) { is22OrOlder = true ; } else if ( ( d . getMajorVersion ( ) ) == 2 ) { is22OrOlder = ( d . getMinorVersion ( ) ) < 3 ; } else { is22OrOlder = false ; } JSPConfig jspConfig = servletContainer . getJspConfig ( ) ;

Fix:
ResourceManager resourceManager = new ServletResourceManager ( deploymentRoot , overlays , explodedDeployment , mergedMetaData . isSymbolicLinkingEnabled ( ) ) ;