protected Target addTarget() throws Throwable {
		createRmiConnection();
		addRegisterMethods();
		addMemoryMethods();

		try (Transaction tx = tb.startTransaction()) {
			tb.createObjectsProcessAndThreads();
			TraceObjectThread thread =
				tb.obj("Processes[1].Threads[1]").queryInterface(TraceObjectThread.class);
			tb.createObjectsFramesAndRegs(thread, Lifespan.nowOn(0), getPlatform(), 1);
			tb.trace.getMemoryManager()
					.addRegion("Processes[1].Memory[exe:.text]", Lifespan.nowOn(0),
						tb.range(0x00400000, 00401000),
						TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE);
		}

		return rmiCx.publishTarget(tool, tb.trace);
	}
TODO: It'd be nice if this worked, since memory edits don't really require a thread
context. That would require some changes in the TraceSchedule and its execution. IINM,
each step currently requires a thread. We'd have to relax that for patch steps, and it'd
only work if they don't refer to any register.
Ghidra/Test/DebuggerIntegrationTest/src/test/java/ghidra/app/plugin/core/debug/service/control/DebuggerControlServiceTest.java