@Test
	public void testApplyDataDifference3() throws Exception {

		// 0x01003ae1: struct vs union

		Structure struct_c1 = new StructureDataType("struct_c", 0);
		struct_c1.add(new WordDataType());
		struct_c1.add(new FloatDataType());
		programBuilder1.applyDataType("0x01003ae1", struct_c1, 1);

		Union union_c2 = new UnionDataType("union_c");
		union_c2.add(new ByteDataType());
		union_c2.add(new PointerDataType(new DWordDataType()));
		union_c2.add(new DWordDataType());
		programBuilder2.applyDataType("0x01003ae1", union_c2, 1);

		programMerge = new ProgramMergeManager(p1, p2);
		assertEquals(new AddressSet(addr(0x01003ae1), addr(0x01003ae6)),
			programMerge.getFilteredDifferences());
		mergeCodeUnitDifference(0x01003ae1, 0x01003ae6);
		assertEquals(new AddressSet(), programMerge.getFilteredDifferences());
	}
Test that programMerge can apply a conflicting data type difference in
Program1 and Program2.
Ghidra/Features/Base/src/test.slow/java/ghidra/program/util/ProgramMerge3Test.java