@Override
	public Address getFallFrom() {
		lock.acquire();
		try {
			checkIsValid();
			// check if the instruction before this is in a delay slot
			// If it is then back up until hit an instruction that claims
			// to be a delay slot instruction that is not in a delay slot
			// itself.
			Instruction instr = this;
			int alignment = program.getLanguage().getInstructionAlignment();
			if (alignment < 1) {
				alignment = 1;
			}

			do {
				// skip past delay slot instructions which satisfy specific conditions
				try {
					instr = program.getListing()
							.getInstructionContaining(
								instr.getMinAddress().subtractNoWrap(alignment));
				}
				catch (AddressOverflowException e) {
					return null;
				}
			}
			// Continue walking instructions backwards if a delay-slot instruction is found and 
			// either the delay slot instruction does not fallthrough or it does not have a 
			// ref or label on it.
			while (instr != null && instr.isInDelaySlot() && (!instr.hasFallthrough() ||
				!program.getSymbolTable().hasSymbol(instr.getMinAddress())));

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

			if (isInDelaySlot()) {
				// If this instruction is within delay-slot, return a null fall-from address if 
				// previous instruction (i.e., instruction with delay slot, found above)
				// does not have a fallthrough and this instruction has a ref or label on it.
				if (!instr.hasFallthrough() &&
					program.getSymbolTable().hasSymbol(getMinAddress())) {
					return null;
				}
				// Return previous instruction's address (i.e., instruction with delay slot, found above)
				return instr.getMinAddress();
			}

			// No delay-slot, but check if the instruction falls into this one.
			Address fallAddr = instr.getFallThrough();
			if (fallAddr != null && fallAddr.equals(address)) {
				return instr.getMinAddress();
			}

			return null;
		}
		finally {
			lock.release();
		}
	}
Get the original context used to establish the shared prototype
@param baseContextReg is a context register
@return prototype context value
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/code/InstructionDB.java