@Test
	public void testGetRelativesEmpty() throws CodeUnitInsertionException {
		TraceCodeUnit u3fff = manager.codeUnits().getBefore(0, b.addr(0x4000));
		assertUndefined(u3fff);
		assertEquals(b.addr(0x3fff), u3fff.getAddress());
		assertEquals(u3fff, manager.data().getBefore(0, b.addr(0x4000)));
		assertEquals(u3fff, manager.undefinedData().getBefore(0, b.addr(0x4000)));
		assertNull(manager.definedUnits().getBefore(0, b.addr(0x4000)));
		assertNull(manager.instructions().getBefore(0, b.addr(0x4000)));
		assertNull(manager.definedData().getBefore(0, b.addr(0x4000)));

		TraceCodeUnit u4000 = manager.codeUnits().getFloor(0, b.addr(0x4000));
		assertUndefined(u4000);
		assertEquals(b.addr(0x4000), u4000.getAddress());
		assertEquals(u4000, manager.data().getFloor(0, b.addr(0x4000)));
		assertEquals(u4000, manager.undefinedData().getFloor(0, b.addr(0x4000)));
		assertNull(manager.definedUnits().getFloor(0, b.addr(0x4000)));
		assertNull(manager.instructions().getFloor(0, b.addr(0x4000)));
		assertNull(manager.definedData().getFloor(0, b.addr(0x4000)));

		assertEquals(u4000, manager.codeUnits().getCeiling(0, b.addr(0x4000)));
		assertEquals(u4000, manager.data().getCeiling(0, b.addr(0x4000)));
		assertEquals(u4000, manager.undefinedData().getCeiling(0, b.addr(0x4000)));
		assertNull(manager.definedUnits().getCeiling(0, b.addr(0x4000)));
		assertNull(manager.instructions().getCeiling(0, b.addr(0x4000)));
		assertNull(manager.definedData().getCeiling(0, b.addr(0x4000)));

		TraceCodeUnit u4001 = manager.codeUnits().getAfter(0, b.addr(0x4000));
		assertUndefined(u4001);
		assertEquals(b.addr(0x4001), u4001.getAddress());
		assertEquals(u4001, manager.data().getAfter(0, b.addr(0x4000)));
		assertEquals(u4001, manager.undefinedData().getAfter(0, b.addr(0x4000)));
		assertNull(manager.definedUnits().getAfter(0, b.addr(0x4000)));
		assertNull(manager.instructions().getAfter(0, b.addr(0x4000)));
		assertNull(manager.definedData().getAfter(0, b.addr(0x4000)));
	}
This test is interesting because the pointer type def causes an update to the data type
settings <em>while the unit is still being created</em>. This will invalidate the trace's
caches. All of them, including the defined data units, which can become the cause of many
timing issues.
Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/listing/DBTraceCodeManagerTest.java