code: protected static List<CustomManifest> findCustomEncryption(List<File> rootDirs, String path) throws IOException {
          List<CustomManifest> list = new ArrayList<CustomManifest>();
          for (File dir : rootDirs) {
              dir = new File(dir, path);
              if (exists(dir)) {
                  File[] files = listFiles(dir);
                  if (files != null) {
                      for (File file : files) {
                          if (isFile(file) && file.getName().toLowerCase().endsWith(JAR_FILE_EXT)) {
                              if (logger.isLoggable(Level.FINE)) {
                                  logger.fine("The extension manifest file : " + file);
                              }
                              try {
                                  CustomManifest cm = new CustomManifest(file);
                                  list.add(cm);
                              } catch (IllegalArgumentException iae) {
                                  if (logger.isLoggable(Level.INFO)) {
                                      logger.info(MessageUtils.getMessage("PASSWORDUTIL_ERROR_IN_EXTENSION_MANIFEST_FILE", file, iae.getMessage()));
                                  }
                              }
                          }
                      }
                  }
              }
          }
          return list;
      }
docs: Find the custom encryption manifest files from the specified list of root directories and path name.
  The reason why there are multiple root directories is that the product extensions which will allow to
  add the additional root directory anywhere.
  
  @throws IOException