default <E extends Throwable> AddressSetView delegateAddressSet(
			Iterable<M> spaces, ExcFunction<M, AddressSetView, E> func) throws E {
		try (LockHold hold = LockHold.lock(readLock())) {
			AddressSet result = new AddressSet();
			for (M m : spaces) {
				result.add(func.apply(m));
			}
			return result;
		}
	}
Compose an address set, immediately, from address sets returned by delegates

@param spaces the delegates
@param func an address set getter for each delegate
@return the unioned results
@throws E if {@code func} throws and exception
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/space/DBTraceDelegatingManager.java