private static Pair<String, String> getVersionUpdate() {
    final String updateVersion = SHELLCHECK_VERSION;
    final SemVer updateVersionVer = SemVer.parseFromText(updateVersion);
    if (updateVersionVer == null) return null;
    if (ShSettings.getSkippedShellcheckVersion().equals(updateVersion)) return null;

    String path = ShSettings.getShellcheckPath();
    if (ShSettings.I_DO_MIND_SUPPLIER.get().equals(path)) return null;
    File file = new File(path);
    if (!file.canExecute()) return null;
    if (!file.getName().contains(SHELLCHECK)) return null;
    try {
      GeneralCommandLine commandLine = new GeneralCommandLine().withExePath(path).withParameters("--version");
      ProcessOutput processOutput = ExecUtil.execAndGetOutput(commandLine, 3000);

      String stdout = processOutput.getStdout();
      String current = getVersionFromStdOut(stdout);
      if (current == null) {
        current = "unknown";
        return Pair.create(current, updateVersion);
      }
      SemVer currentVersion = SemVer.parseFromText(current);
      if (currentVersion == null || updateVersionVer.isGreaterThan(currentVersion)) {
        return Pair.create(current, updateVersion);
      }
      return null;
    }
    catch (ExecutionException e) {
      LOG.debug("Exception in process execution", e);
    }
    return null;
  }
private static Pair<String, String> getVersionUpdate()