static <T1, T2> Seq<Tuple2<T1, T2>> crossJoin(Seq<? extends T1> s1, Seq<? extends T2> s2) {
        List<? extends T2> list = s2.toList();
        return seq(s1).flatMap(v1 -> seq(list).map(v2 -> tuple(v1, v2)))
                      .onClose(SeqUtils.closeAll(s1, s2));
    }
Cross join 2 streams into one.
<p>
<pre><code>
// (tuple(1, "a"), tuple(1, "b"), tuple(2, "a"), tuple(2, "b"))
Seq.of(1, 2).crossJoin(Seq.of("a", "b"))
</code></pre>
jOOL/src/main/java/org/jooq/lambda/Seq.java