private Instruction disassembleDelaySlottedInstruction(Program program, Address addr) {
		// WARNING: does not support instruction length override use
		// Use heavyweight disassembler for delay slotted instruction
		AddressSet restrictedSet = new AddressSet(addr);
		Disassembler disassembler = Disassembler.getDisassembler(program, TaskMonitor.DUMMY, null);
		disassembler.disassemble(addr, restrictedSet, false);
		return program.getListing().getInstructionAt(addr);
	}
<CODE>performMergeInstruction</CODE> merges the indicated instruction
into the merge program. Before the instruction is created the bytes for
the instruction are copied from program2 to program1.
Corresponding code unit(s) must already be cleared in result program,
as well as having copied context-register value.
@param originInstruction the instruction to be merged
This instruction should be from the origin program.
@param originByteDiffs address set indicating addresses where the bytes differ
between program1 and program2.
The addresses in this set should be from program1.
@throws CodeUnitInsertionException if the instruction can't be created
in the merge program.
@throws MemoryAccessException if bytes can't be copied.
Ghidra/Features/Base/src/main/java/ghidra/program/util/ProgramMerge.java