Supplier<GitLineHandler> (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; }; }