Regardless of possible better implementations, I believe there is a bug in the default implementation. If you have a method with only one object parameter, that parameter is never hashed, it's simply returned.
I've made my own key generator where I changed this:
if (params.length == 1)
return (params == null ? NULL_PARAM_KEY : params);
if (params.length == 1 && params == null)
Now a single non-null object parameter will still be hashed, as occurred already for methods with more than one parameter.