private void codeFragmentChanged(TraceAddressSpace space, TraceAddressSnapRange range,
				ProgramFragment oldFragment, ProgramFragment newFragment) {
			DomainObjectEventQueues queues = isVisible(space, range);
			if (queues == null) {
				return;
			}
			queues.fireEvent(new ProgramChangeRecord(ProgramEvent.FRAGMENT_CHANGED, null, null,
				null, range.getX1(), range.getX2()));
		}
A wrapper on a trace, which given a snap, implements the {@link Program} interface

<p>
NOTE: Calling {@link CodeUnit#getProgram()} from units contained in this view may not necessarily
return this same view. If the code unit comes from a less-recent snap than the snap associated
with this view, the view for that snap is returned instead.

<p>
TODO: Unit tests for all of this.
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/program/DBTraceProgramView.java