OptionalBinder: Make Optional<Provider> anonymous provider an inner class so that @Inject members can be referenced by generated code.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=71634136
Guice: Fix for issue 295 (@ProvidedBy doesn't work with enums)
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=72100195
Fix typo in JavaDoc for c.g.inject.internal.MoreTypes#getGenericSupertype
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=72545394
Implement binding deduplication for multibinder & mapbinder in a different way.
Instead of relying on Guice binding deduplication (and hacking up RealElement
to break the annotation contract to do so, causing weirdness in WeakKeySet &
forcing us to care about "rehashing keys"), we instead deduplicate within
Multibinder.  The downside of this is that toInstance or toProvider(instance)
bindings that are deduplicated will remain in the object graph but effectively
be unreachable.  However, that's a downside I'm willing to live with to remove
this hack.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=72570932
Guice Multibindings: convert multibinding anonymous providers into package-private inner classes so that @Inject methods can be referenced by generated code.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=72598956
Do some extra casting to workaround jdk6 compilation issues in SpiUtils.