private void mergeExternalDataType(ExternalLocation[] externalLocations,
			int chosenConflictOption, TaskMonitor monitor) throws CancelledException {

		ExternalLocation chosenExternalLocation;
		if ((chosenConflictOption & KEEP_ORIGINAL) != 0) {
//			chosenExternalLocation = externalLocations[ORIGINAL];
			MergeManager.showBlockingError("Error Merging External Location",
				"Can't currently merge external data type from ORIGINAL program." +
					((externalLocations[ORIGINAL] != null)
							? (" ORIGINAL external was " + externalLocations[ORIGINAL].getLabel() +
								".")
							: ""));
			return;
		}
		else if ((chosenConflictOption & KEEP_LATEST) != 0) {
			chosenExternalLocation = externalLocations[LATEST];
		}
		else if ((chosenConflictOption & KEEP_MY) != 0) {
			chosenExternalLocation = externalLocations[MY];
		}
		else {
//			chosenExternalLocation = null;
			MergeManager.showBlockingError("Error Merging External Location",
				"Can only merge external data type from LATEST or MY program." +
					((externalLocations[RESULT] != null)
							? (" RESULT external was " + externalLocations[RESULT].getLabel() + ".")
							: ""));
			return;
		}
		replaceExternalDataType(externalLocations[RESULT], chosenExternalLocation, monitor);
	}
@param entry
@param type (FUNC_RETURN_TYPE, FUNC_RETURN_ADDRESS_OFFSET,
FUNC_PARAMETER_OFFSET, FUNC_LOCAL_SIZE, FUNC_STACK_PURGE_SIZE, FUNC_NAME, FUNC_INLINE,
FUNC_NO_RETURN, FUNC_CALLING_CONVENTION)
@param latestMyChanges
@param originalLatestChanges
@param originalMyChanges
@param monitor
@return
@throws CancelledException
Ghidra/Features/Base/src/main/java/ghidra/app/merge/listing/ExternalFunctionMerger.java