if (!emptyCtor.getModifiers().contains(Modifier.PUBLIC)) {
throw PROVIDER_FACTORY_NO_PUBLIC_CTOR.failure(env.get(key.getElement()), implementationElt.getQualifiedName());
}
}
else if (env.isAssignable(implementationTM, rawProviderTM)) {
TypeVariable T = (TypeVariable)providerTM.getTypeArguments().get(0);
TypeMirror resolved = env.asMemberOf(implementationTM, T.asElement());
if (env.isAssignable(resolved, valueTM)) {
// OK
}
else {
throw PROVIDER_NOT_ASSIGNABLE.failure(