*/
@Override
protected NewConcreteType assembleNewType(final Type type, final String newTypeName) {
this.verifyBeanFactory(type);
final DocumentWalker document = this.getDocumentWalker(type);
final NewConcreteType beanFactory = this.createBeanFactory(newTypeName, type);
this.setBeanFactory(beanFactory);
final Set<Bean> beans = document.getBeans();
this.setBeans(this.createBeans());
this.setAliases(this.createAliases());
this.buildFactoryBeans(beans);
final Set<Alias> aliases = document.getAliases();
this.recordAliases(aliases);
this.setImageValues(this.createImageValues());
this.overrideAllFactoryBeanCreateInstances(beans);
this.overrideAllFactoryBeanSatisfyInits(beans);
this.overrideAllFactoryBeanSatisfyProperties(beans);
this.createImageFactoryIfNecessary();
this.overrideAllSingletonFactoryBeanToInvokeCustomDestroy(beans);
this.buildAspects(document.getAspects());
this.applyAspects();
this.overrideBeanFactoryRegisterFactoryBeans();
this.registerBeanAliases();
this.overrideLoadEagerBeans();