@Test
	public void testOverlapErrWithDataTypeSettings() throws Throwable {
		AddressSpace space = b.trace.getBaseAddressFactory().getDefaultAddressSpace();
		PointerTypedef type = new PointerTypedef(null, VoidDataType.dataType, 8, null, space);
		try (Transaction tx = b.startTransaction()) {
			b.trace.getCodeManager()
					.definedData()
					.create(Lifespan.ALL, b.addr(0x4000), type);
		}
		try (Transaction tx = b.startTransaction()) {
			b.trace.getCodeManager()
					.definedData()
					.create(Lifespan.ALL, b.addr(0x4000), type);
			fail();
		}
		catch (CodeUnitInsertionException e) {
			// pass
		}
	}
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