private boolean endBlockOnCall(Instruction inst, Address fallThruAddr, InstructionBlock block) {
		if (fallThruAddr == null || !inst.getFlowType().isCall() || !isBlockTerminationOK(inst)) {
			return false;
		}

		// Defer fallthrough processing for calls just in case it 
		// really does not return - process branches around it first.
		// This is not done if the call flow occurs in the middle of a parallel packet (unexpected)
		// Add fallthrough to branchStack
		disassemblerContext.copyToFutureFlowState(fallThruAddr);
		InstructionBlockFlow fallThrough = new InstructionBlockFlow(fallThruAddr, inst.getAddress(),
			InstructionBlockFlow.Type.CALL_FALLTHROUGH);
		// TODO: do we need to defer this longer? i.e., outside current IntructionSet

		if (disassemblerQueue != null) {
			disassemblerQueue.queueCurrentFlow(fallThrough);
		}
		block.addBlockFlow(fallThrough);
		block.addBranchFlow(fallThruAddr); // treat fall-through like branch flow
		return true;
	}
Perform parse of instruction bytes and context to produce an instruction prototype.
@param instrMemBuffer memory buffer
@param block fallthrough sequence of instructions preceding current instruction
required to facilitate potential crossbuilds for current instruction.
@return instruction prototype
@throws InsufficientBytesException
@throws UnknownInstructionException
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/disassemble/Disassembler.java