public void mergeConflicts(int chosenConflictOption, TaskMonitor monitor)
			throws CancelledException {
		monitor.setMessage("Resolving External Program Name conflicts");
		boolean askUser = (chosenConflictOption == ASK_USER);
		int totalConflicts = extPgms.size();
		monitor.initialize(totalConflicts);
		for (int conflictIndex = 0; conflictIndex < totalConflicts; conflictIndex++) {
			IDGroup idGroup = extPgms.get(conflictIndex);
			if ((externalProgramChoice == ASK_USER) && askUser && mergeManager != null) {
				monitor.checkCancelled();
				showMergePanel(idGroup, monitor);
			}
			else {
				int optionToUse = (externalProgramChoice == ASK_USER) ? chosenConflictOption
						: externalProgramChoice;
				merge(idGroup, optionToUse, monitor);
			}
			monitor.setProgress(conflictIndex + 1);
		}
	}
Performs a manual merge of external program conflicts.
@param chosenConflictOption ASK_USER means interactively resolve conflicts.
JUnit testing also allows setting this to LATEST, MY, or ORIGINAL to force
selection of a particular version change.
@param monitor task monitor for informing the user of progress.
@throws CancelledException if the user cancels the merge.
Ghidra/Features/Base/src/main/java/ghidra/app/merge/listing/ExternalProgramMerger.java