protected MemoryBlock getRegionBlock(RegionEntry entry) {
		return regionBlocks.computeIfAbsent(entry.region,
			r -> new DBTraceProgramViewMemoryRegionBlock(program, entry.region, entry.snap));
	}
We're banking on the viewport being relatively shallow, and for this to be invoked
relatively infrequently. We build the view from oldest to newest, clobbering old
overlaps as we add the new. Additionally, if a region moves, we must not show its old
position. (NOTE: Philosophically, a region cannot "move", but it's key could be
reused, depending on the connector.)
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/program/DBTraceProgramViewMemory.java