final BeanTag tag = new BeanTag();
tag.setElement(element);
tag.setPlaceHolderResolver(this.getPlaceHolderResolver());
final NestedBean bean = new NestedBean();
bean.setFilename(this.getFilename());
bean.setEagerLoaded(tag.isEagerLoaded());
bean.setSingleton(tag.isSingleton());
bean.setTypeName(tag.getClassName());
bean.setFactoryMethod(tag.getFactoryMethod());
bean.setInitMethod(tag.getInitMethod());
bean.setDestroyMethod(tag.getDestroyMethod());
if (tag.getElement().hasAttribute(Constants.BEAN_ID_ATTRIBUTE)) {
this.throwNestedBeansMustNotHaveIds(bean);
}
bean.setId(this.buildNestedBeanName());
this.addBean(bean);
this.addNestedBean();
this.setParentBean(bean);
bean.setConstructorValues(this.visitConstructorValues(tag.getConstructorValues()));
bean.setProperties(this.visitProperties(tag.getProperties()));
this.removeParentBean();
return bean;
}