private void checkForIndirectCallFlow(PseudoInstruction inst, FlowType flowType) {
		if (!flowType.isComputed() || flowType.isConditional()) {
			return;
		}
		for (int opIndex = 0; opIndex < inst.getNumOperands(); opIndex++) {
			RefType operandRefType = inst.getOperandRefType(opIndex);
			if (operandRefType.isIndirect()) {
				Address addr = inst.getAddress(opIndex);
				if (addr != null) {
					Function refFunc = program.getFunctionManager().getReferencedFunction(addr);
					if (refFunc != null && refFunc.hasNoReturn()) {
						inst.setFlowOverride(FlowOverride.CALL_RETURN);
						break;
					}
				}
			}
		}
	}
Process a new instruction which has just been parsed.  This method is responsible for
adding the instruction to the current block as well as any delay-slotted instructions.
This method may be overridden and the instruction re-parsed if necessary. 

@param inst instruction to process
@param blockMemBuffer buffer to get bytes
@param block current block of instructions
@param instructionSet address set of current instructions in block
@return instruction fallthrough address or null if no fallthrough
@throws InsufficientBytesException if a memory error occurs during instruction processing 
@throws UnknownInstructionException if an error occurs during a modified re-parse of
the instruction.
@throws AddressOverflowException if address goes out of address space
@throws NestedDelaySlotException if delay slot found in a delay slot
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/disassemble/Disassembler.java