public Address[] nextAddresses() {
		// Get a next value from each iterator
		for (int i = 0; i < iters.length; i++) {
			if (addrs[i] == null) {
				if (iters[i].hasNext()) {
					addrs[i] = iters[i].next();
				}
			}
		}

		// Find next address.
		Address addrNext = null;
		boolean next[] = new boolean[iters.length];
		for (int i = 0; i < iters.length; i++) {
			if (addrs[i] == null) {
				continue;
			}
			if (addrNext == null) {
				addrNext = addrs[i];
				next[i] = true;
			}
			else {
				int result = addrNext.compareTo(addrs[i]);
				if (result == 0) {
					next[i] = true;
				}
				else if ((forward && (result > 0)) || (!forward && (result < 0))) {
					addrNext = addrs[i];
					for (int n = 0; n < i; n++) {
						next[n] = false;
					}
					next[i] = true;
				}
			}
		}

		// Load array with all addresses that have same address as next. Others are null.
		Address nextAddr[] = new Address[iters.length];
		for (int i = 0; i < iters.length; i++) {
			if (next[i]) {
				nextAddr[i] = addrs[i];
				addrs[i] = null;
			}
		}
		return nextAddr;
	}
Returns the next address(es). The next address could be from any 
one or more of the iterators.
@return an array with the next address(es). Each element in this array 
corresponds to each iterator passed to the constructor. 
Null is returned in an element if the next overall address is not the 
next address from the corresponding iterator.
Ghidra/Features/Base/src/main/java/ghidra/program/util/MultiAddressIterator.java