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

			@Override
			public void modifyOriginal(ProgramDB program) throws Exception {
				int txId = program.startTransaction("Modify Original Program");
				boolean commit = false;
				try {
					// nop #0x3       11011001 00110001 00000000
					// imm r1,#0x300           00110001 00000000
					// imm r0,#0x0                               00000000 00000000
					setBytes(program, "0x10013d9", new byte[] { (byte) 0xd9, 0x31, 0, 0, 0 });
					disassemble(program, "0x10013d9", "0x10013dc");
					Listing listing = program.getListing();
					Instruction instr = listing.getInstructionAt(addr(program, "0x10013d9"));
					try {
						instr.setLengthOverride(1);
					}
					catch (CodeUnitInsertionException e) {
						failWithException("Unexpected exception", e);
					}
					commit = true;
				}
				finally {
					program.endTransaction(txId, commit);
				}
			}

			@Override
			public void modifyLatest(ProgramDB program) {
				int txId = program.startTransaction("Modify Latest Program");
				boolean commit = false;
				try {
					disassemble(program, "0x10013da", "0x10013db");
					Listing listing = program.getListing();
					Instruction instr = listing.getInstructionAt(addr(program, "0x10013da"));
					assertNotNull("Failed to create overlapped instruction", instr);
					commit = true;
				}
				finally {
					program.endTransaction(txId, commit);
				}
			}

			@Override
			public void modifyPrivate(ProgramDB program) {
				int txId = program.startTransaction("Modify My Program");
				boolean commit = false;
				try {
					clear(program, "0x10013d9", "0x10013d9");
					disassemble(program, "0x10013d9", "0x10013dc");
					commit = true;
				}
				finally {
					program.endTransaction(txId, commit);
				}
			}
		});

		executeMerge(ASK_USER);
		chooseCodeUnit("0x10013d9", "0x10013db", KEEP_ORIGINAL);
		waitForMergeCompletion();

		assertSameCodeUnits(resultProgram, originalProgram, new AddressSet(addr("0x10013d9"),
			addr("0x10013db")));

		ReferenceManager refMgr = resultProgram.getReferenceManager();
		Reference[] refs = refMgr.getReferencesFrom(addr("0x10013d9"));
		assertEquals(1, refs.length);
		assertEquals(RefType.FALL_THROUGH, refs[0].getReferenceType());
		assertEquals(addr("0x10013dc"), refs[0].getToAddress());
	}
Test the merge of the versioned program's listing.
Provides tests that create instructions with overrides in various combinations.
For tests with conflicts, checks selection of latest, my, or original code unit(s).
Ghidra/Features/Base/src/test.slow/java/ghidra/app/merge/listing/CodeUnitMergeManager6Test.java