static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, R> Seq<R> zip(Seq<? extends T1> s1, Seq<? extends T2> s2, Seq<? extends T3> s3, Seq<? extends T4> s4, Seq<? extends T5> s5, Seq<? extends T6> s6, Seq<? extends T7> s7, Seq<? extends T8> s8, Seq<? extends T9> s9, Seq<? extends T10> s10, Seq<? extends T11> s11, Seq<? extends T12> s12, Seq<? extends T13> s13, Seq<? extends T14> s14, Seq<? extends T15> s15, Seq<? extends T16> s16, Function16<? super T1, ? super T2, ? super T3, ? super T4, ? super T5, ? super T6, ? super T7, ? super T8, ? super T9, ? super T10, ? super T11, ? super T12, ? super T13, ? super T14, ? super T15, ? super T16, ? extends R> zipper) {
        final Iterator<? extends T1> it1 = s1.iterator();
        final Iterator<? extends T2> it2 = s2.iterator();
        final Iterator<? extends T3> it3 = s3.iterator();
        final Iterator<? extends T4> it4 = s4.iterator();
        final Iterator<? extends T5> it5 = s5.iterator();
        final Iterator<? extends T6> it6 = s6.iterator();
        final Iterator<? extends T7> it7 = s7.iterator();
        final Iterator<? extends T8> it8 = s8.iterator();
        final Iterator<? extends T9> it9 = s9.iterator();
        final Iterator<? extends T10> it10 = s10.iterator();
        final Iterator<? extends T11> it11 = s11.iterator();
        final Iterator<? extends T12> it12 = s12.iterator();
        final Iterator<? extends T13> it13 = s13.iterator();
        final Iterator<? extends T14> it14 = s14.iterator();
        final Iterator<? extends T15> it15 = s15.iterator();
        final Iterator<? extends T16> it16 = s16.iterator();

        class Zip implements Iterator<R> {
            @Override
            public boolean hasNext() {
                return it1.hasNext() && it2.hasNext() && it3.hasNext() && it4.hasNext() && it5.hasNext() && it6.hasNext() && it7.hasNext() && it8.hasNext() && it9.hasNext() && it10.hasNext() && it11.hasNext() && it12.hasNext() && it13.hasNext() && it14.hasNext() && it15.hasNext() && it16.hasNext();
            }

            @Override
            public R next() {
                return zipper.apply(it1.next(), it2.next(), it3.next(), it4.next(), it5.next(), it6.next(), it7.next(), it8.next(), it9.next(), it10.next(), it11.next(), it12.next(), it13.next(), it14.next(), it15.next(), it16.next());
            }
        }

        return seq(new Zip());
    }
Zip 16 streams into one using a {@link Function16} to produce resulting values.
<p>
<pre><code>
// ("1:a", "2:b", "3:c")
Seq.of(1, 2, 3).zip(Seq.of("a", "b", "c"), (i, s) -> i + ":" + s)
</code></pre>
jOOL-java-8/src/main/java/org/jooq/lambda/Seq.java