default TraceThread getThread(TraceThreadManager tm, TraceThread eventThread) {
		TraceThread thread = isEventThread() ? eventThread : tm.getThread(getThreadKey());
		if (thread == null) {
			if (isEventThread()) {
				throw new IllegalArgumentException("Thread must be given, e.g., 0:t1-3, " +
					"since the last thread or snapshot event thread is not given.");
			}
			throw new IllegalArgumentException(
				"Thread with key " + getThreadKey() + " does not exist in given trace");
		}
		return thread;
	}
Parse a step for the given thread key

<p>
The form of the spec must either be numeric, indicating some number of ticks, or
brace-enclosed Sleigh code, e.g., {@code "{r0=0x1234}"}. The latter allows patching machine
state during execution.

@param threadKey the thread to step, or -1 for the last thread or event thread
@param stepSpec the string specification
@param radix the radix
@return the parsed step
@throws IllegalArgumentException if the specification is of the wrong form
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/time/schedule/Step.java