public PseudoInstruction disassemble(Address addr,
			PseudoDisassemblerContext disassemblerContext, boolean isInDelaySlot)
			throws InsufficientBytesException, UnknownInstructionException,
			UnknownContextException {

		MemBuffer memBuffer = new DumbMemBufferImpl(memory, addr);

		// check that address is defined in memory
		try {
			memBuffer.getByte(0);
		}
		catch (Exception e) {
			return null;
		}

		InstructionPrototype prototype = null;

		try {
			prototype = language.parse(memBuffer, disassemblerContext, isInDelaySlot);
		}
		catch (UnknownInstructionException unknownExc) {
			return null;
		}

		if (prototype == null) {
			return null;
		}

		PseudoInstruction instr;
		try {
			instr = new PseudoInstruction(program, addr, prototype, memBuffer, disassemblerContext);
		}
		catch (Exception e) {
			// this is here, if a prototype matches for some number of bytes, but
			//   the actual instruction is longer than the number of bytes needed for matching
			//   the prototype.  And all the bytes for the instruction are not available.
			return null;
		}

		return instr;
	}
Disassemble a single instruction.  The program is not affected.
@param addr
@param disassemblerContext
@param isInDelaySlot
@return
@throws InsufficientBytesException
@throws UnknownInstructionException
@throws UnknownContextException
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/util/PseudoDisassembler.java