public void addInstruction(Instruction instruction) {
		Address instructionMinAddr = instruction.getMinAddress();
		if (maxAddress == null) {
			if (!instructionMinAddr.equals(startAddr)) {
				throw new IllegalArgumentException("First instruction to block had address " +
					instructionMinAddr + ", expected address " + startAddr);
			}
		}
		else if (!maxAddress.isSuccessor(instructionMinAddr)) {
			throw new IllegalArgumentException("Newly added instruction at address " +
				instructionMinAddr + " is not the immediate succesor to address " + maxAddress);
		}
		instructionMap.put(instructionMinAddr, instruction);
		if (!instruction.isInDelaySlot()) {
			lastInstructionAddress = instruction.getMinAddress();
		}
		maxAddress = instruction.getMaxAddress();
	}
Adds an instruction to this block.  If the block in not empty, the newly added instruction
must be directly after the current block maximum address.  In other words, all instructions
int the block must be consecutive.
@param instruction the instruction to add to this block.
@throws IllegalArgumentException if the new instruction does not immediately follow the
last instruction added.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/lang/InstructionBlock.java