@Test
	public void testApplyByteAndCodeUnitDifferencesSamePrototypeDiffByte() throws Exception {

		programBuilder1.clearCodeUnits("0x01002cf8", "0x01002cfb", false);
		programBuilder1.setBytes("0x01002cf8", "3b 74 24 08", true);

		programBuilder2.clearCodeUnits("0x01002cf8", "0x01002cfb", false);
		programBuilder2.setBytes("0x01002cf8", "3b 74 24 0c", true);

		// p1 & p2 differ at byte at 0x01002cfb.
		programMerge = new ProgramMergeManager(p1, p2);
		programMerge.setDiffFilter(new ProgramDiffFilter(
			ProgramDiffFilter.BYTE_DIFFS | ProgramDiffFilter.CODE_UNIT_DIFFS));
		programMerge.setMergeFilter(new ProgramMergeFilter(
			ProgramMergeFilter.BYTES | ProgramMergeFilter.CODE_UNITS, ProgramMergeFilter.REPLACE));
		AddressSet as = new AddressSet();
		as.addRange(addr(0x01002cf8), addr(0x01002cfb));
		assertEquals(as, programMerge.getFilteredDifferences());
		programMerge.merge(as, TaskMonitor.DUMMY);

		AddressSet unMergableByteAddresses = new AddressSet();// None that can't merge.
		assertEquals(unMergableByteAddresses, programMerge.getFilteredDifferences());
	}
Test that ProgramMerge can apply the byte differences between Program1
and Program2 when merging bytes and code units both when the bytes differ for an
instruction but its prototype doesn't.
Ghidra/Features/Base/src/test.slow/java/ghidra/program/util/ProgramMerge3Test.java