protected @NotNull Supplier<GitLineHandler> getHandlerProvider(Project project, GitMergeDialog dialog) {
    VirtualFile root = dialog.getSelectedRoot();
    Set<GitMergeOption> selectedOptions = dialog.getSelectedOptions();
    String commitMsg = dialog.getCommitMessage().trim();
    GitBranch selectedBranch = dialog.getSelectedBranch();

    return () -> {
      GitLineHandler h = new GitLineHandler(project, root, GitCommand.MERGE);

      for (GitMergeOption option : selectedOptions) {
        if (option == GitMergeOption.COMMIT_MESSAGE) {
          if (commitMsg.length() > 0) {
            h.addParameters(option.getOption(), commitMsg);
          }
        }
        else {
          h.addParameters(option.getOption());
        }
      }

      h.addParameters(selectedBranch.getName());

      return h;
    };
  }
protected @NotNull Supplier<GitLineHandler> getHandlerProvider(Project project, GitMergeDialog dialog)