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

		// Find next code unit.
		CodeUnit cuNext = null;
		boolean next[] = new boolean[iter.length];
		for (int i = 0; i < iter.length; i++) {
			if (cu[i] == null) {
				continue;
			}
			if (cuNext == null) {
				cuNext = cu[i];
				next[i] = true;
			}
			else {
				int result = compareAddress(cuNext, cu[i]);
				if (result == 0) {
					next[i] = true;
				}
				else if ((forward && (result > 0)) || (!forward && (result < 0))) {
					cuNext = cu[i];
					for (int n = 0; n < i; n++) {
						next[n] = false;
					}
					next[i] = true;
				}
			}
		}

		// Load array with all code units that have same address as next. Others are null.
		CodeUnit nextCU[] = new CodeUnit[iter.length];
		for (int i = 0; i < iter.length; i++) {
			if (next[i]) {
				nextCU[i] = cu[i];
				cu[i] = null;
			}
		}
		return nextCU;
	}
Returns the next code unit(s). The next code unit could be from any one 
or more of the iterators. The array returns a code unit for each listing
that has a code unit with a minimum address at the next iterator address.
The code units in the array match up to the listings in the array passed 
to this classes constructor. The code unit will be null in the array if
no code unit started at the next code unit address for that listing.
@return an array with the next code unit(s).
Ghidra/Features/Base/src/main/java/ghidra/program/util/MultiCodeUnitIterator.java