@Override
	public Iterable<? extends T> emptyOrFullIterableUndefined(long snap, AddressRange range,
			boolean forward) {
		return () -> new Iterator<>() {
			Address address = forward ? range.getMinAddress() : range.getMaxAddress();

			@Override
			public boolean hasNext() {
				return address != null && (forward ? address.compareTo(range.getMaxAddress()) <= 0
						: address.compareTo(range.getMinAddress()) >= 0);
			}

			@Override
			public T next() {
				@SuppressWarnings("unchecked")
				T result = (T) manager.doCreateUndefinedUnit(snap, address, null, 0);
				address = forward ? address.next() : address.previous();
				return result;
			}
		};
	}
Construct a composite view

@param manager the code manager, from which individual views are retrieved
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/AbstractWithUndefinedDBTraceCodeUnitsMemoryView.java