code: public static <T1, T2, T3, T4, T5, T6, T7, T8, R> Function<Tuple8<T1, T2, T3, T4, T5, T6, T7, T8>, R> function(Function8<T1, T2, T3, T4, T5, T6, T7, T8, R> function) {
          return tuple -> function.apply(tuple.getT1(), tuple.getT2(), tuple.getT3(), tuple.getT4(), tuple.getT5(), tuple.getT6(), tuple.getT7(), tuple.getT8());
      }
docs: Returns a {@link Function} of {@link Tuple8} that wraps a function of the component values of the tuple
  
  @param function the component value function
  @param <T1>     the type of the first value
  @param <T2>     the type of the second value
  @param <T3>     the type of the third value
  @param <T4>     the type of the fourth value
  @param <T5>     the type of the fifth value
  @param <T6>     the type of the sixth value
  @param <T7>     the type of the seventh value
  @param <T8>     the type of the eighth value
  @param <R>      the type of the result of the function
  @return the wrapper function