if (classStatementMap.containsKey(type)) {
throw new RuntimeException("transient value already exists: " + name + "::" + type.getFullyQualifiedName());
}
final IOCProcessingContext pCtx = getInjectionContext().getProcessingContext();
if (hasUnsatisfiedTransientValue(name, type)) {
final Statement unsatisfiedTransientValue = getUnsatisfiedTransientValue(name, type);
pCtx.append(Stmt.nestedCall(unsatisfiedTransientValue).invoke("set", valueRef));
classStatementMap.put(type, Stmt.nestedCall(unsatisfiedTransientValue).invoke("get"));
markSatisfied(name, type);
}
else {
final String varName = InjectUtil.getUniqueVarName();
pCtx.append(Stmt.declareFinalVariable(varName, type, valueRef));
classStatementMap.put(type, Stmt.loadVariable(varName));
}
}