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

			try {
				rootVal.setLifespan(Lifespan.at(0));
				fail();
			}
			catch (IllegalArgumentException e) {
				// pass
			}
			assertEquals(Lifespan.ALL, rootVal.getLifespan());

			TraceObjectValue val1234 = root.setValue(Lifespan.ALL, "myValue", 1234);
			TraceObjectValue val2345 = root.setValue(Lifespan.nowOn(10), "myValue", 2345);

			assertEquals(Lifespan.toNow(9), val1234.getLifespan());

			val1234.setMaxSnap(19);
			assertEquals(19, val1234.getMaxSnap());
			assertEquals(Lifespan.toNow(19), val1234.getLifespan());
			assertEquals(Lifespan.nowOn(20), val2345.getLifespan());

			val2345.setMinSnap(10);
			assertEquals(10, val2345.getMinSnap());
			assertEquals(Lifespan.nowOn(10), val2345.getLifespan());
			assertEquals(Lifespan.toNow(9), val1234.getLifespan());

			val1234.setLifespan(Lifespan.span(20, 30));
			assertEquals(Lifespan.span(20, 30), val1234.getLifespan());
			assertEquals(Lifespan.span(10, 19), val2345.getLifespan());
			assertEquals(Lifespan.nowOn(31), root.getValue(31, "myValue").getLifespan());

			val1234.setLifespan(Lifespan.ALL);
			assertEquals(Lifespan.ALL, val1234.getLifespan());
			assertTrue(val2345.isDeleted());
		}
	}
Fails because you cannot create a second root object.
Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/target/DBTraceObjectManagerTest.java