docs: public WebAppFilterChain getFilterChain(ServletRequest request, String reqURI, RequestProcessor requestProcessor, DispatcherType dispatcherType) throws ServletException {
          // strip uri?
          String processorName = "null";
          boolean isInternal = false;
          if (requestProcessor != null) {
              if (requestProcessor instanceof IServletWrapper) {
                  String tempProcessorName = ((IServletWrapper) requestProcessor).getServletName();
                  if (tempProcessorName != null) {
                      processorName = tempProcessorName;
                  }
              }
              isInternal = requestProcessor.isInternal();
          }
  
          if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && logger.isLoggable(Level.FINE)) { // 306998.15
              logger.logp(Level.FINE, CLASS_NAME, "getFilterChain", "requestURI [" + reqURI + "] isInternal [" + isInternal + "]");
          }
  
          FilterChainContents fcc = getFilterChainContents(reqURI, processorName, dispatcherType, isInternal);
  
          // instantiate and populate a filter chain for this uri
          // PK02277: New constructor to set the WebApp
          WebAppFilterChain newChain = new WebAppFilterChain(webApp);
  
          // if the chain has filters, add them to the new filter chain
          int nbrOfNames = 0; // PM50111
          if (fcc._hasFilters) {
              // add filter wrappers to this chain
              ArrayList filterNames = fcc.getFilterNames();
  
              nbrOfNames = filterNames.size();
              for (int i = 0; i < nbrOfNames; i++)
                  newChain.addFilter(getFilterInstanceWrapper((String) filterNames.get(i)));
          }
          //PM50111 Start
          if(nbrOfNames > 0 )  {          
              WebContainerRequestState reqStateSaveFilteredRequest = WebContainerRequestState.getInstance(true);   
              reqStateSaveFilteredRequest.setInvokedFilters(true);
              //PM88028 // save of the request in reqState                            
              if(useOriginalRequestState){                    
                  reqStateSaveFilteredRequest.setAttribute("unFilteredRequestObject", request);   
                  if (com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled() && logger.isLoggable(Level.FINE)) { 
                      logger.logp(Level.FINE, CLASS_NAME, "getFilterChain", "request ["+ request+ "] ,requestURI [" + reqURI + "] has filters [" + nbrOfNames + "]");
                  }
              }
          }
          else
              WebContainerRequestState.getInstance(true).setInvokedFilters(false);
          //PM50111 End
  
  
          // set the target servlet
          newChain.setRequestProcessor(requestProcessor);
  
          return newChain;
      }