docs: private InstalledIFixInformation findInstalledIFixes(File wlpInstallationDirectory, CommandConsole console, boolean verbose) {
          InstalledIFixInformation installedIFixInformation = new InstalledIFixInformation();
          Set<IFixInfo> iFixInfos = IFixUtils.getInstalledIFixes(wlpInstallationDirectory, console);
  
          // We only want iFixes that are applicable to the current version of the install. First we need to know what the current version is so get this now.
          Version productVersion = null;
          try {
              productVersion = getProductVersion(wlpInstallationDirectory);
          } catch (VersionParsingException e) {
              /*
               * We won't be able to do any version checking without a version. Not the end of the world but should give a message to the user warning them some iFixes that we have
               * checked are not relevant
               */
              console.printlnErrorMessage(getMessage("compare.version.parsing.error", e.getMessage()));
          }
  
          // Go through the iFixes checking they are valid and adding them to the appropriate map
          for (IFixInfo iFixInfo : iFixInfos) {
              try {
                  if (!isIFixFileListValid(iFixInfo, wlpInstallationDirectory)) {
                      installedIFixInformation.iFixesWithMissingFiles.add(iFixInfo.getId());
                      continue;
                  }
              } catch (ParseException e) {
                  /*
                   * If there was an error getting the parsing the dates from this file then print out an error message then continue as we have to assume that this iFix is valid if
                   * we can't tell otherwise
                   */
                  installedIFixInformation.iFixesWithInvalidXml.add(iFixInfo.getId());
                  if (verbose) {
                      console.printlnErrorMessage(getMessage("compare.ifix.file.parse.error", iFixInfo.getId()));
                  }
              }
  
              try {
                  if (!isIFixApplicable(productVersion, iFixInfo)) {
                      installedIFixInformation.inapplicableIFixes.add(iFixInfo.getId());
                      continue;
                  }
              } catch (VersionParsingException e) {
                  /*
                   * If there was an error getting the version from this file then print out an error message then continue as we have to assume that this iFix is valid if we can't
                   * tell otherwise
                   */
                  installedIFixInformation.iFixesWithInvalidXml.add(iFixInfo.getId());
                  if (verbose) {
                      console.printlnErrorMessage(e.getMessage());
                  }
              }
  
              Resolves resolves = iFixInfo.getResolves();
              if (resolves == null) {
                  installedIFixInformation.iFixesWithInvalidXml.add(iFixInfo.getId());
                  if (verbose) {
                      console.printlnErrorMessage(getMessage("compare.no.apar", iFixInfo.getId()));
                  }
                  continue;
              }
              List<Problem> problems = resolves.getProblems();
              if (problems == null) {
                  installedIFixInformation.iFixesWithInvalidXml.add(iFixInfo.getId());
                  if (verbose) {
                      console.printlnErrorMessage(getMessage("compare.no.apar", iFixInfo.getId()));
                  }
                  continue;
              }
              for (Problem problem : problems) {
                  String problemId = problem.getDisplayId();
                  if (problemId != null && !problemId.isEmpty()) {
                      Set<String> iFixesForThisApar = installedIFixInformation.validIFixes.get(problemId);
                      if (iFixesForThisApar == null) {
                          iFixesForThisApar = new HashSet<String>();
                          installedIFixInformation.validIFixes.put(problemId, iFixesForThisApar);
                      }
                      iFixesForThisApar.add(iFixInfo.getId());
                  }
              }
          }
          return installedIFixInformation;
      }