boolean hasNext() {
		Address address = getAlreadyFoundNextAddress();
		if (address != null) {
			return true;
		}

		maybePushIteratorsForward();

		for (SearchAddressIterator iterator : lastAddressMap.keySet()) {
			if (iterator.hasNext()) {
				return true;
			}
		}

		// any remaining addresses we've already pulled-out?
		return getAlreadyFoundNextAddress() != null;
	}
An iterator for returning addresses that can take in 1 or more search iterators to iterator over
addresses provided by each of those search iterators.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchtext/ListingDisplaySearchAddressIterator.java