String asynchWrapperName = parserContext.getReaderContext().generateBeanName(bdb.getBeanDefinition());
// Pass in the retry policy as a constructor argument
String retryPolicyName = getBeanName(element);
bdb.addConstructorArgReference(retryPolicyName);
// Register the new bean
BeanDefinitionHolder holder = new BeanDefinitionHolder(bdb.getBeanDefinition(), asynchWrapperName);
registerBeanDefinition(holder, parserContext.getRegistry());
// Set the AsynchronousRetryTemplate wrapper bean on the retry policy's parent instead of the retry policy itself
BeanDefinition parent = parserContext.getRegistry().getBeanDefinition(getParentBeanName(element));
parent.getPropertyValues().addPropertyValue(getPropertyName(element), new RuntimeBeanReference(asynchWrapperName));