docs: public boolean isAvailable(String resource) {
          final boolean isAnyTraceEnabled = com.ibm.ejs.ras.TraceComponent.isAnyTracingEnabled();
          if (isAnyTraceEnabled && logger.isLoggable(Level.FINER)) {
              logger.entering(CLASS_NAME, "isAvailable", "resource [" + resource + "] ");
          } //d651265
          boolean available = false;
          // not sure if needed; after first check for isAvailable, welcome file
          // goes directly to wrapper; can this ever be true?
          RequestProcessor rp = extensionContext.getMappingTarget(resource);
          available = (rp instanceof IServletWrapper); // true if wrapper has
                                                       // already been created.
  
          if (available == false) {
              if (jspOptions.isDisableJspRuntimeCompilation() == false) {
                  try {
                      available = handleCaseSensitivityCheck(resource, false); //PK81387 - passing false
                  } catch (IOException io) {
                      available = false;
                  }
              } else {
                  JspInputSource inputSource = context.getJspInputSourceFactory().createJspInputSource(resource);
                  JspResources jspResources = context.getJspResourcesFactory().createJspResources(inputSource);
  
                  String classname = jspResources.getClassName();
                  String generatedSourceDir = jspResources.getGeneratedSourceFile().getParent();
                  if (generatedSourceDir.endsWith(File.separator) == false) {
                      generatedSourceDir = generatedSourceDir + File.separator;
                  }
                  File tempDirJSP = new File(generatedSourceDir + classname + ".class");
                  available = tempDirJSP.exists();
  
                  if (available == false) {
  
                      String jspUri = inputSource.getRelativeURL();
                      if (jspUri.charAt(0) != '/') {
                          jspUri = "/" + jspUri;
                      }
                      String webinfClassFilePath = null;
                      File webinfClassFile = null;
                      String packageName = null;
                      if (jspOptions.isUseFullPackageNames() == false) {
                          webinfClassFilePath = context.getRealPath("/WEB-INF/classes") + jspUri.substring(0, jspUri.lastIndexOf("/") + 1);
                          webinfClassFile = new File(webinfClassFilePath + File.separator + classname + ".class");
                      } else {
                          packageName = jspResources.getPackageName();
                          String packageDir = packageName.replace('.', '/');
                          webinfClassFilePath = context.getRealPath("/WEB-INF/classes") + "/" + packageDir;
                          webinfClassFile = new File(webinfClassFilePath + File.separator + classname + ".class");
                      }
                      available = webinfClassFile.exists();
                  }
              }
          }
          if (isAnyTraceEnabled && logger.isLoggable(Level.FINE)) {
              logger.exiting(CLASS_NAME, "isAvailable", "resource [" + resource + "] is available? [" + available + "]");
          } //d651265
          return available;
  
      }