final Constructor<?> resolvedConstructor = configurableConstructorCache.get(beanType);
if (resolvedConstructor != null) {
final ConstructorArgumentValues constructorArgumentValues = beanDefinition.getConstructorArgumentValues();
final ArgumentDescription[] argumentDescriptions = ArgumentDescriptionFactory.create(resolvedConstructor).resolveParameters();
for (int i = 0; i < argumentDescriptions.length; i++) {
ArgumentDescription argumentDescription = argumentDescriptions[i];
if (!constructorArgumentValues.hasIndexedArgumentValue(i)) {
final String keyName = argumentDescription.constrettoConfigurationKeyCandidate();
if (configuration.hasValue(keyName)) {
constructorArgumentValues.addIndexedArgumentValue(i,
configuration.evaluateTo(
argumentDescription.getType(),
keyName));
}
}
}
}