@Test
	public void testRemoveVsOverrideFallthroughKeepMy() throws Exception {
		mtf.initialize("NotepadMergeListingTest", new OriginalProgramModifierListener() {

			@Override
			public void modifyOriginal(ProgramDB program) {
				Instruction inst =
					program.getListing().getInstructionAt(addr(program, "0x01006421"));
				assertEquals(addr(program, "0x01006423"), inst.getFallThrough());
				inst = program.getListing().getInstructionAt(addr(program, "0x0100642f"));
				assertEquals(addr(program, "0x01006435"), inst.getFallThrough());
			}

			@Override
			public void modifyLatest(ProgramDB program) {
				Instruction inst =
					program.getListing().getInstructionAt(addr(program, "0x01006421"));
				inst.setFallThrough(null);
				inst = program.getListing().getInstructionAt(addr(program, "0x0100642f"));
				inst.setFallThrough(addr(program, "0x0100643d"));
			}

			@Override
			public void modifyPrivate(ProgramDB program) {
				Instruction inst =
					program.getListing().getInstructionAt(addr(program, "0x01006421"));
				inst.setFallThrough(addr(program, "0x0100642a"));
				inst = program.getListing().getInstructionAt(addr(program, "0x0100642f"));
				inst.setFallThrough(null);
			}
		});

		executeMerge(ASK_USER);
		chooseCodeUnit("0x01006421", "0x01006422", KEEP_MY, false);
		chooseCodeUnit("0x0100642f", "0x01006434", KEEP_MY, false);
		waitForMergeCompletion();

		Instruction resultInst = resultProgram.getListing().getInstructionAt(addr("0x01006421"));
		assertEquals(addr("0x0100642a"), resultInst.getFallThrough());
		resultInst = resultProgram.getListing().getInstructionAt(addr("0x0100642f"));
		assertEquals(null, resultInst.getFallThrough());
	}
Test the merge of the versioned program's listing.
Ghidra/Features/Base/src/test.slow/java/ghidra/app/merge/listing/RefMergerMemTest.java