docs: private void loadLooseLibTagFiles(String looseLibDir, List loadedLocations, String looseKey) {    //PM07608  //PM03123
          if(logger.isLoggable(Level.FINE)){
              logger.logp(Level.FINE, CLASS_NAME, "loadLooseLibTagFiles", "looseLibDir {0}", looseLibDir);
          }
          
          File looseLibDirFile = new File(looseLibDir);
          String [] list = looseLibDirFile.list();
          
          if (list == null){               						//PM03123  null if not denote a directory (i.e this is a file)
      		list = new String[1];								
      		list[0] = looseLibDir;								
      	}														//PM03123
          
          if (list != null) {
              TagLibraryInfoImpl tli = null;
              for (int j = 0; j < list.length; j++) {
                  String resourcePath = (String) list[j];
                  if (resourcePath.endsWith(".tld")) {
                      if(logger.isLoggable(Level.FINE)){
                              logger.logp(Level.FINE, CLASS_NAME, "loadLooseLibTagFiles", "tld located {0}", resourcePath);
                          }
                          try {
                              URL looseLibURL = new File(looseLibDir).toURL();
                              JspInputSource inputSource = ctxt.getJspInputSourceFactory().createJspInputSource(looseLibURL, resourcePath);
                              tli = tldParser.parseTLD(inputSource, "webinf");
                              if(logger.isLoggable(Level.FINE)){
                                  logger.logp(Level.FINE, CLASS_NAME, "loadLooseLibTagFiles", "tli {0}", tli);
                              }
                          }
                          catch (JspCoreException e) {
                              if(logger.isLoggable(Level.WARNING)){
                                  logger.logp(Level.WARNING, CLASS_NAME, "loadLooseLibTagFiles", "jsp error failed to parse loose library tld . location = ["+looseLibDir+"]", e);
                              }
                          }
                          catch (MalformedURLException e) {
                              if(logger.isLoggable(Level.WARNING)){
                                  logger.logp(Level.WARNING, CLASS_NAME, "loadLooseLibTagFiles", "jsp error failed to parse loose library tld . location = ["+looseLibDir+"]", e);
                              }
                          }
  
                          if (tli != null) {
                              String looseLibURN = tli.getReliableURN();
                              //PM07608
                          	if (looseLibURN == null){
                          		looseKey = looseKey.replace('\\', '/');        // use URI defined in RAD looseLibConfig xml file
                          		looseLibURN = looseKey + "/" + resourcePath;
                          		if(logger.isLoggable(Level.FINE)){
                          			logger.logp(Level.FINE, CLASS_NAME, "loadLooseLibTagFiles", "jsp failed to find a uri sub-element in ["+resourcePath+"], default uri to \""+ looseLibURN+"\"");
                          		}
                          	}
                          	//PM07608
                              if(logger.isLoggable(Level.FINE)){
                                  logger.logp(Level.FINE, CLASS_NAME, "loadLooseLibTagFiles", "Adding TagLibraryInfoImpl for [{0}]", looseLibURN);
                              }
                              
                              put(looseLibURN, tli);
                          }                  
                  }
                  //PM03123 - start
                  else if (resourcePath.endsWith(".jar")){
                  	if(logger.isLoggable(Level.FINE)){
                          logger.logp(Level.FINE, CLASS_NAME, "loadLooseLibTagFiles", "looseLibDir is a jar");
                      }
                      loadTldsFromJar(resourcePath, loadedLocations);
                  }
                  //PM03123 - end 
                  else {
                      //not a tld...maybe it's a directory
                      StringBuffer nestedDir = new StringBuffer(looseLibDir);
                      if (looseLibDir.endsWith("/") || looseLibDir.endsWith("\\")) {
                          nestedDir.append(resourcePath);
                      } else {
                          nestedDir.append("/");
                          nestedDir.append(resourcePath);                     
                      }
                      if (new File(nestedDir.toString()).isDirectory()) {
                      	loadLooseLibTagFiles(nestedDir.toString(), loadedLocations, looseKey);    //PM07608		//PM03123
                      }
                  }
              }
          }
      }