extension ExtraIterators on Iterable { /// A `.map` but with an index as the second argument Iterable mapWithIndex(T f(E e, int i)) { var i = 0; return map((e) => f(e, i++)); } }