@Test
	public void testIT_ContextFlow() throws Throwable {
		try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("Test", "ARM:LE:32:v8T")) {
			TraceThread thread = initTrace(tb, """
					pc = 0x00400000;
					sp = 0x00110000;
					r0 = 0x12341234;
					r1 = 0x43214321;
					r7 = 0xbeef;
					CY = 1;
					""",
				List.of(
					"it cc",
					"mov r0,r7", // Assembler doesn't handle context flow
					"mov r1,r7"));

			BytesTracePcodeEmulator emu = new BytesTracePcodeEmulator(tb.host, 0);
			PcodeThread<byte[]> emuThread = emu.newThread(thread.getPath());
			emuThread.stepInstruction();
			emuThread.stepPcodeOp(); // decode second
			assertEquals("mov.cc r0,r7", emuThread.getInstruction().toString());
			emuThread.finishInstruction();
			emuThread.stepPcodeOp(); // decode third
			assertEquals("mov r1,r7", emuThread.getInstruction().toString());
			emuThread.finishInstruction();

			try (Transaction tx = tb.startTransaction()) {
				emu.writeDown(tb.host, 1, 1);
			}

			assertEquals(BigInteger.valueOf(0x00400006),
				TraceSleighUtils.evaluate("pc", tb.trace, 1, thread, 0));
			assertEquals(BigInteger.valueOf(0x12341234), // r0 Unaffected
				TraceSleighUtils.evaluate("r0", tb.trace, 1, thread, 0));
			assertEquals(BigInteger.valueOf(0xbeef), // r1 Affected
				TraceSleighUtils.evaluate("r1", tb.trace, 1, thread, 0));
		}
	}
Test a single instruction in guest mode without identical mapping

<p>
This is a repeat of the {@link #testSinglePUSH()} test, but as a guest platform, where the
guest is mapped to addresses with shifted offsets (not identical). This will ensure the
translation is happening properly.
Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/pcode/exec/trace/BytesTracePcodeEmulatorTest.java