@Override
	public DBTraceMemoryRegion getRegionContaining(long snap, Address address) {
		try (LockHold hold = LockHold.lock(lock.readLock())) {
			for (DBTraceMemoryRegion region : regionCache.keySet()) {
				if (!region.getShape().contains(address, snap)) {
					continue;
				}
				return region;
			}
			DBTraceMemoryRegion region =
				regionMapSpace.reduce(TraceAddressSnapRangeQuery.at(address, snap)).firstValue();
			if (region != null) {
				regionCache.put(region, region);
			}
			return region;
		}
	}
Implements {@link TraceMemorySpace} using a database-backed copy-on-write store.
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/memory/DBTraceMemorySpace.java