SpringModule binds custom guice Providers for Spring managed beans so that Guice can inject beans from Spring Context.
Due to a bug in the Provider, Guice can only inject Spring beans that either don't have any qualifier annotations or only have Named annotation as a qualifier.
This fix enables Guice to inject beans with custom qualifier annotations as well.
Custom qualifier annotations do not need to be marker annotations (in other words, they can have attributes).
Other changes include:
Using factory method metadata of annotated bean definition rather than using custom code to retrieve factory method and its annotations
Added more test cases to validate various qualifier annotation scenarios.