code: @Override
      public Collection<DependencyInfo> parse(File file) {
          BufferedReader br = null;
          FileReader fr = null;
          Collection<DependencyInfo> dependencyInfos = new LinkedList<>();
          try {
              File[] files = file.listFiles();
              for (File directory : files) {
                  File[] packageDirectories = directory.listFiles();
                  for (File packageDirectory : packageDirectories) {
                      // parse the package name from package directory
                      // get the start index of package name
                      // package Directory Name for
                      int firstHyphenIndex = packageDirectory.getName().indexOf(Constants.DASH);
                      String packageInfoString = packageDirectory.getName().substring(firstHyphenIndex + 1, packageDirectory.getName().length());
                      // change rpm pattern name to application pattern
                      int lastIndexOfHyphen = packageInfoString.lastIndexOf(Constants.DASH);
                      packageInfoString = packageInfoString.substring(0, lastIndexOfHyphen) + Constants.DOT + packageInfoString.substring(lastIndexOfHyphen + 1);
                      // create dependencyInfo object
                      DependencyInfo dependencyInfo = null;
                      String packVersion = getPackageVersion(packageInfoString);
                      if (packVersion != null) {
                          dependencyInfo = new DependencyInfo(
                                  null, MessageFormat.format(RPM_PACKAGE_PATTERN, packageInfoString), packVersion);
                          dependencyInfos.add(dependencyInfo);
                      }
                  }
              }
          } catch (Exception e) {
              logger.warn("Failed to parse {} : {}", file, e.getMessage());
          } finally {
              closeStream(br, fr);
          }
          return dependencyInfos;
      }
docs: /* --- Overridden methods ---