static <T, R> Seq<R> zipWithIndex(Seq<? extends T> stream, BiFunction<? super T, ? super Long, ? extends R> zipper) {
        long[] index = { -1L };

        return SeqUtils.transform(stream, (delegate, action) ->
            delegate.tryAdvance(t ->
                action.accept(zipper.apply(t, ++index[0]))
            )
        );
    }
Zip a stream with indexes into one using a {@link BiFunction} to produce resulting values.
<p>
<pre><code>
// ("0:a", "1:b", "2:c")
Seq.of("a", "b", "c").zipWithIndex((s, i) -> i + ":" + s))
</code></pre>
jOOL-java-8/src/main/java/org/jooq/lambda/Seq.java