private VariousChoicesPanel createExternalDetailConflictPanel(
			final ExternalLocation[] locations, int conflicts, final TaskMonitor monitor) {

		VariousChoicesPanel panel = getEmptyVariousPanel();

		Address resultExternalAddress =
			(locations[RESULT] != null) ? locations[RESULT].getExternalSpaceAddress() : null;
		Address latestExternalAddress =
			(locations[LATEST] != null) ? locations[LATEST].getExternalSpaceAddress() : null;
		Address myExternalAddress =
			(locations[MY] != null) ? locations[MY].getExternalSpaceAddress() : null;
		Address originalExternalAddress =
			(locations[ORIGINAL] != null) ? locations[ORIGINAL].getExternalSpaceAddress() : null;

		// Set up address translator information for any ProgramMerge method calls.
		myAddressTranslator.setPair(resultExternalAddress, myExternalAddress);
		latestAddressTranslator.setPair(resultExternalAddress, latestExternalAddress);
		originalAddressTranslator.setPair(resultExternalAddress, originalExternalAddress);

		runSwing(() -> {
			panel.setTitle("External Detail");
			String typeString;
			String addressString;
			String label;
			if (locations[ORIGINAL] != null) {
				typeString = ORIGINAL_TITLE;
				label = locations[ORIGINAL].getSymbol().getName(true);
				Address address = locations[ORIGINAL].getAddress();
				addressString = (address != null)
						? (" associated with external memory address '" +
							ConflictUtility.getAddressString(address, true) + "'")
						: "";
			}
			else {
				typeString = RESULT_TITLE;
				label = locations[RESULT].getLabel();
				Address address = locations[RESULT].getAddress();
				addressString = (address != null)
						? (" associated with external memory address '" +
							ConflictUtility.getAddressString(address, true) + "'")
						: "";
			}
			String text = "Detail conflicts need to be resolved for the " + typeString +
				" external '" + ConflictUtility.getEmphasizeString(label) + "'" + addressString +
				".<br>Make a choice for each conflict type.";
			panel.setHeader(text);
			panel.addInfoRow("Conflict", new String[] { LATEST_TITLE, MY_TITLE }, true);

			if ((conflicts & EXTERNAL_NAMESPACE) != 0) {
				Namespace latestNamespace = locations[LATEST].getParentNameSpace();
				Namespace myNamespace = locations[MY].getParentNameSpace();
				String latest = latestNamespace.getName(true);
				String my = myNamespace.getName(true);
				panel.addSingleChoice("Namespace", new String[] { latest, my },
					new ExternalDetailChangeListener(EXTERNAL_NAMESPACE, locations, panel,
						monitor));
			}
			if ((conflicts & EXTERNAL_LABEL) != 0) {
				String latest = locations[LATEST].getLabel();
				String my = locations[MY].getLabel();
				panel.addSingleChoice("Name", new String[] { latest, my },
					new ExternalDetailChangeListener(EXTERNAL_LABEL, locations, panel, monitor));
			}
			if ((conflicts & EXTERNAL_ADDRESS) != 0) {
				Address latestAddress = locations[LATEST].getAddress();
				Address myAddress = locations[MY].getAddress();
				String latest = (latestAddress != null) ? latestAddress.toString() : null;
				String my = (myAddress != null) ? myAddress.toString() : null;
				panel.addSingleChoice("Address", new String[] { latest, my },
					new ExternalDetailChangeListener(EXTERNAL_ADDRESS, locations, panel, monitor));
			}
//		// SourceType is handled along with Label.
//		if ((conflicts & EXTERNAL_SOURCE_TYPE) != 0) {
//			String latest = locations[LATEST].getSource().getDisplayString();
//			String my = locations[MY].getSource().getDisplayString();
////			String original = locations[ORIGINAL].getSource().getDisplayString();
//			panel.addSingleChoice("Source Type", new String[] { latest, my },
//				new ExternalDetailChangeListener(EXTERNAL_SOURCE_TYPE, locations, panel, monitor));
//		}
			if ((conflicts & EXTERNAL_DATA_TYPE) != 0) {
				DataType latestResultDt = getResultDataType(locations[LATEST]);
				DataType myResultDt = getResultDataType(locations[MY]);
				String latest = (latestResultDt != null) ? latestResultDt.getName() : "";
				String my = (myResultDt != null) ? myResultDt.getName() : "";
				panel.addSingleChoice("Data Type", new String[] { latest, my },
					new ExternalDetailChangeListener(EXTERNAL_DATA_TYPE, locations, panel,
						monitor));
			}
			// Types and Functions are handled elsewhere.

		});
		return panel;
	}
Gets the external locations (result, latest, my, original) for the specified MY program
external space address.<br>
NOTE: Be careful where you call this method from. It is intended to be used for external
location changes only (not for Adds). It gets the ORIGINAL based on MY and then LATEST and
RESULT based on the ORIGINAL.
@param myAddress the MY program external space address for MY external location
@return all four program's external locations.
Ghidra/Features/Base/src/main/java/ghidra/app/merge/listing/ExternalFunctionMerger.java