Iterable<Tuple<int, T>> get indexed sync* { var i = 0; final it = iterator; while (it.moveNext()) { yield Tuple(i++, it.current); } }