RncFileImpl:Properties.rnc
  PsiComment(SINGLE_LINE_COMMENT)('# =========================================================')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#                                                          ')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# (c) 2004, RenderX                                        ')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#                                                          ')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Author: Alexander Peshkov <peshkov@renderx.com>          ')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#                                                          ')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Permission is granted to use this document, copy and     ')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# modify free of charge, provided that every derived work  ')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# bear a reference to the present document.                ')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#                                                          ')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# This document contains a computer program written in     ')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# XSL Transformations Language. It is published with no    ')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# warranty of any kind about its usability, as a mere      ')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# example of XSL technology. RenderX shall not be          ')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# considered liable for any damage or loss of data caused  ')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# by use of this program.')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#                                                          ')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# =========================================================')
  PsiWhiteSpace('\n\n')
  DOCUMENT
    NS_DECL
      PsiElement(KEYWORD_NAMESPACE)('namespace')
      PsiWhiteSpace(' ')
      PsiElement(IDENTIFIER)('local')
      PsiWhiteSpace(' ')
      PsiElement(=)('=')
      PsiWhiteSpace(' ')
      PsiElement(LITERAL)('""')
    PsiWhiteSpace('\n')
    NS_DECL
      PsiElement(KEYWORD_DEFAULT)('default')
      PsiWhiteSpace(' ')
      PsiElement(KEYWORD_NAMESPACE)('namespace')
      PsiWhiteSpace(' ')
      PsiElement(IDENTIFIER)('fo')
      PsiWhiteSpace(' ')
      PsiElement(=)('=')
      PsiWhiteSpace(' ')
      PsiElement(LITERAL)('"http://www.w3.org/1999/XSL/Format"')
    PsiWhiteSpace('\n')
    NS_DECL
      PsiElement(KEYWORD_NAMESPACE)('namespace')
      PsiWhiteSpace(' ')
      PsiElement(IDENTIFIER)('rx')
      PsiWhiteSpace(' ')
      PsiElement(=)('=')
      PsiWhiteSpace(' ')
      PsiElement(LITERAL)('"http://www.renderx.com/XSL/Extensions"')
    PsiWhiteSpace('\n\n')
    GRAMMAR_PATTERN
      INCLUDE
        PsiElement(KEYWORD_INCLUDE)('include')
        PsiWhiteSpace(' ')
        PsiElement(LITERAL)('"properties_groups.rnc"')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ****************************************************************************************')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Properties used by top-level elements')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ****************************************************************************************')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Root element can bear inheritable properties, passed further to ')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# fo:flows/fo:static-contents. Inheritable properties from fo:layout-master-set ')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# are banned in this version of schema.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('root.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('media-usage.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Document meta information - RenderX extension')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('meta-info.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        EMPTY_PATTERN
          PsiElement(KEYWORD_EMPTY)('empty')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# lknl klkj kjk')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('meta-field.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('name.attr')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('value.attr')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Color profile declarations')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('declarations.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        EMPTY_PATTERN
          PsiElement(KEYWORD_EMPTY)('empty')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('color-profile.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('src.attr')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('color-profile-name.attr')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('rendering-intent.attr')
            PsiElement(?)('?')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Bookmarks - RenderX extension')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('outline.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        EMPTY_PATTERN
          PsiElement(KEYWORD_EMPTY)('empty')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('bookmark.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          GROUP_PATTERN
            PsiElement(()('(')
            CHOICE
              REF_PATTERN
                PsiElement(IDENTIFIER)('internal-destination.attr')
              PsiWhiteSpace(' ')
              PsiElement(|)('|')
              PsiWhiteSpace(' ')
              REF_PATTERN
                PsiElement(IDENTIFIER)('external-destination.attr')
            PsiElement())(')')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('collapse-subtree.attr')
            PsiElement(?)('?')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('bookmark-label.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        EMPTY_PATTERN
          PsiElement(KEYWORD_EMPTY)('empty')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Layout-master-set contains a set of page-masters. Neither of')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# its descendants generates any area, so no inherited elements')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# can be specified on it or on its children.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('layout-master-set.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        EMPTY_PATTERN
          PsiElement(KEYWORD_EMPTY)('empty')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Page sequence master')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('page-sequence-master.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        REF_PATTERN
          PsiElement(IDENTIFIER)('master-name.attr')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Sequence specifiers.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('single-page-master-reference.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        REF_PATTERN
          PsiElement(IDENTIFIER)('master-reference.attr')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('repeatable-page-master-reference.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('master-reference.attr')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('maximum-repeats.attr')
            PsiElement(?)('?')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('repeatable-page-master-alternatives.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        OPTIONAL
          REF_PATTERN
            PsiElement(IDENTIFIER)('maximum-repeats.attr')
          PsiElement(?)('?')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('conditional-page-master-reference.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('master-reference.attr')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('page-position.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('odd-or-even.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('blank-or-not-blank.attr')
            PsiElement(?)('?')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Simple page master defines a page layout. It does not')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# explicitly generate any content. Most of its properties are')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# local except for writing-mode and reference-orientation that')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# are inherited by the underlying region-* objects.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# NOTE. We could think about a common background/padding/border')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# for every page instance generated by the page master. For such')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# a scope, we may add borders/padding/background to its features.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# However, in the current version this is ruled out explicitly by the XSL specs.')
      PsiWhiteSpace('\n  \n')
      DEFINE
        PsiElement(IDENTIFIER)('simple-page-master.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('margin-properties-CSS')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('master-name.attr')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('page-height.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('page-width.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('reference-orientation.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('size.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('writing-mode.attr')
            PsiElement(?)('?')
      PsiWhiteSpace('\n  \n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Region elements by themselves do not generate any content.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Reference-orientation and writing-mode may be inherited from')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# the page master; all other features are local.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('region-properties')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('border-padding-background-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('area-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('region-name.attr')
            PsiElement(?)('?')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Body region: middle of the page. Unlike side regions, this one')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# may have multiple columns.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================  ')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# NOTE: We have restricted margin properties to be margin-only,')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# allowing no spaces. This is done because no clear semantics')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# can be ascribed to single components of a space vector.')
      PsiWhiteSpace('\n  \n')
      DEFINE
        PsiElement(IDENTIFIER)('region-body.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('region-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('margin-properties-CSS')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('column-count.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('column-gap.attr')
            PsiElement(?)('?')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Side regions: page edges. These regions have extent and')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# precedence that is used to arbitrate corner conflicts. Side')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# regions are viewed as frames, and may not have margins.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# NOTE: Extent made obligatory: its default value of 0.0pt does not')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# make much sense.')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('region-before.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('region-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('extent.attr')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('precedence.attr')
            PsiElement(?)('?')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('region-after.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('region-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('extent.attr')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('precedence.attr')
            PsiElement(?)('?')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('region-start.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('region-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('extent.attr')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('region-end.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('region-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('extent.attr')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Page sequence. ')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('page-sequence.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('format.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('letter-value.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('grouping-separator.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('grouping-size.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('id.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('rx-key.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('initial-page-number.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('force-page-count.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('master-reference.attr')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Title')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#MEMO: Why 'id' attribute is not allowed here?')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#MEMO: Does it makes sence to add relative-position here? ')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# According to Section 7.12.1. "relative-position" it is allowed everywhere except fo:block-container')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#Should we allow all inline properties here??')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('title.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('accessibility-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('aural-properties-unheritable')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('border-padding-background-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('margin-properties-inline')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Flows. 'flow-name' feature defines linkage of the flow to a region in the page master.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('flow-properties')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('id.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('rx-key.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('flow-name.attr')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('flow.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        REF_PATTERN
          PsiElement(IDENTIFIER)('flow-properties')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('static-content.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        REF_PATTERN
          PsiElement(IDENTIFIER)('flow-properties')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# An extension element, rx:flow-section.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Acts like a top-level block with multiple columns.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('flow-section.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n    ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('column-count.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n    ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('column-gap.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n    ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('border-padding-background-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n    ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('margin-properties-block')
          PsiElement(,)(',')
          PsiWhiteSpace('\n    ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ****************************************************************************************')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Properties used by content-bearing elements')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ****************************************************************************************')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Properties of block formatting objects.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Besides properties used to format the block itself, it also conveys')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# formatting information to its inline-level children.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('block.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('block-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('character-properties-unheritable')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('text-altitude.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace(' \n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('text-depth.attr')
            PsiElement(?)('?')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Block container')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('#MEMO: We are forced to create separate element 'absolute-container' in order ')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# to satisfy XSL FO spec requirements. ')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('absolute-container.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('absolute-position-properties')
          PsiElement(,)(',')
          PsiWhiteSpace(' \n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('area-properties-unheritable')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('box-size-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('common-block-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('z-index.attr')
            PsiElement(?)('?')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# 'Usual' container element')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#MEMO: XSLFO spec prohibits use of 'relative-position' for fo:block-container,')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# but we believe that it should be allowed for non-absolutely positioned containers.')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('block-container.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('area-properties-unheritable')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('box-size-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('block-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('container-position.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('z-index.attr')
            PsiElement(?)('?')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Properties of inline formatting objects.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Unicode bidi-override')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#MEMO: This element is 'half-inline' accroding to spec, since it's exhibits the same ')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# bahavior and used in the same context but yet cannot carry some of inline-level')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# properties such as margins and border.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# We use the same set of properties as for inline here (except for unicode-bidi and')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# width properties) since we believe that this is a typical inline element.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Moreover fo:bidi-override is redundant from semantic point of view since it do not ')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# carry any additional information compared to regular fo:inline - just add')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# 'unicode-bidi' to fo:inline and you do not need fo:bidi-override anymore.')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('bidi-override.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('inline-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('unicode-bidi.attr')
            PsiElement(?)('?')
      PsiWhiteSpace('\n')
      PsiComment(SINGLE_LINE_COMMENT)('#MEMO: 'Folint' believes that direction property is required for fo:bidi-override,')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# but this is against the spec since this property can be inherited.')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Single character')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('character.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('character.attr')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('suppress-at-line-break.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('treat-as-word-space.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('common-inline-properties')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Initial property set specifies properties for one or more lines')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#MEMO: Spec is contradictory here. It states that use of this object is equivalent to')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# the fo:wrapper around the first line. At the same time spec allows on this element')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# such properties as 'Common Border, Padding, and Background Properties' ')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# - fo:wrapper can't have border/padding/etc and can bear inheritable properties only.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# We believe that this element should be treated as inline and thus should have')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# appropriate properties set.')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('initial-property-set.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        REF_PATTERN
          PsiElement(IDENTIFIER)('common-inline-properties')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# External graphic')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('external-graphic.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('graphic-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('src.attr')
            PsiElement(?)('?')
      PsiWhiteSpace('\n  \n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# In-stream graphic')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('instream-foreign-object.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        REF_PATTERN
          PsiElement(IDENTIFIER)('graphic-properties')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Inline')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('inline.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('height-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inline-properties')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Inline container')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# FIXME! We believe that this element should not bear not-inheritable properties,')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# which applies to text since it can't have text children.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Therefor we do not use 'common-inline-properties' set.')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('inline-container.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('id.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('rx-key.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('accessibility-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('aural-properties-unheritable')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('area-alignment-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('border-padding-background-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('keeps-properties-atomic')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('margin-properties-inline')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('relative-position-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('  \n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('area-properties-unheritable')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('box-size-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n  \n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Leader')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('leader.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        REF_PATTERN
          PsiElement(IDENTIFIER)('inline-properties')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('#MEMO: Note that 'inline-properties' includes block-level inheritable properties.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# But it's OK in our content-model since it allows block-level descendants wrapped')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# into fo:inline-container.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# At the same time block-level inheritable properties includes leader properties,')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# since they are inheritable... ')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Page Number')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('page-number.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('common-inline-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('wrap-option.attr')
            PsiElement(?)('?')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Page number citation')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('page-number-citation.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('common-inline-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('wrap-option.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('ref-id.attr')
      PsiWhiteSpace('\n  \n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Atomic elements for index ranges markup')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('begin-index-range.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('id.attr')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('rx-key.attr')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('end-index-range.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        REF_PATTERN
          PsiElement(IDENTIFIER)('ref-id.attr')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Page number list - index entry')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('page-index.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('common-inline-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('wrap-option.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('list-separator.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('ref-key.attr')
            PsiElement(?)('?')
      PsiWhiteSpace('\n')
      PsiComment(SINGLE_LINE_COMMENT)('#MEMO: There is no 'ref-key' attribute on page-index now, but it is allowed for ')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# backward compatibility.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#MEMO: Actually it makes sense to exclude id/rx:key fom the set of availabe properties ')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# for 'index-item', however we prefer no to do it just to avoid creation of yet another content')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# model (attribute set) for thid inline element.')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('index-item.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('common-inline-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('wrap-option.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('ref-key.attr')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('link-back.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('range-separator.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('merge-subsequent-page-numbers.attr')
            PsiElement(?)('?')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Properties of table formatting objects.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Table & Caption.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('table-and-caption.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('common-block-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('clear.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('relative-position-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('keeps-and-breaks-properties-atomic')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('#MEMO: Spec do not allows margins on fo:table-caption that is against common sence ')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# since this is a typical container.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# We do allow margins (they are included in common-block-properties).')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# 'Folint' does the same.')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('table-caption.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('clear.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('common-block-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('relative-position-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('box-size-properties')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('table.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('clear.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('common-block-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('box-size-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('keeps-and-breaks-properties-atomic')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('table-properties-unheritable')
      PsiWhiteSpace('\n  \n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Table column specifies common properties to ascribe to all')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# cells in a column *or a group of columns*. Note that, if both')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# 'number-columns-repeated' and 'number-columns-spanned' exceed')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# 1, the column counter is increased by 'number-columns-spanned'.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# it means that you only set properties for columns:')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# 'column-number'')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# 'column-number' + 'number-columns-spanned'')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# 'column-number' + 2 * 'number-columns-spanned'')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# and so on, leaving default properties for intermediate columns.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('table-column.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('column-number.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('column-width.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('number-columns-repeated.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('number-columns-spanned.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('background-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n')
          PsiComment(SINGLE_LINE_COMMENT)('#MEMO: Border properties applies to this formatting object only if the value of border-collapse')
          PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# for the table is "collapse" or "collapse-with-precedence" ')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('border-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('border-precedence-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Table header, table footer, and table body.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('row-group.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('id.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('rx-key.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('accessibility-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('aural-properties-unheritable')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('background-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n')
          PsiComment(SINGLE_LINE_COMMENT)('#MEMO: Border properties applies to this formatting object only if the value of border-collapse')
          PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# for the table is "collapse" or "collapse-with-precedence" ')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('border-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('border-precedence-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('relative-position-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('table-header.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        REF_PATTERN
          PsiElement(IDENTIFIER)('row-group.attlist')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('table-footer.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        REF_PATTERN
          PsiElement(IDENTIFIER)('row-group.attlist')
      PsiWhiteSpace('\n')
      PsiComment(SINGLE_LINE_COMMENT)('#MEMO: Spec do not list "Keep" properties almong applicable to fo:table-body that is a clear')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# case of  errata.')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('table-body.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('row-group.attlist')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('keeps-and-breaks-properties-atomic')
      PsiWhiteSpace('\n  \n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Table row.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#MEMO: Should we create separate collection of properties in 'properties_groups.rnc'')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# based on row-group.attlist?')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('table-row.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('row-group.attlist')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('height-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('keeps-and-breaks-properties-atomic')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Table cell.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#MEMO: Spec do not allows margins on fo:table-cell but 'Folint' does.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# We excluded margins from this element and therefor don't use 'common-block-properties'')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#MEMO: Spec do not list "Keep" properties almong applicable to fo:table-cell that is a clear')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# case of  errata.')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('table-cell.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('id.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('rx-key.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('column-number.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('accessibility-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('aural-properties-unheritable')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('border-padding-background-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('border-precedence-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('box-size-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('ends-row.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('keeps-and-breaks-properties-atomic')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('number-columns-spanned.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('number-rows-spanned.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('starts-row.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n  \n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Properties of list formatting objects.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================  ')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# List block.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('list-block.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('clear.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('common-block-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('keeps-and-breaks-properties-atomic')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('relative-position-properties')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# List item.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('list-item.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('common-block-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('keeps-and-breaks-properties-atomic')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('relative-position-properties')
      PsiWhiteSpace('  \n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# List item label and list item body')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('list-item-label.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('id.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('rx-key.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('accessibility-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('list-item-body.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('id.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('rx-key.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('accessibility-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n  \n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Floats and footnotes.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#MEMO: Outlines can't have id and therefor can't have rx:key properties so we are strict here.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# 'Folint' is loose here - it allows use of these properties.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#MEMO: We are forced to create two types of floats: side-floats and before-floats.')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('side-float.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('side-float.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('clear.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n')
      PsiComment(SINGLE_LINE_COMMENT)('# NOTE: before-float can't bear 'clear' property')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('before-float.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('before-float.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('footnote.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('accessibility-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('footnote-body.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('accessibility-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Simple link.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('basic-link.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('inline-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('external-destination.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('internal-destination.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('indicate-destination.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('show-destination.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('destination-placement-offset.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('target-processing-context.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('target-presentation-context.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('target-stylesheet.attr')
            PsiElement(?)('?')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Wrappers.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('wrapper.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('id.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('rx-key.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Marker. This element may embrace any content but cannot pass')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# properties to its children; so, it may not have features other')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# than marker-class-name.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#MEMO: We are more strict here making marker-class-name attribute a mandatory,')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# but marker with no marker-class-name is meaningless.')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('marker.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        REF_PATTERN
          PsiElement(IDENTIFIER)('marker-class-name.attr')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Marker retrieval.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# FIXME! We are more strict here making retrieve-class-name attribute a mandatory, ')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# but marker with no retrieve-class-name is meaningless.')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('retrieve-marker.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('retrieve-class-name.attr')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('retrieve-position.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('retrieve-boundary.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          PsiComment(SINGLE_LINE_COMMENT)('#MEMO: Is it OK to allow inheritable properties here? There are no explicit arguments')
          PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n  # against it in the spec.')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Multistate stuff.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Switch. ')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#MEMO: Should we have Aural Properties here as well?')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('multi-switch.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('id.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('rx-key.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('auto-restore.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('accessibility-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Single case.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('multi-case.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('id.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('rx-key.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('starting-state.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('case-name.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('case-title.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('accessibility-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n  \n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Toggle. ')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#MEMO: Should we have here inline-level properties only?')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('multi-toggle.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('switch-to.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('accessibility-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Multi-properties.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#Should we allow here any possible properties applicable to the objects inside of the flow?')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('multi-properties.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('id.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('rx-key.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('accessibility-properties')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')
      PsiWhiteSpace('\n  \n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Multi property set.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#Should we allow here any possible properties applicable to the objects inside of the flow?')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('multi-property-set.attlist')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('id.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('rx-key.attr')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('active-state.attr')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('inheritable-properties')