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

			try {
				rootVal.truncateOrDelete(Lifespan.nowOn(0));
				fail();
			}
			catch (IllegalArgumentException e) {
				// pass
			}

			TraceObjectValue stringVal = root.setValue(Lifespan.ALL, "myValue", "A string");

			assertEquals(stringVal, stringVal.truncateOrDelete(Lifespan.nowOn(11)));
			assertEquals(Lifespan.toNow(10), stringVal.getLifespan());

			TraceObjectValue split = stringVal.truncateOrDelete(Lifespan.at(0));
			assertNotSame(stringVal, split);
			assertEquals(Lifespan.toNow(-1), stringVal.getLifespan());
			assertEquals(Lifespan.span(1, 10), split.getLifespan());
			assertEquals("A string", split.getValue());

			assertNull(stringVal.truncateOrDelete(Lifespan.ALL));
			assertTrue(stringVal.isDeleted());
			assertFalse(split.isDeleted()); // Other values not affected
		}
	}
Fails because you cannot create a second root object.
Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/target/DBTraceObjectManagerTest.java