private DataType getResolvedParam(long id, long paramDatatypeID, DataType sourceParamDataType,
			int index, MyIdentityHashMap<Long, DataType> resolvedDataTypes) {
		DataType resolvedDt = getResolvedComponent(paramDatatypeID, resolvedDataTypes);
		if (resolvedDt == null) {
			if (!myDtAddedList.contains(Long.valueOf(paramDatatypeID))) {

				// Not added so should be in result if it wasn't deleted there.
				DataType resultsDt = dtms[RESULT].getDataType(paramDatatypeID);
				if (resultsDt != null) {
					resolvedDt = resultsDt;
				}
				else {
					// must  have been deleted in LATEST
					// put an entry in RESULT for later fixup if
					// it is in conflict
					resolvedDt = DataType.DEFAULT;
					FixUpInfo info = new FixUpInfo(id, paramDatatypeID, sourceParamDataType, index,
						resolvedDataTypes);
					fixUpList.add(info);
					fixUpIDSet.add(id);
				}
			}
			else {
				// Not added/resolved yet
				// put an entry in RESULT for later fixup
				resolvedDt = DataType.DEFAULT;
				fixUpList.add(new FixUpInfo(id, paramDatatypeID, sourceParamDataType, index,
					resolvedDataTypes));
				fixUpIDSet.add(id);
			}
		}
		return resolvedDt;
	}
Get the resolved data type for either the return type or a variable.
@param id id of FunctionDefinition
@param paramDatatypeID ID of either the return or variable dataty type ID
@param sourceParamDataType source param datatype
@param index &gt;=0 is the index of the variable; <0 means the paramID is
the return type
@param resolvedDataTypes hashtable to use for resolving
@return resolved data type or the default data type if the data type
has not been resolved yet
Ghidra/Features/Base/src/main/java/ghidra/app/merge/datatypes/DataTypeMergeManager.java