ProcessingContext env = metaModel.model.processingContext;
//
TypeMirror providerFactoryTM = env.getTypeElement(ProviderFactory.class.getName()).asType();
TypeElement providerElt = env.getTypeElement("javax.inject.Provider");
DeclaredType providerTM = (DeclaredType)providerElt.asType();
TypeMirror rawProviderTM = env.erasure(providerTM);
//
List<Map<String, Object>> bindings = (List<Map<String, Object>>)added.get("value");
ArrayList<JSON> list = new ArrayList<JSON>();
if (bindings != null) {
for (Map<String, Object> binding : bindings) {
ElementHandle.Type bindingValue = (ElementHandle.Type)binding.get("value");
ElementHandle.Type bindingImplementation = (ElementHandle.Type)binding.get("implementation");
String scope = (String)binding.get("scope");
//
JSON bindingJSON = new JSON().set("value", bindingValue.getName().toString());
//
TypeElement valueElt = env.get(bindingValue);
TypeMirror valueTM = valueElt.asType();
//
if (bindingImplementation != null) {
TypeElement implementationElt = env.get(bindingImplementation);
DeclaredType implementationTM = (DeclaredType)implementationElt.asType();
// Check class
if (implementationElt.getKind() != ElementKind.CLASS) {
throw IMPLEMENTATION_INVALID_TYPE.failure(env.get(key.getElement()), providerElt.getQualifiedName());
}