renderGlobalCreationalContext(injectableInstance, injectionContext);
return registerDestructorCallback(injectionContext, injectionContext.getProcessingContext().getBlockBuilder(),
producerInjectableInstance.getValueStatement(), disposerMethod);
}
final BlockBuilder callbackBuilder = injectionContext.getProcessingContext().getBlockBuilder();
final MetaClass creationCallbackRef = parameterizedAs(CreationalCallback.class,
typeParametersOf(injectedType));
final String var = InjectUtil.getUniqueVarName();
final Statement producerCreationalCallback = ObjectBuilder.newInstanceOf(creationCallbackRef)
.extend()
.publicOverridesMethod("getInstance", Parameter.of(CreationalContext.class, "pContext"))
._(Stmt.declareVariable(injectedType)
.named(var).initializeWith(producerInjectableInstance.getValueStatement()))
._(loadVariable("context").invoke("addBean",
loadVariable("context").invoke("getBeanReference",
Stmt.load(injectedType),
Stmt.load(qualifyingMetadata.getQualifiers())), Refs.get(var)))
._(Stmt.loadVariable(var).returnValue())
.finish().finish();
callbackBuilder.append(Stmt.declareFinalVariable(var, creationCallbackRef, producerCreationalCallback));
final Statement retVal = loadVariable("context").invoke("getSingletonInstanceOrNew",
Stmt.loadVariable("injContext"),
Stmt.loadVariable(var),
Stmt.load(injectedType),