core/src/com/google/inject/spi/InjectionPoint.java
private static boolean isEligibleForInjection(Method method, boolean statics) {
    return Modifier.isStatic(method.getModifiers()) == statics
        && !method.isBridge()
        && !method.isSynthetic();
  }
private static boolean isEligibleForInjection(Method method, boolean statics) {
    return Modifier.isStatic(method.getModifiers()) == statics
        && !method.isBridge()
        && !method.isSynthetic();
  }
Returns true if the method is eligible to be injected. This is different than {@link
#isValidMethod}, because ineligibility will not drop a method from being injected if a
superclass was eligible & valid. Bridge & synthetic methods are excluded from eligibility for
two reasons:

<p>Prior to Java8, javac would generate these methods in subclasses without annotations, which
means this would accidentally stop injecting a method annotated with {@link
javax.inject.Inject}, since the spec says to stop injecting if a subclass isn't annotated with
it.

<p>Starting at Java8, javac copies the annotations to the generated subclass method, except it
leaves out the generic types. If this considered it a valid injectable method, this would eject
the parent's overridden method that had the proper generic types, and would use invalid
injectable parameters as a result.

<p>The fix for both is simply to ignore these synthetic bridge methods.