public static DataType getMatchingDataType(Program program, DataType comparisonDt) {

		DataTypeManager programDTM = program.getDataTypeManager();
		DataType matchingDt = findMatchingDataType(comparisonDt, programDTM);
		if (matchingDt == null) {
			try {
				DataTypeManager winDTM = getWinDTM(program);
				if (winDTM != null) {
					matchingDt = findMatchingDataType(comparisonDt, winDTM);
				}
			}
			catch (IOException | DuplicateIdException e) {
				// Can't get data type archive so just do nothing.
			}
		}
		return (matchingDt != null) ? matchingDt.clone(programDTM) : comparisonDt;
	}
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