protected void doDeleteModule(DBTraceModule module) {
		try (LockHold hold = LockHold.lock(lock.writeLock())) {
			for (DBTraceSection section : new ArrayList<>(
				doGetSectionsByModuleId(module.getKey()))) {
				section.space.sectionMapSpace.deleteData(section);
				// NOTE: Don't send section events. Module event should suffice.
			}
			module.space.moduleMapSpace.deleteData(module);
		}
		trace.setChanged(new TraceChangeRecord<>(TraceEvents.MODULE_DELETED, null, module));
	}
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