code: public static <T1, T2, T3, T4> TypeFactory<Tuple4<T1, T2, T3, T4>> typeFactory( TypeFactory<T1> type1,
                                                                                      TypeFactory<T2> type2,
                                                                                      TypeFactory<T3> type3,
                                                                                      TypeFactory<T4> type4 ) {
          return new Tuple4TypeFactory<>(type1, type2, type3, type4);
      }
docs: Create a type factory for tuples of size 4.
  
  @param type1 the first type; may not be null
  @param type2 the second type; may not be null
  @param type3 the third type; may not be null
  @param type4 the fourth type; may not be null
  @return the type factory; never null