code: public static <A, B, C, R> Stream<R> zip(final Collection<? extends A> a, final Collection<? extends B> b, final Collection<? extends C> c,
              final TriFunction<? super A, ? super B, ? super C, R> zipFunction) {
          return zip(a.iterator(), b.iterator(), c.iterator(), zipFunction);
      }
docs: Zip together the "a", "b" and "c" arrays until one of them runs out of values.
  Each triple of values is combined into a single value using the supplied zipFunction function.
  
  @param a
  @param b
  @return