private VerticalChoicesPanel createExternalDataTypeConflictPanel(
			final ExternalLocation[] externalLocations, final TaskMonitor monitor) {

		DataType latestDataType = getResultDataType(externalLocations[LATEST]);
		DataType myDataType = getResultDataType(externalLocations[MY]);
		String removeString;
		String changeString;
		if (latestDataType == null) {
			removeString = LATEST_TITLE;
			changeString = MY_TITLE;
		}
		else if (myDataType == null) {
			removeString = MY_TITLE;
			changeString = LATEST_TITLE;
		}
		else {
			removeString = null;
			changeString = null;
		}

		String[] header = getExternalInfo(externalLocations, HEADER);
		String[] latest = getExternalInfo(externalLocations, LATEST);
		String[] my = getExternalInfo(externalLocations, MY);
		String[] original = getExternalInfo(externalLocations, ORIGINAL);

		VerticalChoicesPanel panel = getEmptyVerticalPanel();

		runSwing(() -> {
			panel.setTitle("External Data Type");
			StringBuffer buf = new StringBuffer();
			if (removeString != null) {
				buf.append("External data type was removed in " + removeString +
					" and changed in " + changeString + " /nfor ");
				buf.append(getExternalName(externalLocations, ORIGINAL, true));
				buf.append(".");
			}
			else {
				buf.append(LATEST_TITLE + " and " + MY_TITLE + " both changed data type \nfor ");
				buf.append(getExternalName(externalLocations, ORIGINAL, true));
				buf.append(".");
			}
			panel.setHeader(buf.toString());
			ChangeListener changeListener =
				new ExternalDataTypeConflictChangeListener(externalLocations, panel, monitor);
			panel.setRowHeader(header);
			panel.addRadioButtonRow(latest, LATEST_BUTTON_NAME, KEEP_LATEST, changeListener);
			panel.addRadioButtonRow(my, CHECKED_OUT_BUTTON_NAME, KEEP_MY, changeListener);
			original[0] = ORIGINAL_TITLE + " version"; // Change since original is only info row.
			panel.addInfoRow(original);
		});
		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