Iterable<Tuple<T, T1>> zip<T1>(Iterable<T1> other) sync* { final ia = iterator, ib = other.iterator; while (ia.moveNext() && ib.moveNext()) { yield Tuple(ia.current, ib.current); } }