XmlFile:x.xml
  PsiElement(XML_DOCUMENT)
    PsiElement(XML_PROLOG)
      PsiElement(XML_DOCTYPE)
        XmlToken:XML_DOCTYPE_START('<!DOCTYPE')
        PsiWhiteSpace(' ')
        XmlToken:XML_NAME('name')
        PsiWhiteSpace(' ')
        PsiElement(XML_MARKUP_DECL)
          XmlToken:XML_MARKUP_START('[')
          PsiWhiteSpace('\n  ')
          PsiElement(XML_ELEMENT_DECL)
            XmlToken:XML_ELEMENT_DECL_START('<!ELEMENT')
            PsiWhiteSpace(' ')
            XmlToken:XML_NAME('name')
            PsiWhiteSpace(' ')
            PsiElement(XML_ELEMENT_CONTENT_SPEC)
              PsiElement(XML_ELEMENT_CONTENT_GROUP)
                XmlToken:XML_LEFT_PAREN('(')
                XmlToken:XML_NAME('a')
                PsiWhiteSpace(' ')
                XmlToken:XML_NAME('b')
                PsiWhiteSpace(' ')
                XmlToken:XML_NAME('c')
                PsiWhiteSpace(' ')
                XmlToken:XML_NAME('d')
                XmlToken:XML_RIGHT_PAREN(')')
            XmlToken:XML_TAG_END('>')
          PsiWhiteSpace('\n  ')
          PsiElement(XML_ELEMENT_DECL)
            XmlToken:XML_ELEMENT_DECL_START('<!ELEMENT')
            PsiWhiteSpace(' ')
            XmlToken:XML_NAME('name2')
            PsiWhiteSpace(' ')
            PsiElement(XML_ELEMENT_CONTENT_SPEC)
              PsiElement(XML_ELEMENT_CONTENT_GROUP)
                XmlToken:XML_LEFT_PAREN('(')
                PsiElement(XML_ENTITY_REF)
                  XmlToken:XML_ENTITY_REF_TOKEN('%entity;')
                XmlToken:XML_RIGHT_PAREN(')')
            XmlToken:XML_TAG_END('>')
          PsiWhiteSpace('\n')
          XmlToken:XML_MARKUP_END(']')
        XmlToken:XML_DOCTYPE_END('>')
      PsiWhiteSpace('\n')
    XmlTag:name
      XmlToken:XML_START_TAG_START('<')
      XmlToken:XML_NAME('name')
      XmlToken:XML_TAG_END('>')
      XmlToken:XML_END_TAG_START('</')
      XmlToken:XML_NAME('name')
      XmlToken:XML_TAG_END('>')