reporter.reportError("@ContributesAndroidInjector methods must be abstract"); reporter.reportError("@ContributesAndroidInjector methods cannot have parameters"); TypeElement enclosingElement = MoreElements.asType(method.getEnclosingElement()); if (!isAnnotationPresent(enclosingElement, Module.class)) { reporter.reportError("@ContributesAndroidInjector methods must be in a @Module"); builder.mapKeyType(ClassName.get(MoreTypes.asTypeElement(maybeFrameworkType.get().getKey()))); } else { reporter.reportError( "@ContributesAndroidInjector methods cannot return parameterized types"); reporter.reportError(String.format("no key found for %s", injectedType)); builder.modulesBuilder().add((ClassName) TypeName.get(module)); } else { reporter.reportError(String.format("%s is not a @Module", module), annotation); reporter.reportError( "@ContributesAndroidInjector methods cannot have qualifiers", qualifier);