@Override
    @SuppressWarnings("unchecked")
    public T[] next() {
        while (hasNext == null) {
            produceNext();
        }
        if (hasNext) {
            hasNext = null;
            return (T[]) values.clone();
        } else {
            throw new NoSuchElementException();
        }
    }
MultiIterator provides a cartesian view on the given iterators

<pre>
e.g. (1,2) and (100, 200, 300)
are expanded to (1, 100) (1, 200) (1, 300) (2, 100) (2, 200) (2, 300)
</pre>

@author tiwe
@param <T> element type
querydsl-core/src/main/java/com/querydsl/core/util/MultiIterator.java