private boolean endBlockEarly(Instruction inst, Address fallThruAddr, int limit,
			InstructionBlock block) {
		if (fallThruAddr == null) {
			return false;
		}
		if ((block.getInstructionCount() >= limit && isBlockTerminationOK(inst)) ||
			(initializedAddressSet != null && !initializedAddressSet.contains(fallThruAddr))) {
			// If instruction limit exceeded terminate block (provided we are not in the 
			// middle of a parallel packet), or falling into
			// uninitialized/non-execute memory, terminate block and
			// add fallthrough to branchStack.
			// Fallthrough must be handled immediately with next InstructionSet
			// to ensure that it remains the start of an InstructionBlock contained 
			// within an InstructionSet for the limit case
			disassemblerContext.copyToFutureFlowState(fallThruAddr);
			block.addBlockFlow(new InstructionBlockFlow(fallThruAddr, inst.getAddress(),
				InstructionBlockFlow.Type.PRIORITY));
			return true;
		}
		return false;
	}
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