code: public static <R> Stream<R> zip(final CharIterator a, final CharIterator b, final CharIterator c, final CharTriFunction<R> zipFunction) {
          return new IteratorStream<>(new ObjIteratorEx<R>() {
              @Override
              public boolean hasNext() {
                  return a.hasNext() && b.hasNext() && c.hasNext();
              }
  
              @Override
              public R next() {
                  return zipFunction.apply(a.nextChar(), b.nextChar(), c.nextChar());
              }
          });
      }
docs: Zip together the "a", "b" and "c" iterators 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