Function<T4>(String, T1, T4) getAFunctionReturningBool<T1, T2, T3>()

This helps us make sure we get both the empty and the non-empty case right for anonymous functions.