public static boolean tryExecuteMerge(@Nullable Project project,
                                        @NotNull ExternalDiffSettings.ExternalTool externalTool,
                                        @NotNull ThreesideMergeRequest request,
                                        @Nullable JComponent parentComponent) throws IOException {
    return runWithTempMergeFiles(project, request, (outputFile, inputFiles) -> {
      GeneralCommandLine commandLine = createMergeCommandLine(externalTool, outputFile, inputFiles);
      try {
        Process process = commandLine.createProcess();
        return waitMergeProcessWithModal(project, process, externalTool.isMergeTrustExitCode(), parentComponent);
      }
      catch (ExecutionException e) {
        throw new IOException(e);
      }
    });
  }
public static boolean tryExecuteMerge(@Nullable Project project,
                                        @NotNull ExternalDiffSettings.ExternalTool externalTool,
                                        @NotNull ThreesideMergeRequest request,
                                        @Nullable JComponent parentComponent)