public static boolean hasFallthrough(PcodeOp op) {
		if (op instanceof NopPcodeOp) {
			return true;
		}
		return switch (op.getOpcode()) {
			case PcodeOp.BRANCH, PcodeOp.BRANCHIND -> false;
			case PcodeOp.CALL, PcodeOp.CALLIND, PcodeOp.RETURN -> false;
			case PcodeOp.UNIMPLEMENTED -> false;
			case PcodeOp.CBRANCH -> true;
			default -> true;
		};
	}
Check if a given p-code op could fall through

<p>
Conditional branches and non-branching ops are the only ones that can fall through. Note that
for JIT purposes, a {@link PcodeOp#CALL CALL} op <em>does not</em> fall through! For
decompilation, it hints that it's branching to a subroutine that <em>usually</em> returns
back to the caller, but the JIT compiler does not take that hint. 1) There's no guarantee it
will actually return. 2) Even if it did, it would be via a {@link PcodeOp#RETURN}, which is
an <em>indirect</em> branch. An indirect branch is not sufficient to join two strides in the
same passage. Thus, we have little to gain by falling through a call, and the more likely
outcome is the JIT and/or ASM library will eliminate the code following the call.

@param op the op to consider
@return true if the op does or could fall through
Ghidra/Framework/Emulation/src/main/java/ghidra/pcode/emu/jit/JitPassage.java