void ActualCallFunc(Action func);
void ActualCallFunc<T>(Action<T> func, T param0);
void ActualCallFunc<T0, T1>(Action<T0, T1> func, T0 param0, T1 param1);
void ActualCallFunc<T0, T1, T2>(Action<T0, T1, T2> func, T0 param0, T1 param1, T2 param2);
...
void ActualCallFunc(Action func);
void ActualCallFunc<T>(Action<T> func, T param0);
void ActualCallFunc<T0, T1>(Action<T0, T1> func, T0 param0, T1 param1);
void ActualCallFunc<T0, T1, T2>(Action<T0, T1, T2> func, T0 param0, T1 param1, T2 param2);
...