@Test
	public void testApplyOnlyByteDifferencesSamePrototype() 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.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 the bytes differ for an instruction but its prototype doesn't.
Ghidra/Features/Base/src/test.slow/java/ghidra/program/util/ProgramMerge3Test.java