private void mergeCodeUnits(TaskMonitor monitor)
			throws ProgramConflictException, MemoryAccessException, CancelledException {

		displayInitialPhaseMessage(CODE_UNITS_PHASE, "Merge of Byte & Code Unit changes");

		AbstractListingMerger[] mergers = new AbstractListingMerger[] { cuMerge };
		autoMerge(mergers, monitor);

		currentMerger = cuMerge;
		mergeManager.showProgressIcon(false);

		cuMerge.mergeConflicts(this.mergePanel, conflictOption, monitor);

		mergeManager.showProgressIcon(true);
		removeBottomComponent();
		mergeManager.setCompleted(CODE_UNITS_PHASE);
	}
Performs autoMerge of bytes and code units followed by merge of byte and code unit conflicts.
@param monitor the task monitor for canceling the merge
@throws ProgramConflictException if programs can't be compared using Diff.
@throws MemoryAccessException if bytes can't be merged.
@throws CancelledException if the user cancels the merge.
Ghidra/Features/Base/src/main/java/ghidra/app/merge/listing/ListingMergeManager.java