@NotNull
 public List<AbstractDomChildDescriptionImpl> getChildrenDescriptions() {
   checkInitialized();
   final ArrayList<AbstractDomChildDescriptionImpl> list =
       new ArrayList<AbstractDomChildDescriptionImpl>();
   myAttributes.dumpDescriptions(list);
   myFixeds.dumpDescriptions(list);
   myCollections.dumpDescriptions(list);
   ContainerUtil.addIfNotNull(myStaticGenericInfo.getCustomNameChildrenDescription(), list);
   return list;
 }
  private void applyExtensions(DomExtensionsRegistrarImpl registrar) {
    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<AttributeChildDescriptionImpl>(
              myStaticGenericInfo.getAttributes());
      for (final DomExtensionImpl extension : attributes) {
        newAttributes.addDescription(
            extension.addAnnotations(
                new AttributeChildDescriptionImpl(extension.getXmlName(), extension.getType())));
      }
      myAttributes = newAttributes;
    }

    if (!fixeds.isEmpty()) {
      ChildrenDescriptionsHolder<FixedChildDescriptionImpl> newFixeds =
          new ChildrenDescriptionsHolder<FixedChildDescriptionImpl>(myStaticGenericInfo.getFixed());
      for (final DomExtensionImpl extension : fixeds) {
        //noinspection unchecked
        newFixeds.addDescription(
            extension.addAnnotations(
                new FixedChildDescriptionImpl(
                    extension.getXmlName(),
                    extension.getType(),
                    extension.getCount(),
                    ArrayUtil.EMPTY_COLLECTION_ARRAY)));
      }
      myFixeds = newFixeds;
    }
    if (!collections.isEmpty()) {
      ChildrenDescriptionsHolder<CollectionChildDescriptionImpl> newCollections =
          new ChildrenDescriptionsHolder<CollectionChildDescriptionImpl>(
              myStaticGenericInfo.getCollections());
      for (final DomExtensionImpl extension : collections) {
        newCollections.addDescription(
            extension.addAnnotations(
                new CollectionChildDescriptionImpl(
                    extension.getXmlName(),
                    extension.getType(),
                    Collections.<JavaMethod>emptyList())));
      }
      myCollections = newCollections;
    }

    final DomExtensionImpl extension = registrar.getCustomChildrenType();
    if (extension != null) {
      myCustomChildren =
          new CustomDomChildrenDescriptionImpl(
              null, extension.getType(), extension.getTagNameDescriptor());
    }
  }
 @NotNull
 public List<AttributeChildDescriptionImpl> getAttributeChildrenDescriptions() {
   checkInitialized();
   return myAttributes.getDescriptions();
 }
 public DomAttributeChildDescription getAttributeChildDescription(
     @NonNls String attributeName, @NonNls String namespace) {
   checkInitialized();
   return myAttributes.getDescription(attributeName, namespace);
 }
 public AttributeChildDescriptionImpl getAttributeChildDescription(String attributeName) {
   checkInitialized();
   return myAttributes.findDescription(attributeName);
 }
 public DomCollectionChildDescription getCollectionChildDescription(
     @NonNls String tagName, @NonNls String namespace) {
   checkInitialized();
   return myCollections.getDescription(tagName, namespace);
 }
 public CollectionChildDescriptionImpl getCollectionChildDescription(String tagName) {
   checkInitialized();
   return myCollections.findDescription(tagName);
 }
 public DomFixedChildDescription getFixedChildDescription(
     @NonNls String tagName, @NonNls String namespace) {
   checkInitialized();
   return myFixeds.getDescription(tagName, namespace);
 }
 public FixedChildDescriptionImpl getFixedChildDescription(String tagName) {
   checkInitialized();
   return myFixeds.findDescription(tagName);
 }
 @NotNull
 public final List<CollectionChildDescriptionImpl> getCollectionChildrenDescriptions() {
   checkInitialized();
   return myCollections.getDescriptions();
 }
 @NotNull
 public final List<FixedChildDescriptionImpl> getFixedChildrenDescriptions() {
   checkInitialized();
   return myFixeds.getDescriptions();
 }