Add a new method to ThrowingProviderBinder: providing(Class) or providing(TypeLiteral).
This instructs ThrowingProviderBinder to create a proxy implementation of the CheckedProvider interface and delegate it to the constructor of the class in question.  As a bonus, the class it constructs fully participates in Guice AOP.

This is a binary-safe change, but a compile-unsafe change if classes directly kept a reference to SecondaryBinder.  SecondaryBinder now has two generic types (as opposed to one).

Revision created by MOE tool push_codebase.
MOE_MIGRATION=4307
diff --git a/extensions/throwingproviders/src/com/google/inject/throwingproviders/CheckedProviderMethodsModule.java b/extensions/throwingproviders/src/com/google/inject/throwingproviders/CheckedProviderMethodsModule.java
index 523d020..6c81dab 100644
--- a/extensions/throwingproviders/src/com/google/inject/throwingproviders/CheckedProviderMethodsModule.java
+++ b/extensions/throwingproviders/src/com/google/inject/throwingproviders/CheckedProviderMethodsModule.java
@@ -75,8 +75,7 @@
     List<CheckedProviderMethod<?>> result = Lists.newArrayList();
     for (Class<?> c = delegate.getClass(); c != Object.class; c = c.getSuperclass()) {
       for (Method method : c.getDeclaredMethods()) {
-        CheckedProvides checkedProvides =
-          (CheckedProvides)method.getAnnotation(CheckedProvides.class);
+        CheckedProvides checkedProvides = method.getAnnotation(CheckedProvides.class);
         if(checkedProvides != null) {
           result.add(createProviderMethod(binder, method, checkedProvides.value()));
         }