class CycledIterator<Element>
({Element*} iterable, Integer times)
satisfies Iterator<Element> {
variable Iterator<Element> iter = emptyIterator;
variable Integer count=0;
shared actual Element|Finished next() {
if (!is Finished next = iter.next()) {
return next;
}
else {
if (count<times) {
count++;
iter = iterable.iterator();
}
else {
iter = emptyIterator;
}
return iter.next();
}
}
string => "``iterable``.repeat(``times``).iterator()";
}