protected boolean isSuitable(Instruction candidate, Instruction protoInstr) {
			try {
				return candidate.getPrototype().equals(protoInstr.getPrototype()) &&
					candidate.isFallThroughOverridden() == protoInstr.isFallThroughOverridden() &&
					Objects.equals(candidate.getFallThrough(), protoInstr.getFallThrough()) &&
					candidate.getFlowOverride() == protoInstr.getFlowOverride() &&
					candidate.getLength() == protoInstr.getLength() && // handles potential length override
					hasSameBytes(candidate, protoInstr);
			}
			catch (MemoryAccessException e) {
				throw new AssertionError(e);
			}
		}
Construct an adder

<p>
This should only be done after the entire instruction set has been checked

@param skipDelaySlots addresses of delay slotted instructions to skip
@param lifespan the lifespan for each instruction
@param platform the platform (language, compiler) for the instructions
@param block the block to add
@param errorAddress the address of the first error in the block, if any
@param conflict a description of the error, if any
@param conflictCodeUnit if a conflict, the code unit that already exists
@param overwrite true to overwrite existing defined units
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/DBTraceInstructionsView.java