@Test
	public void testSetValuePrimitives() throws Exception {
		try (Transaction tx = b.startTransaction()) {
			root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();

			root.setValue(Lifespan.ALL, "aBool", true);
			root.setValue(Lifespan.ALL, "aByte", (byte) 2);
			root.setValue(Lifespan.ALL, "aChar", 'c');
			root.setValue(Lifespan.ALL, "aShort", (short) 4);
			root.setValue(Lifespan.ALL, "anInt", 5);
			root.setValue(Lifespan.ALL, "aLong", 6L);
			root.setValue(Lifespan.ALL, "aString", "Hello, 7");
			root.setValue(Lifespan.ALL, "aRange", b.range(0x1000, 0x1fff));
			root.setValue(Lifespan.ALL, "anAddress", b.addr(0x2000));

			root.setValue(Lifespan.ALL, "anEmptyIntArr", new int[] {});
			root.setValue(Lifespan.ALL, "aBoolArr", new boolean[] { false, true });
			root.setValue(Lifespan.ALL, "aByteArr", new byte[] { 2, 3, 4 });
			root.setValue(Lifespan.ALL, "aCharArr", new char[] { 'e', 'f', 'g', 'h' });
			root.setValue(Lifespan.ALL, "aShortArr", new short[] { 9, 10, 11, 12, 13 });
			root.setValue(Lifespan.ALL, "anIntArr", new int[] { 14, 15, 16, 17 });
			root.setValue(Lifespan.ALL, "aLongArr", new long[] { 18, 19 });
			root.setValue(Lifespan.ALL, "aStringArr", new String[] { "Hello,", "20" });
		}

		assertEquals(true, root.getValue(0, "aBool").getValue());
		assertEquals((byte) 2, root.getValue(0, "aByte").getValue());
		assertEquals('c', root.getValue(0, "aChar").getValue());
		assertEquals((short) 4, root.getValue(0, "aShort").getValue());
		assertEquals(5, root.getValue(0, "anInt").getValue());
		assertEquals(6L, root.getValue(0, "aLong").getValue());
		assertEquals("Hello, 7", root.getValue(0, "aString").getValue());
		assertEquals(b.range(0x1000, 0x1fff), root.getValue(0, "aRange").getValue());
		assertEquals(b.addr(0x2000), root.getValue(0, "anAddress").getValue());

		assertArrayEquals(new int[] {}, (int[]) root.getValue(0, "anEmptyIntArr").getValue());
		assertArrayEquals(new boolean[] { false, true },
			(boolean[]) root.getValue(0, "aBoolArr").getValue());
		assertArrayEquals(new byte[] { 2, 3, 4 }, (byte[]) root.getValue(0, "aByteArr").getValue());
		assertArrayEquals(new char[] { 'e', 'f', 'g', 'h' },
			(char[]) root.getValue(0, "aCharArr").getValue());
		assertArrayEquals(new short[] { 9, 10, 11, 12, 13 },
			(short[]) root.getValue(0, "aShortArr").getValue());
		assertArrayEquals(new int[] { 14, 15, 16, 17 },
			(int[]) root.getValue(0, "anIntArr").getValue());
		assertArrayEquals(new long[] { 18, 19 }, (long[]) root.getValue(0, "aLongArr").getValue());
		assertArrayEquals(new String[] { "Hello,", "20" },
			(String[]) root.getValue(0, "aStringArr").getValue());

		File saved = b.save();

		try (ToyDBTraceBuilder loaded = new ToyDBTraceBuilder(saved)) {
			TraceObject root2 = loaded.trace.getObjectManager().getRootObject();

			assertEquals(true, root2.getValue(0, "aBool").getValue());
			assertEquals((byte) 2, root2.getValue(0, "aByte").getValue());
			assertEquals('c', root2.getValue(0, "aChar").getValue());
			assertEquals((short) 4, root2.getValue(0, "aShort").getValue());
			assertEquals(5, root2.getValue(0, "anInt").getValue());
			assertEquals(6L, root2.getValue(0, "aLong").getValue());
			assertEquals("Hello, 7", root2.getValue(0, "aString").getValue());

			assertArrayEquals(new int[] {}, (int[]) root2.getValue(0, "anEmptyIntArr").getValue());
			assertArrayEquals(new boolean[] { false, true },
				(boolean[]) root2.getValue(0, "aBoolArr").getValue());
			assertArrayEquals(new byte[] { 2, 3, 4 },
				(byte[]) root2.getValue(0, "aByteArr").getValue());
			assertArrayEquals(new char[] { 'e', 'f', 'g', 'h' },
				(char[]) root2.getValue(0, "aCharArr").getValue());
			assertArrayEquals(new short[] { 9, 10, 11, 12, 13 },
				(short[]) root2.getValue(0, "aShortArr").getValue());
			assertArrayEquals(new int[] { 14, 15, 16, 17 },
				(int[]) root2.getValue(0, "anIntArr").getValue());
			assertArrayEquals(new long[] { 18, 19 },
				(long[]) root2.getValue(0, "aLongArr").getValue());
			assertArrayEquals(new String[] { "Hello,", "20" },
				(String[]) root2.getValue(0, "aStringArr").getValue());
		}
	}
Fails because you cannot create a second root object.
Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/target/DBTraceObjectManagerTest.java