content: // Generated by `RayCallGenerator.java`. DO NOT EDIT.
  
  package io.ray.api;
  
  import io.ray.api.call.ActorCreator;
  import io.ray.api.call.PyActorCreator;
  import io.ray.api.call.PyTaskCaller;
  import io.ray.api.call.TaskCaller;
  import io.ray.api.call.VoidTaskCaller;
  import io.ray.api.function.PyActorClass;
  import io.ray.api.function.PyFunction;
  import io.ray.api.function.RayFunc0;
  import io.ray.api.function.RayFunc1;
  import io.ray.api.function.RayFunc2;
  import io.ray.api.function.RayFunc3;
  import io.ray.api.function.RayFunc4;
  import io.ray.api.function.RayFunc5;
  import io.ray.api.function.RayFunc6;
  import io.ray.api.function.RayFuncVoid0;
  import io.ray.api.function.RayFuncVoid1;
  import io.ray.api.function.RayFuncVoid2;
  import io.ray.api.function.RayFuncVoid3;
  import io.ray.api.function.RayFuncVoid4;
  import io.ray.api.function.RayFuncVoid5;
  import io.ray.api.function.RayFuncVoid6;
  
  /**
   * This class provides type-safe interfaces for `Ray.call` and `Ray.createActor`.
   **/
  class RayCall {
    // =======================================
    // Methods for remote function invocation.
    // =======================================
    public static <R> TaskCaller<R> task(RayFunc0<R> f) {
      Object[] args = new Object[]{};
      return new TaskCaller<>(f, args);
    }
  
    public static VoidTaskCaller task(RayFuncVoid0 f) {
      Object[] args = new Object[]{};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, R> TaskCaller<R> task(RayFunc1<T0, R> f, T0 t0) {
      Object[] args = new Object[]{t0};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, R> TaskCaller<R> task(RayFunc1<T0, R> f, ObjectRef<T0> t0) {
      Object[] args = new Object[]{t0};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0> VoidTaskCaller task(RayFuncVoid1<T0> f, T0 t0) {
      Object[] args = new Object[]{t0};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0> VoidTaskCaller task(RayFuncVoid1<T0> f, ObjectRef<T0> t0) {
      Object[] args = new Object[]{t0};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, R> TaskCaller<R> task(RayFunc2<T0, T1, R> f, T0 t0, T1 t1) {
      Object[] args = new Object[]{t0, t1};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, R> TaskCaller<R> task(RayFunc2<T0, T1, R> f, T0 t0, ObjectRef<T1> t1) {
      Object[] args = new Object[]{t0, t1};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, R> TaskCaller<R> task(RayFunc2<T0, T1, R> f, ObjectRef<T0> t0, T1 t1) {
      Object[] args = new Object[]{t0, t1};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, R> TaskCaller<R> task(RayFunc2<T0, T1, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1) {
      Object[] args = new Object[]{t0, t1};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1> VoidTaskCaller task(RayFuncVoid2<T0, T1> f, T0 t0, T1 t1) {
      Object[] args = new Object[]{t0, t1};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1> VoidTaskCaller task(RayFuncVoid2<T0, T1> f, T0 t0, ObjectRef<T1> t1) {
      Object[] args = new Object[]{t0, t1};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1> VoidTaskCaller task(RayFuncVoid2<T0, T1> f, ObjectRef<T0> t0, T1 t1) {
      Object[] args = new Object[]{t0, t1};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1> VoidTaskCaller task(RayFuncVoid2<T0, T1> f, ObjectRef<T0> t0, ObjectRef<T1> t1) {
      Object[] args = new Object[]{t0, t1};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, R> TaskCaller<R> task(RayFunc3<T0, T1, T2, R> f, T0 t0, T1 t1, T2 t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, R> TaskCaller<R> task(RayFunc3<T0, T1, T2, R> f, T0 t0, T1 t1, ObjectRef<T2> t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, R> TaskCaller<R> task(RayFunc3<T0, T1, T2, R> f, T0 t0, ObjectRef<T1> t1, T2 t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, R> TaskCaller<R> task(RayFunc3<T0, T1, T2, R> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, R> TaskCaller<R> task(RayFunc3<T0, T1, T2, R> f, ObjectRef<T0> t0, T1 t1, T2 t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, R> TaskCaller<R> task(RayFunc3<T0, T1, T2, R> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, R> TaskCaller<R> task(RayFunc3<T0, T1, T2, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, R> TaskCaller<R> task(RayFunc3<T0, T1, T2, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2> VoidTaskCaller task(RayFuncVoid3<T0, T1, T2> f, T0 t0, T1 t1, T2 t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2> VoidTaskCaller task(RayFuncVoid3<T0, T1, T2> f, T0 t0, T1 t1, ObjectRef<T2> t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2> VoidTaskCaller task(RayFuncVoid3<T0, T1, T2> f, T0 t0, ObjectRef<T1> t1, T2 t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2> VoidTaskCaller task(RayFuncVoid3<T0, T1, T2> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2> VoidTaskCaller task(RayFuncVoid3<T0, T1, T2> f, ObjectRef<T0> t0, T1 t1, T2 t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2> VoidTaskCaller task(RayFuncVoid3<T0, T1, T2> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2> VoidTaskCaller task(RayFuncVoid3<T0, T1, T2> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2> VoidTaskCaller task(RayFuncVoid3<T0, T1, T2> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, R> TaskCaller<R> task(RayFunc4<T0, T1, T2, T3, R> f, T0 t0, T1 t1, T2 t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, R> TaskCaller<R> task(RayFunc4<T0, T1, T2, T3, R> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, R> TaskCaller<R> task(RayFunc4<T0, T1, T2, T3, R> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, R> TaskCaller<R> task(RayFunc4<T0, T1, T2, T3, R> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, R> TaskCaller<R> task(RayFunc4<T0, T1, T2, T3, R> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, R> TaskCaller<R> task(RayFunc4<T0, T1, T2, T3, R> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, R> TaskCaller<R> task(RayFunc4<T0, T1, T2, T3, R> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, R> TaskCaller<R> task(RayFunc4<T0, T1, T2, T3, R> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, R> TaskCaller<R> task(RayFunc4<T0, T1, T2, T3, R> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, R> TaskCaller<R> task(RayFunc4<T0, T1, T2, T3, R> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, R> TaskCaller<R> task(RayFunc4<T0, T1, T2, T3, R> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, R> TaskCaller<R> task(RayFunc4<T0, T1, T2, T3, R> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, R> TaskCaller<R> task(RayFunc4<T0, T1, T2, T3, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, R> TaskCaller<R> task(RayFunc4<T0, T1, T2, T3, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, R> TaskCaller<R> task(RayFunc4<T0, T1, T2, T3, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, R> TaskCaller<R> task(RayFunc4<T0, T1, T2, T3, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3> VoidTaskCaller task(RayFuncVoid4<T0, T1, T2, T3> f, T0 t0, T1 t1, T2 t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3> VoidTaskCaller task(RayFuncVoid4<T0, T1, T2, T3> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3> VoidTaskCaller task(RayFuncVoid4<T0, T1, T2, T3> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3> VoidTaskCaller task(RayFuncVoid4<T0, T1, T2, T3> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3> VoidTaskCaller task(RayFuncVoid4<T0, T1, T2, T3> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3> VoidTaskCaller task(RayFuncVoid4<T0, T1, T2, T3> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3> VoidTaskCaller task(RayFuncVoid4<T0, T1, T2, T3> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3> VoidTaskCaller task(RayFuncVoid4<T0, T1, T2, T3> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3> VoidTaskCaller task(RayFuncVoid4<T0, T1, T2, T3> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3> VoidTaskCaller task(RayFuncVoid4<T0, T1, T2, T3> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3> VoidTaskCaller task(RayFuncVoid4<T0, T1, T2, T3> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3> VoidTaskCaller task(RayFuncVoid4<T0, T1, T2, T3> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3> VoidTaskCaller task(RayFuncVoid4<T0, T1, T2, T3> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3> VoidTaskCaller task(RayFuncVoid4<T0, T1, T2, T3> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3> VoidTaskCaller task(RayFuncVoid4<T0, T1, T2, T3> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3> VoidTaskCaller task(RayFuncVoid4<T0, T1, T2, T3> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, T0 t0, T1 t1, T2 t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, R> TaskCaller<R> task(RayFunc5<T0, T1, T2, T3, T4, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, T0 t0, T1 t1, T2 t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4> VoidTaskCaller task(RayFuncVoid5<T0, T1, T2, T3, T4> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, T1 t1, T2 t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, T1 t1, T2 t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, R> TaskCaller<R> task(RayFunc6<T0, T1, T2, T3, T4, T5, R> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new TaskCaller<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, T1 t1, T2 t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, T1 t1, T2 t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5> VoidTaskCaller task(RayFuncVoid6<T0, T1, T2, T3, T4, T5> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new VoidTaskCaller(f, args);
    }
  
    // ===========================
    // Methods for actor creation.
    // ===========================
    public static <A> ActorCreator<A> actor(RayFunc0<A> f) {
      Object[] args = new Object[]{};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, A> ActorCreator<A> actor(RayFunc1<T0, A> f, T0 t0) {
      Object[] args = new Object[]{t0};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, A> ActorCreator<A> actor(RayFunc1<T0, A> f, ObjectRef<T0> t0) {
      Object[] args = new Object[]{t0};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, A> ActorCreator<A> actor(RayFunc2<T0, T1, A> f, T0 t0, T1 t1) {
      Object[] args = new Object[]{t0, t1};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, A> ActorCreator<A> actor(RayFunc2<T0, T1, A> f, T0 t0, ObjectRef<T1> t1) {
      Object[] args = new Object[]{t0, t1};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, A> ActorCreator<A> actor(RayFunc2<T0, T1, A> f, ObjectRef<T0> t0, T1 t1) {
      Object[] args = new Object[]{t0, t1};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, A> ActorCreator<A> actor(RayFunc2<T0, T1, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1) {
      Object[] args = new Object[]{t0, t1};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, A> ActorCreator<A> actor(RayFunc3<T0, T1, T2, A> f, T0 t0, T1 t1, T2 t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, A> ActorCreator<A> actor(RayFunc3<T0, T1, T2, A> f, T0 t0, T1 t1, ObjectRef<T2> t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, A> ActorCreator<A> actor(RayFunc3<T0, T1, T2, A> f, T0 t0, ObjectRef<T1> t1, T2 t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, A> ActorCreator<A> actor(RayFunc3<T0, T1, T2, A> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, A> ActorCreator<A> actor(RayFunc3<T0, T1, T2, A> f, ObjectRef<T0> t0, T1 t1, T2 t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, A> ActorCreator<A> actor(RayFunc3<T0, T1, T2, A> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, A> ActorCreator<A> actor(RayFunc3<T0, T1, T2, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, A> ActorCreator<A> actor(RayFunc3<T0, T1, T2, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2) {
      Object[] args = new Object[]{t0, t1, t2};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, A> ActorCreator<A> actor(RayFunc4<T0, T1, T2, T3, A> f, T0 t0, T1 t1, T2 t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, A> ActorCreator<A> actor(RayFunc4<T0, T1, T2, T3, A> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, A> ActorCreator<A> actor(RayFunc4<T0, T1, T2, T3, A> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, A> ActorCreator<A> actor(RayFunc4<T0, T1, T2, T3, A> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, A> ActorCreator<A> actor(RayFunc4<T0, T1, T2, T3, A> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, A> ActorCreator<A> actor(RayFunc4<T0, T1, T2, T3, A> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, A> ActorCreator<A> actor(RayFunc4<T0, T1, T2, T3, A> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, A> ActorCreator<A> actor(RayFunc4<T0, T1, T2, T3, A> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, A> ActorCreator<A> actor(RayFunc4<T0, T1, T2, T3, A> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, A> ActorCreator<A> actor(RayFunc4<T0, T1, T2, T3, A> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, A> ActorCreator<A> actor(RayFunc4<T0, T1, T2, T3, A> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, A> ActorCreator<A> actor(RayFunc4<T0, T1, T2, T3, A> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, A> ActorCreator<A> actor(RayFunc4<T0, T1, T2, T3, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, A> ActorCreator<A> actor(RayFunc4<T0, T1, T2, T3, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, A> ActorCreator<A> actor(RayFunc4<T0, T1, T2, T3, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, A> ActorCreator<A> actor(RayFunc4<T0, T1, T2, T3, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3) {
      Object[] args = new Object[]{t0, t1, t2, t3};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, T0 t0, T1 t1, T2 t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, A> ActorCreator<A> actor(RayFunc5<T0, T1, T2, T3, T4, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, T1 t1, T2 t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, T1 t1, T2 t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, T1 t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, T1 t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, ObjectRef<T1> t1, T2 t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, T0 t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, T1 t1, T2 t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, T1 t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, T1 t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, T2 t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, T3 t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, T4 t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, T5 t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    public static <T0, T1, T2, T3, T4, T5, A> ActorCreator<A> actor(RayFunc6<T0, T1, T2, T3, T4, T5, A> f, ObjectRef<T0> t0, ObjectRef<T1> t1, ObjectRef<T2> t2, ObjectRef<T3> t3, ObjectRef<T4> t4, ObjectRef<T5> t5) {
      Object[] args = new Object[]{t0, t1, t2, t3, t4, t5};
      return new ActorCreator<>(f, args);
    }
  
    // ===========================
    // Cross-language methods.
    // ===========================
    public static <R> PyTaskCaller<R> task(PyFunction<R> pyFunction) {
      Object[] args = new Object[]{};
      return new PyTaskCaller<>(pyFunction, args);
    }
  
    public static <R> PyTaskCaller<R> task(PyFunction<R> pyFunction, Object obj0) {
      Object[] args = new Object[]{obj0};
      return new PyTaskCaller<>(pyFunction, args);
    }
  
    public static <R> PyTaskCaller<R> task(PyFunction<R> pyFunction, Object obj0, Object obj1) {
      Object[] args = new Object[]{obj0, obj1};
      return new PyTaskCaller<>(pyFunction, args);
    }
  
    public static <R> PyTaskCaller<R> task(PyFunction<R> pyFunction, Object obj0, Object obj1, Object obj2) {
      Object[] args = new Object[]{obj0, obj1, obj2};
      return new PyTaskCaller<>(pyFunction, args);
    }
  
    public static <R> PyTaskCaller<R> task(PyFunction<R> pyFunction, Object obj0, Object obj1, Object obj2, Object obj3) {
      Object[] args = new Object[]{obj0, obj1, obj2, obj3};
      return new PyTaskCaller<>(pyFunction, args);
    }
  
    public static <R> PyTaskCaller<R> task(PyFunction<R> pyFunction, Object obj0, Object obj1, Object obj2, Object obj3, Object obj4) {
      Object[] args = new Object[]{obj0, obj1, obj2, obj3, obj4};
      return new PyTaskCaller<>(pyFunction, args);
    }
  
    public static <R> PyTaskCaller<R> task(PyFunction<R> pyFunction, Object obj0, Object obj1, Object obj2, Object obj3, Object obj4, Object obj5) {
      Object[] args = new Object[]{obj0, obj1, obj2, obj3, obj4, obj5};
      return new PyTaskCaller<>(pyFunction, args);
    }
  
    public static PyActorCreator actor(PyActorClass pyActorClass) {
      Object[] args = new Object[]{};
      return new PyActorCreator(pyActorClass, args);
    }
  
    public static PyActorCreator actor(PyActorClass pyActorClass, Object obj0) {
      Object[] args = new Object[]{obj0};
      return new PyActorCreator(pyActorClass, args);
    }
  
    public static PyActorCreator actor(PyActorClass pyActorClass, Object obj0, Object obj1) {
      Object[] args = new Object[]{obj0, obj1};
      return new PyActorCreator(pyActorClass, args);
    }
  
    public static PyActorCreator actor(PyActorClass pyActorClass, Object obj0, Object obj1, Object obj2) {
      Object[] args = new Object[]{obj0, obj1, obj2};
      return new PyActorCreator(pyActorClass, args);
    }
  
    public static PyActorCreator actor(PyActorClass pyActorClass, Object obj0, Object obj1, Object obj2, Object obj3) {
      Object[] args = new Object[]{obj0, obj1, obj2, obj3};
      return new PyActorCreator(pyActorClass, args);
    }
  
    public static PyActorCreator actor(PyActorClass pyActorClass, Object obj0, Object obj1, Object obj2, Object obj3, Object obj4) {
      Object[] args = new Object[]{obj0, obj1, obj2, obj3, obj4};
      return new PyActorCreator(pyActorClass, args);
    }
  
    public static PyActorCreator actor(PyActorClass pyActorClass, Object obj0, Object obj1, Object obj2, Object obj3, Object obj4, Object obj5) {
      Object[] args = new Object[]{obj0, obj1, obj2, obj3, obj4, obj5};
      return new PyActorCreator(pyActorClass, args);
    }
  
  }
  