@Override
	public Address getMaxAddress() {
		try (LockHold hold = LockHold.lock(lock.readLock())) {
			for (Entry<ValueShape, DBTraceObjectValueData> entry : map
					.reduce(TraceObjectValueQuery.all().starting(AddressDimension.BACKWARD))
					.orderedEntries()) {
				if (predicate.test(entry.getValue())) {
					return entry.getKey().getMaxAddress(factory);
				}
			}
		}
		return null;
	}
An address set view that unions all addresses where an entry satisfying the given predicate
exists.

<p>
The caller may reduce the map given to this view. Reduction is preferable to using a
predicate, where possible, because reduction benefits from the index.

@param factory the trace's address factory
@param lock the lock on the database
@param map the map
@param predicate a predicate to further filter entries
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/target/DBTraceObjectValueMapAddressSetView.java