@Override
	public void merge(TaskMonitor monitor) throws ProgramConflictException, MemoryAccessException {
		mergeManager.setInProgress(LISTING_PHASE);
		// This manager will need to update the phase progress for each sub-phase.

		initMergeInfo();
		if (mergeManager != null) {
			mergePanel = mergeManager.getListingMergePanel();
			if (conflictInfoPanel == null) {
				conflictInfoPanel = new ConflictInfoPanel();
			}
			mergePanel.setTopComponent(conflictInfoPanel);
		}
		try {
			this.currentStatusMonitor = monitor;

			int transactionID = programs[RESULT].startTransaction("Merge Listing");
			boolean commit = false;
			try {
				mergeManager.showProgressIcon(true);
				monitor.setMessage("Initializing Listing Merge Managers...");
				initializeMergers();
				removeBottomComponent();

				mergeCodeUnits(monitor);
				mergeExternalFunctions(monitor);
				mergeFunctions(monitor);
				mergeSymbols(monitor);
				mergeAddressBasedProgramItems(monitor);

				currentMerger = null;
				commit = true;
			}
			catch (CancelledException e1) {
				mergeManager.setStatusText("User cancelled merge.");
				cancel();
			}
			finally {
				programs[RESULT].endTransaction(transactionID, commit);
			}
		}
		finally {
			monitor = null;
		}
		mergeManager.setCompleted(LISTING_PHASE);
	}
Manages listing changes and conflicts between the latest versioned
program and the modified program being checked into version control.
@param mergeManager the top level merge manager for merging a program version.
@param resultPgm the program to be updated with the result of the merge.
This is the program that will actually get checked in.
@param originalPgm the program that was checked out.
@param latestPgm the latest checked-in version of the program.
@param myPgm the program requesting to be checked in.
@param latestChanges the address set of changes between original and latest versioned program.
@param myChanges the address set of changes between original and my modified program.
Ghidra/Features/Base/src/main/java/ghidra/app/merge/listing/ListingMergeManager.java