package org.seqcode.gsebricks.verbs; import java.util.*; import org.seqcode.gseutils.Pair; public class ExpanderPairIterator<A,B> implements Iterator<Pair<A,Iterator<B>>> { private Expander<A,B> expander; private Iterator<A> input; public ExpanderPairIterator(Expander<A,B> mapper, Iterator<A> input) { this.expander = mapper; this.input = input; } public boolean hasNext() { return input.hasNext(); } public Pair<A,Iterator<B>> next() { A anext = input.next(); Iterator<B> bnext = expander.execute(anext); return new Pair<A,Iterator<B>>(anext, bnext); } public void remove() { throw new UnsupportedOperationException("Can't remove from a MapperIterator"); } }