@Override
	public DBTraceInstruction create(Lifespan lifespan, Address address, TracePlatform platform,
			InstructionPrototype prototype, ProcessorContextView context, int forcedLengthOverride)
			throws CodeUnitInsertionException {
		InternalTracePlatform dbPlatform = space.manager.platformManager.assertMine(platform);
		try (LockHold hold = LockHold.lock(space.lock.writeLock())) {
			DBTraceInstruction created =
				doCreate(lifespan, address, dbPlatform, prototype, context, forcedLengthOverride);
			space.trace.setChanged(
				new TraceChangeRecord<>(TraceEvents.CODE_ADDED, space, created, created));
			return created;
		}
		catch (AddressOverflowException e) {
			throw new CodeUnitInsertionException("Code unit would extend beyond address space");
		}
	}
Create an instruction

@param lifespan the lifespan of the instruction
@param address the minimum address of the instruction
@param platform the platform (language, compiler) for the instruction
@param prototype the instruction's prototype
@param context the initial context for parsing the instruction
@param length instruction byte-length (must be in the range 0..prototype.getLength()). If
           smaller than the prototype length it must have a value no greater than 7,
           otherwise an error will be thrown. A value of 0 or greater-than-or-equal the
           prototype length will be ignored and not impose and override length. The length
           value must be a multiple of the {@link Language#getInstructionAlignment()
           instruction alignment} .
@return the newly created instruction.
@throws CodeUnitInsertionException thrown if the new Instruction would overlap and existing
            {@link CodeUnit} or the specified {@code length} is unsupported.
@throws IllegalArgumentException if a negative {@code length} is specified.
@throws AddressOverflowException if the instruction would fall off the address space
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/DBTraceInstructionsView.java