@RequiresEdt
  public void execute() {
    String message = myChange.isMoved()
                     ? message("confirmation.resolve.tree.conflict.merge.moved", myOldPresentation, myNewPresentation)
                     : message("confirmation.resolve.tree.conflict.merge.renamed", myOldPresentation, myNewPresentation);
    int ok = showOkCancelDialog(myVcs.getProject(), message, message("dialog.title.resolve.tree.conflict"), Messages.getQuestionIcon());
    if (Messages.OK != ok) return;

    FileDocumentManager.getInstance().saveAllDocuments();

    runInBackground(message("progress.title.getting.base.and.theirs.revisions.content"), indicator -> preloadContent());
    runInEdt(this::convertTextPaths);
    runInBackground(message("progress.title.creating.patch.for.theirs.changes"), indicator -> createPatches());
    runInEdt(() -> selectPatchesInApplyPatchDialog(exception -> {
      if (exception == null) {
        runInBackground(message("progress.title.accepting.working.state"), indicator -> resolveConflicts());
        if (myThereAreCreations) {
          runInBackground(message("progress.title.adding.file.to.subversion", myOldPresentation), indicator -> addDirectories());
        }
        runInEdt(this::selectBinaryFiles);
        runInBackground(message("progress.title.applying.binary.changes"), indicator -> applyBinaryChanges());
        runInEdt(this::notifyMergeIsFinished);
      }
      else {
        addError(exception);
        showErrors();
      }
    }));
  }
@RequiresEdt
  public void execute()