void (DomExtensionsRegistrarImpl registrar) { XmlFile file = myInvocationHandler.getFile(); final List<DomExtensionImpl> fixeds = registrar.getFixeds(); final List<DomExtensionImpl> collections = registrar.getCollections(); final List<DomExtensionImpl> attributes = registrar.getAttributes(); if (!attributes.isEmpty()) { ChildrenDescriptionsHolder<AttributeChildDescriptionImpl> newAttributes = new ChildrenDescriptionsHolder<>(myStaticGenericInfo.getAttributes()); for (final DomExtensionImpl extension : attributes) { newAttributes.addDescription(extension.addAnnotations(new AttributeChildDescriptionImpl(extension.getXmlName(), extension.getType()))); } myAttributes = internChildrenHolder(file, newAttributes); } if (!fixeds.isEmpty()) { ChildrenDescriptionsHolder<FixedChildDescriptionImpl> newFixeds = new ChildrenDescriptionsHolder<>(myStaticGenericInfo.getFixed()); for (final DomExtensionImpl extension : fixeds) { //noinspection unchecked newFixeds.addDescription(extension.addAnnotations(new FixedChildDescriptionImpl(extension.getXmlName(), extension.getType(), extension.getCount(), ArrayUtilRt.EMPTY_COLLECTION_ARRAY))); } myFixeds = internChildrenHolder(file, newFixeds); } if (!collections.isEmpty()) { ChildrenDescriptionsHolder<CollectionChildDescriptionImpl> newCollections = new ChildrenDescriptionsHolder<>(myStaticGenericInfo.getCollections()); for (final DomExtensionImpl extension : collections) { newCollections.addDescription(extension.addAnnotations(new CollectionChildDescriptionImpl(extension.getXmlName(), extension.getType(), Collections.emptyList() ))); } myCollections = internChildrenHolder(file, newCollections); } final List<DomExtensionImpl> customs = registrar.getCustoms(); myCustomChildren = customs.isEmpty() ? null : ContainerUtil.map(customs, CustomDomChildrenDescriptionImpl::new); }