docs: public static <T1, T2, T3, R1, R2, R3, R> Stream<R> forEach4(Stream<? extends T1> value1,
                                                                   Function<? super T1, ? extends Stream<R1>> value2,
                                                                   BiFunction<? super T1, ? super R1, ? extends Stream<R2>> value3,
                                                                   Function3<? super T1, ? super R1, ? super R2, ? extends Stream<R3>> value4,
                                                                   Function4<? super T1, ? super R1, ? super R2, ? super R3, ? extends R> yieldingFunction) {
  
  
          return value1.flatMap(in -> {
  
              Stream<R1> a = value2.apply(in);
              return a.flatMap(ina -> {
                  Stream<R2> b = value3.apply(in,ina);
                  return b.flatMap(inb -> {
                      Stream<R3> c = value4.apply(in,ina,inb);
                      return c.map(in2 -> yieldingFunction.apply(in, ina, inb, in2));
                  });
  
              });
  
          });
  
      }