public final boolean excludeProjectPaths(@NotNull Project project, @NotNull List<Path> paths) {
    logCaller("paths=" + paths);

    try {
      var script = PathManager.findBinFile(HELPER_SCRIPT_NAME);
      if (script == null) {
        LOG.info("'" + HELPER_SCRIPT_NAME + "' is missing from '" + PathManager.getBinPath() + "'");
        return false;
      }

      var psh = PathEnvironmentVariableUtil.findInPath("powershell.exe");
      if (psh == null) psh = PathEnvironmentVariableUtil.findInPath("pwsh.exe");
      if (psh == null) {
        LOG.info("no 'powershell.exe' or 'pwsh.exe' on " + PathEnvironmentVariableUtil.getPathVariableValue());
        return false;
      }
      var pshPath = psh.toPath();
      var sane = Stream.of("SystemRoot", "ProgramFiles").map(System::getenv).anyMatch(val -> val != null && pshPath.startsWith(val));
      if (!sane) {
        LOG.info("suspicious 'powershell.exe' location: " + psh);
        return false;
      }

      var scriptlet = "(Get-AuthenticodeSignature '" + script.toString().replace("'", "''") + "').Status";
      var command = new ProcessBuilder(psh.getPath(), "-NoProfile", "-NonInteractive", "-Command", scriptlet);
      var start = System.nanoTime();
      var output = run(command, Charset.defaultCharset());
      if (output.getExitCode() != 0) {
        logProcessError("validation failed", command, start, output);
        return false;
      }
      var status = output.getStdout().trim();
      if ("NotSigned".equals(status) && ApplicationInfo.getInstance().getBuild().isSnapshot()) {
        LOG.info("allowing unsigned helper in dev. build " + ApplicationInfo.getInstance().getBuild());
      }
      else if (!"Valid".equals(status)) {
        LOG.info("validation failed: status='" + status + "'");
        return false;
      }

      var launcher = PathManager.findBinFileWithException("launcher.exe");
      command = new ProcessBuilder(Stream.concat(
        Stream.of(launcher.toString(), psh.getPath(), "-ExecutionPolicy", "Bypass", "-NoProfile", "-NonInteractive", "-File", script.toString()),
        paths.stream().map(Path::toString)
      ).toList());
      start = System.nanoTime();
      output = run(command, StandardCharsets.UTF_8);
      if (output.getExitCode() != 0) {
        logProcessError("exclusion failed", command, start, output);
        return false;
      }
      else {
        LOG.info("OK; script output:\n" + output.getStdout().trim());
        PropertiesComponent.getInstance(project).setValue(IGNORE_STATUS_CHECK, true);
        return true;
      }
    }
    catch (Exception e) {
      LOG.warn(e);
      return false;
    }
  }
public final boolean excludeProjectPaths(@NotNull Project project, @NotNull List<Path> paths)