private boolean hasExternalAddConflicts(ExternalLocation externalLocation1,
			ExternalLocation externalLocation2) {

		if ((externalLocation1 == null) || (externalLocation2 == null)) {
			throw new IllegalArgumentException("External location can't be null.");
		}

		// Neither is null so lets compare them.

		Namespace namespace1 = externalLocation1.getParentNameSpace();
		String label1 = externalLocation1.getLabel();
		boolean label1IsDefault = hasDefaultExternalName(externalLocation1);
		DataType dataType1 = getResultDataType(externalLocation1);
		boolean dataType1IsDefined = hasDefinedDataType(externalLocation1);
		Address address1 = externalLocation1.getAddress();
//		SourceType sourceType1 = externalLocation1.getSource();
//		Symbol symbol1 = externalLocation1.getSymbol();
//		SymbolType symbolType1 = symbol1.getSymbolType();
		Function function1 = externalLocation1.getFunction();
		String originalName1 = externalLocation1.getOriginalImportedName();
		boolean external1IsFunction = function1 != null;

		Namespace namespace2 = externalLocation2.getParentNameSpace();
		String label2 = externalLocation2.getLabel();
		boolean label2IsDefault = hasDefaultExternalName(externalLocation2);
		DataType dataType2 = getResultDataType(externalLocation2);
		boolean dataType2IsDefined = hasDefinedDataType(externalLocation2);
		Address address2 = externalLocation2.getAddress();
//		SourceType sourceType2 = externalLocation2.getSource();
//		Symbol symbol2 = externalLocation2.getSymbol();
//		SymbolType symbolType2 = symbol2.getSymbolType();
		String originalName2 = externalLocation2.getOriginalImportedName();
		Function function2 = externalLocation2.getFunction();
		boolean external2IsFunction = function2 != null;

		if (!equivalentNamespaces(namespace1, namespace2)) {
			return true;
		}
		if (!label1IsDefault && !label2IsDefault &&
			isNameConflict(label1, label2, originalName1, originalName2)) {
			return true;
		}
//		if (!SystemUtilities.isEqual(sourceType1, sourceType2)) {
//			return true;
//		}
		if ((address1 != null) && (address2 != null) &&
			!SystemUtilities.isEqual(address1, address2)) {
			return true;
		}
		if (dataType1IsDefined && dataType2IsDefined && !isSameDataType(dataType1, dataType2)) {
			return true;
		}
		if ((dataType1IsDefined && external2IsFunction) ||
			(dataType2IsDefined && external1IsFunction)) {
			return true;
		}
		if (external1IsFunction && external2IsFunction &&
			hasExternalFunctionAddConflicts(function1, function2)) {
			return true;
		}

		return false;
	}
@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