default void writeDown(PcodeTraceAccess into) {
		TracePcodeExecutorState<T> sharedState = (TracePcodeExecutorState<T>) getSharedState();
		sharedState.writeDown(into.getDataForSharedState());
		for (PcodeThread<T> emuThread : getAllThreads()) {
			PcodeTraceDataAccess localInto = into.getDataForLocalState(emuThread, 0);
			if (localInto == null) {
				throw new IllegalArgumentException(
					"Given trace does not have thread with name/path '" + emuThread.getName() +
						"' at source snap");
			}
			TracePcodeExecutorState<T> localState =
				(TracePcodeExecutorState<T>) emuThread.getState().getLocalState();
			localState.writeDown(localInto);
		}
	}
Write the accumulated emulator state via the given trace access shim

<p>
<b>NOTE:</b> This method requires a transaction to have already been started on the
destination trace. The destination threads must have equal names/paths at the given
threadsSnap. When using scratch space, threadsSnap should be the source snap. If populating a
new trace, threadsSnap should probably be the destination snap.

@param into the destination trace-data access shim
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/pcode/exec/trace/TracePcodeMachine.java