private void setupConflictPanel(final ListingMergePanel listingPanel,
			final ConflictPanel conflictPanel, final ExternalLocation[] externalLocations,
			final TaskMonitor monitor) {

		if (conflictPanel == null) {
			MergeManager.showBlockingError("Error Displaying Conflict Panel",
				"The conflict panel could not be created.");
			return;
		}

		this.currentMonitor = monitor;
		this.currentConflictPanel = conflictPanel;

		Swing.runNow(() -> listingPanel.setBottomComponent(conflictPanel));

		if (mergeManager != null) {
			mergeManager.setApplyEnabled(false);

			Address resultAddress = (externalLocations[RESULT] != null)
					? externalLocations[RESULT].getExternalSpaceAddress()
					: null;
			Address latestAddress = (externalLocations[LATEST] != null)
					? externalLocations[LATEST].getExternalSpaceAddress()
					: null;
			Address myAddress =
				(externalLocations[MY] != null) ? externalLocations[MY].getExternalSpaceAddress()
						: null;
			Address originalAddress = (externalLocations[ORIGINAL] != null)
					? externalLocations[ORIGINAL].getExternalSpaceAddress()
					: null;
			mergeManager.showListingMergePanel(resultAddress, latestAddress, myAddress,
				originalAddress);
		}
		// block until the user either cancels or hits the "Apply" button
		// on the merge dialog...
		// when the "Apply" button is hit, get the user's selection
		// and continue.
	}
Removes the indicated external from the result program.
@param sourceProgram the program that is the source of the external location
(Either Latest, My, or Original program.)
@param sourceExternalLocation the external location that indicates which external
is to be removed from the result. (External is from Latest, My, or Original program.)
Ghidra/Features/Base/src/main/java/ghidra/app/merge/listing/ExternalFunctionMerger.java