FILE
  LSSectionsCommandImpl(SECTIONS_COMMAND)
    PsiElement(SECTIONS)('SECTIONS')
    PsiWhiteSpace(' ')
    PsiElement({)('{')
    PsiWhiteSpace('\n  ')
    LSSectionStmtImpl(SECTION_STMT)
      LSOutputSectionDescriptionImpl(OUTPUT_SECTION_DESCRIPTION)
        PsiElement(IDENTIFIER)('.text')
        PsiWhiteSpace(' ')
        LSSectionAddressTypeImpl(SECTION_ADDRESS_TYPE)
          LSPrimaryExprImpl(PRIMARY_EXPR)
            PsiElement(INT)('0x10000')
        PsiWhiteSpace(' ')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        PsiElement({)('{')
        PsiWhiteSpace(' ')
        LSInputSectionDescriptionImpl(INPUT_SECTION_DESCRIPTION)
          LSInputSectionRuleImpl(INPUT_SECTION_RULE)
            PsiElement(*)('*')
            PsiElement(()('(')
            LSInputSectionsListImpl(INPUT_SECTIONS_LIST)
              PsiElement(IDENTIFIER)('.text')
            PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(})('}')
    PsiWhiteSpace('\n  ')
    LSSectionStmtImpl(SECTION_STMT)
      LSOutputSectionDescriptionImpl(OUTPUT_SECTION_DESCRIPTION)
        PsiElement(IDENTIFIER)('.data.rel.ro')
        PsiWhiteSpace(' ')
        LSSectionAddressTypeImpl(SECTION_ADDRESS_TYPE)
          LSPrimaryExprImpl(PRIMARY_EXPR)
            PsiElement(IDENTIFIER)('.')
        PsiWhiteSpace(' ')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        LSAlignExprImpl(ALIGN_EXPR)
          PsiElement(ALIGN)('ALIGN')
          PsiElement(()('(')
          LSPrimaryExprImpl(PRIMARY_EXPR)
            PsiElement(INT)('16')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement({)('{')
        PsiWhiteSpace(' ')
        LSInputSectionDescriptionImpl(INPUT_SECTION_DESCRIPTION)
          LSInputSectionRuleImpl(INPUT_SECTION_RULE)
            PsiElement(*)('*')
            PsiElement(()('(')
            LSInputSectionsListImpl(INPUT_SECTIONS_LIST)
              PsiElement(IDENTIFIER)('.data.rel.ro')
            PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(})('}')
    PsiWhiteSpace('\n\n  ')
    LSSectionStmtImpl(SECTION_STMT)
      LSOutputSectionDescriptionImpl(OUTPUT_SECTION_DESCRIPTION)
        PsiElement(IDENTIFIER)('.data')
        PsiWhiteSpace(' ')
        LSSectionAddressTypeImpl(SECTION_ADDRESS_TYPE)
          LSPrimaryExprImpl(PRIMARY_EXPR)
            PsiElement(INT)('0x20000')
        PsiWhiteSpace(' ')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        PsiElement({)('{')
        PsiWhiteSpace(' ')
        LSInputSectionDescriptionImpl(INPUT_SECTION_DESCRIPTION)
          LSInputSectionRuleImpl(INPUT_SECTION_RULE)
            PsiElement(*)('*')
            PsiElement(()('(')
            LSInputSectionsListImpl(INPUT_SECTIONS_LIST)
              PsiElement(IDENTIFIER)('.data')
            PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(})('}')
    PsiWhiteSpace('\n  ')
    LSSectionStmtImpl(SECTION_STMT)
      LSOutputSectionDescriptionImpl(OUTPUT_SECTION_DESCRIPTION)
        PsiElement(IDENTIFIER)('.data2')
        PsiWhiteSpace(' ')
        LSSectionAddressTypeImpl(SECTION_ADDRESS_TYPE)
          LSPrimaryExprImpl(PRIMARY_EXPR)
            PsiElement(IDENTIFIER)('.')
        PsiWhiteSpace(' ')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        PsiElement({)('{')
        PsiWhiteSpace(' ')
        LSInputSectionDescriptionImpl(INPUT_SECTION_DESCRIPTION)
          LSInputSectionRuleImpl(INPUT_SECTION_RULE)
            PsiElement(*)('*')
            PsiElement(()('(')
            LSInputSectionsListImpl(INPUT_SECTIONS_LIST)
              PsiElement(IDENTIFIER)('.data2')
            PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(})('}')
    PsiWhiteSpace('\n  ')
    LSSectionStmtImpl(SECTION_STMT)
      LSOutputSectionDescriptionImpl(OUTPUT_SECTION_DESCRIPTION)
        PsiElement(IDENTIFIER)('.data3')
        PsiWhiteSpace(' ')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        LSAlignExprImpl(ALIGN_EXPR)
          PsiElement(ALIGN)('ALIGN')
          PsiElement(()('(')
          LSPrimaryExprImpl(PRIMARY_EXPR)
            PsiElement(INT)('16')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement({)('{')
        PsiWhiteSpace(' ')
        LSInputSectionDescriptionImpl(INPUT_SECTION_DESCRIPTION)
          LSInputSectionRuleImpl(INPUT_SECTION_RULE)
            PsiElement(*)('*')
            PsiElement(()('(')
            LSInputSectionsListImpl(INPUT_SECTIONS_LIST)
              PsiElement(IDENTIFIER)('.data3')
            PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(})('}')
    PsiWhiteSpace('\n  ')
    LSSectionStmtImpl(SECTION_STMT)
      LSOutputSectionDescriptionImpl(OUTPUT_SECTION_DESCRIPTION)
        PsiElement(IDENTIFIER)('.bss')
        PsiWhiteSpace(' ')
        LSSectionAddressTypeImpl(SECTION_ADDRESS_TYPE)
          LSPrimaryExprImpl(PRIMARY_EXPR)
            PsiElement(IDENTIFIER)('.')
        PsiWhiteSpace(' ')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        LSAlignExprImpl(ALIGN_EXPR)
          PsiElement(ALIGN)('ALIGN')
          PsiElement(()('(')
          LSPrimaryExprImpl(PRIMARY_EXPR)
            PsiElement(INT)('16')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement({)('{')
        PsiWhiteSpace(' ')
        LSInputSectionDescriptionImpl(INPUT_SECTION_DESCRIPTION)
          LSInputSectionRuleImpl(INPUT_SECTION_RULE)
            PsiElement(*)('*')
            PsiElement(()('(')
            LSInputSectionsListImpl(INPUT_SECTIONS_LIST)
              PsiElement(IDENTIFIER)('.bss')
            PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(})('}')
    PsiWhiteSpace('\n')
    PsiElement(})('}')