private static DataType findMatchingDataType(DataType comparisonDt,
			DataTypeManager programDTM) {

		// Try to get data type with same full path name.
		DataType oldDataType =
			programDTM.getDataType(comparisonDt.getCategoryPath(), comparisonDt.getName());
		if (oldDataType != null) {
			return oldDataType;
		}

		String name = comparisonDt.getName();
		List<DataType> dataTypes = new ArrayList<>();
		programDTM.findDataTypes(name, dataTypes);
		for (DataType dataType : dataTypes) {
			if (dataType.getLength() != comparisonDt.getLength()) {
				continue;
			}
			// For now this uses the DataType.isEquivalent() method for comparing the 
			// data types. However, the method is still rather rigid. It would be better 
			// if there was another method that were more lenient. The hard part is 
			// determining what types of differences should be deemed equivalent.
			if (dataType.isEquivalent(comparisonDt)) {
				return dataType; // Return the first one we find that matches.
			}
		}
		return null;
	}
Gets the named data type from the program or the windows data type archive. If neither 
the program or data type archive has an equivalent data type then the original data type 
is returned.
@param program the program for the data type.
@param comparisonDt the data type it should match
@return the matching data type
Ghidra/Features/Base/src/main/java/ghidra/app/util/datatype/microsoft/MSDataTypeUtils.java