protected TraceModule doAddModule(String modulePath, String moduleName, AddressRange range,
			Lifespan lifespan) throws DuplicateNameException {
		if (trace.getObjectManager().hasSchema()) {
			return trace.getObjectManager().addModule(modulePath, moduleName, lifespan, range);
		}
		checkModulePathConflicts(null, modulePath, lifespan);
		return delegateWrite(range.getAddressSpace(),
			m -> m.doAddModule(modulePath, moduleName, range, lifespan));
	}
TODO: Certainly, any two sections at the same path will belong to the same module and
so have the same lifespan, no? I suppose this logic is only true in objects mode...,
and there, the logic is performed by the value key duplicate check.
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/module/DBTraceModuleManager.java