See the testcase. If you've got a taglib closure and say you want to call a convenience method in the taglib that is not a tag. That convenience method is not a closure, just a regular instance method. And lets say in Java style you decided to type the parameters to this convenience method to make it clear what the type is. And lets say one of the parameters is of type Class. If you try to call the method, you'll get an error saying that, basically, no method was found matching the signature. If you untype the parameter declaration for the method, or don't use Class (other types seem to work), it'll work. It'll also work if the method is static.
This is an odd bug, and I suspect (though don't know) the behavior occurs for Controllers too.
I worked around this by removing the type info from the parameter declaration. Despite it being easy, it took me quite a long time to find the problem.