private DataType getResultDataType(long dtID, Program fromPgm) {
		DataType dt = null;
		if (fromPgm == myPgm) {
			dt = myResolvedDts.get(dtID);
			if (dt == null) {
				DataType origDt = originalPgm.getDataTypeManager().getDataType(dtID);
				if (origDt != null) {
					dt = resultPgm.getDataTypeManager().getDataType(dtID);
				}
			}
		}
		else if (fromPgm == latestPgm) {
			dt = resultPgm.getDataTypeManager().getDataType(dtID);
		}
		else if (fromPgm == originalPgm) {
			dt = origResolvedDts.get(dtID);
		}
		else if (fromPgm == resultPgm) {
			dt = resultPgm.getDataTypeManager().getDataType(dtID);
		}
		if (dt == null) {
			dt = fromPgm.getDataTypeManager().getDataType(dtID);
		}
		return dt;
	}
<CODE>performMergeData</CODE> merges the indicated defined data
into the merge program. The bytes in the merge program are not affected
by this method.

@param data the defined data to be merged
@param copyBytes whether or not bytes should be copied.
@throws CodeUnitInsertionException if the defined data can't be created
in the merge program.
Ghidra/Features/Base/src/main/java/ghidra/app/merge/listing/CodeUnitMerger.java