Unfortunately these overloaded method signatures have the same arity and will cause problems with Groovy/Clojure/JRuby etc as they can't determine the difference between `Func0` vs `Func1` at runtime.

We should either eliminate unnecessary overloads, change signatures or have more descriptive names instead of overloads.