RncFileImpl:Main.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)('"elements.rnc"')
      PsiWhiteSpace('\n\n')
      START
        PsiElement(KEYWORD_START)('start')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        REF_PATTERN
          PsiElement(IDENTIFIER)('root')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ****************************************************************************************')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Element structure for top-level elements')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ****************************************************************************************')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Root element. Contains everything, generates nothing. It has an')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# id, a FO namespace prefix declaration, and other namespace')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# declarations if used.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('root')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('fo:root')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace(' ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('root.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            REF_PATTERN
              PsiElement(IDENTIFIER)('root.content')
          PsiWhiteSpace(' ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('root.content')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('meta-info')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('layout-master-set')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('declarations')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('outline')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n  ')
          ONE_OR_MORE
            REF_PATTERN
              PsiElement(IDENTIFIER)('page-sequence')
            PsiElement(+)('+')
      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')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('rx:meta-info')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace(' ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('meta-info.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            REF_PATTERN
              PsiElement(IDENTIFIER)('meta-info.content')
          PsiWhiteSpace(' ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('meta-info.content')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        ONE_OR_MORE
          REF_PATTERN
            PsiElement(IDENTIFIER)('meta-field')
          PsiElement(+)('+')
      PsiWhiteSpace(' \n\n')
      DEFINE
        PsiElement(IDENTIFIER)('meta-field')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('rx:meta-field')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace(' ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('meta-field.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            EMPTY_PATTERN
              PsiElement(KEYWORD_EMPTY)('empty')
          PsiWhiteSpace(' ')
          PsiElement(})('}')
      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')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('fo:declarations')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace(' ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('declarations.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            REF_PATTERN
              PsiElement(IDENTIFIER)('declarations.content')
          PsiWhiteSpace(' ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('declarations.content')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        ONE_OR_MORE
          REF_PATTERN
            PsiElement(IDENTIFIER)('color-profile')
          PsiElement(+)('+')
      PsiWhiteSpace(' \n\n')
      DEFINE
        PsiElement(IDENTIFIER)('color-profile')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('fo:color-profile')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace(' ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('color-profile.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            EMPTY_PATTERN
              PsiElement(KEYWORD_EMPTY)('empty')
          PsiWhiteSpace(' ')
          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')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('rx:outline')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace(' ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('outline.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            REF_PATTERN
              PsiElement(IDENTIFIER)('outline.content')
          PsiWhiteSpace(' ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('outline.content')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        ONE_OR_MORE
          REF_PATTERN
            PsiElement(IDENTIFIER)('bookmark')
          PsiElement(+)('+')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('bookmark')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('rx:bookmark')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace(' ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('bookmark.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            REF_PATTERN
              PsiElement(IDENTIFIER)('bookmark.content')
          PsiWhiteSpace(' ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('bookmark.content')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('bookmark-label')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          ZERO_OR_MORE
            REF_PATTERN
              PsiElement(IDENTIFIER)('bookmark')
            PsiElement(*)('*')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('bookmark-label')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('rx:bookmark-label')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace(' ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('bookmark-label.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            REF_PATTERN
              PsiElement(IDENTIFIER)('bookmark-label.content')
          PsiWhiteSpace(' ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('bookmark-label.content')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        TEXT_PATTERN
          PsiElement(KEYWORD_TEXT)('text')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Layout-master-set. Contains a set of page-masters.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Content model made more strict than in the spec, to enforce')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# that a page-sequence-master be always accompanied by at least')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# one simple-page-master.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('layout-master-set')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('fo:layout-master-set')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace(' ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('layout-master-set.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            REF_PATTERN
              PsiElement(IDENTIFIER)('layout-master-set.content')
          PsiWhiteSpace(' ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('layout-master-set.content')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        INTERLEAVE
          ZERO_OR_MORE
            REF_PATTERN
              PsiElement(IDENTIFIER)('page-sequence-master')
            PsiElement(*)('*')
          PsiWhiteSpace(' ')
          PsiElement(&)('&')
          PsiWhiteSpace(' ')
          ONE_OR_MORE
            REF_PATTERN
              PsiElement(IDENTIFIER)('simple-page-master')
            PsiElement(+)('+')
      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')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('fo:page-sequence-master')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace(' \n    ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('page-sequence-master.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            REF_PATTERN
              PsiElement(IDENTIFIER)('page-sequence-master.content')
          PsiWhiteSpace('\n  ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('page-sequence-master.content')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        ONE_OR_MORE
          GROUP_PATTERN
            PsiElement(()('(')
            CHOICE
              REF_PATTERN
                PsiElement(IDENTIFIER)('single-page-master-reference')
              PsiWhiteSpace('\n   ')
              PsiElement(|)('|')
              PsiWhiteSpace(' ')
              REF_PATTERN
                PsiElement(IDENTIFIER)('repeatable-page-master-reference')
              PsiWhiteSpace('\n   ')
              PsiElement(|)('|')
              PsiWhiteSpace(' ')
              REF_PATTERN
                PsiElement(IDENTIFIER)('repeatable-page-master-alternatives')
            PsiElement())(')')
          PsiElement(+)('+')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Sequence specifiers are predefined sequences of page masters')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# that are used by page sequence master to construct a desired')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# page collection.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('single-page-master-reference')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('fo:single-page-master-reference')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace('\n    ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('single-page-master-reference.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            EMPTY_PATTERN
              PsiElement(KEYWORD_EMPTY)('empty')
          PsiWhiteSpace('\n  ')
          PsiElement(})('}')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('repeatable-page-master-reference')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('fo:repeatable-page-master-reference')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace('\n    ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('repeatable-page-master-reference.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            EMPTY_PATTERN
              PsiElement(KEYWORD_EMPTY)('empty')
          PsiWhiteSpace('\n  ')
          PsiElement(})('}')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('repeatable-page-master-alternatives')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('fo:repeatable-page-master-alternatives')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace('\n    ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('repeatable-page-master-alternatives.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            REF_PATTERN
              PsiElement(IDENTIFIER)('repeatable-page-master-alternatives.content')
          PsiWhiteSpace('\n  ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('repeatable-page-master-alternatives.content')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        ONE_OR_MORE
          REF_PATTERN
            PsiElement(IDENTIFIER)('conditional-page-master-reference')
          PsiElement(+)('+')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('conditional-page-master-reference')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' \n  ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('fo:conditional-page-master-reference')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace('\n    ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('conditional-page-master-reference.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            EMPTY_PATTERN
              PsiElement(KEYWORD_EMPTY)('empty')
          PsiWhiteSpace('\n  ')
          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.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('simple-page-master')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n  ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('fo:simple-page-master')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace('\n    ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('simple-page-master.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace('\n    ')
            REF_PATTERN
              PsiElement(IDENTIFIER)('simple-page-master.content')
          PsiWhiteSpace('\n  ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('simple-page-master.content')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace('\n    ')
        SEQUENCE
          REF_PATTERN
            PsiElement(IDENTIFIER)('region-body')
          PsiElement(,)(',')
          PsiWhiteSpace('\n    ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('region-before')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n    ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('region-after')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n    ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('region-start')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace('\n    ')
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('region-end')
            PsiElement(?)('?')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Regions. The page instance is divided into subareas, whose')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# properties are described by the five region-* elements. These')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# elements by themselves do not generate any content.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Body region: middle of the page.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('region-body')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('fo:region-body')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace(' ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('region-body.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            EMPTY_PATTERN
              PsiElement(KEYWORD_EMPTY)('empty')
          PsiWhiteSpace(' ')
          PsiElement(})('}')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Side regions: page edges.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('region-before')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('fo:region-before')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace(' ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('region-before.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            EMPTY_PATTERN
              PsiElement(KEYWORD_EMPTY)('empty')
          PsiWhiteSpace(' ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('region-after')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('fo:region-after')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace(' ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('region-after.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            EMPTY_PATTERN
              PsiElement(KEYWORD_EMPTY)('empty')
          PsiWhiteSpace(' ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('region-start')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('fo:region-start')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace(' ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('region-start.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            EMPTY_PATTERN
              PsiElement(KEYWORD_EMPTY)('empty')
          PsiWhiteSpace(' ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('region-end')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('fo:region-end')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace(' ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('region-end.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            EMPTY_PATTERN
              PsiElement(KEYWORD_EMPTY)('empty')
          PsiWhiteSpace(' ')
          PsiElement(})('}')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Page sequence defines the order of choosing page masters to')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# accomodate all the contents generated by its fo:flow and')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# fo:static-content children, and the way of numbering them.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('page-sequence')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('fo:page-sequence')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace(' ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('page-sequence.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            REF_PATTERN
              PsiElement(IDENTIFIER)('page-sequence.content')
          PsiWhiteSpace(' ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('page-sequence.content')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        SEQUENCE
          OPTIONAL
            REF_PATTERN
              PsiElement(IDENTIFIER)('title')
            PsiElement(?)('?')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          ZERO_OR_MORE
            REF_PATTERN
              PsiElement(IDENTIFIER)('static-content')
            PsiElement(*)('*')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          REF_PATTERN
            PsiElement(IDENTIFIER)('flow')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Title. May not contain out-of-lines.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#MEMO: Spec states:')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# XSL> Additionally, an fo:title is not permitted to have as a descendant an fo:block-container')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# XSL> that generates an absolutely positioned area.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# We prohibit block-level descendants except for those descendats of fo:inline-container.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# This content model shared by fo:leader and fo:inline child of an fo:footnote.')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('title')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('fo:title')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace(' ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('title.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            REF_PATTERN
              PsiElement(IDENTIFIER)('title.content')
          PsiWhiteSpace(' ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('title.content')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        ZERO_OR_MORE
          REF_PATTERN
            PsiElement(IDENTIFIER)('inlines-inline')
          PsiElement(*)('*')
      PsiWhiteSpace('\n\n')
      PsiComment(SINGLE_LINE_COMMENT)('# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# Flows. They are just sequences of blocks. 'flow-name' feature')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# defines linkage of the flow to a region in the page master.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# An extension element, rx:flow-section, has been added in order')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# to overcome limitations on multicolumn layout imposed by XSL FO')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# ===============================================================')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#NOTE: We use tricks with nested grammar in order control marker/retrieve-marker ')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#and outlines  appearance inside fo:static-content and fo:flow')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#MEMO: We forcedly prohibit side-floats as descendants of ablsoutely positioned')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# block-containers. This problem appears due to the 'half-outline' behavior of')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# an absolute-container - it cannot contain outlines except for side-float and it cannot')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# be nested into any other outlines.')
      PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#NOTE: 'Folint' prohibits use of side-floats in static-content that is against the spec.')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('static-content')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('fo:static-content')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace(' ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('static-content.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            REF_PATTERN
              PsiElement(IDENTIFIER)('static-content.content')
          PsiWhiteSpace(' ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('static-content.content')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        GRAMMAR_PATTERN
          PsiElement(KEYWORD_GRAMMAR)('grammar')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace('\n  ')
          START
            PsiElement(KEYWORD_START)('start')
            PsiWhiteSpace(' ')
            PsiElement(=)('=')
            PsiWhiteSpace(' ')
            ONE_OR_MORE
              REF_PATTERN
                PsiElement(IDENTIFIER)('blocks')
              PsiElement(+)('+')
          PsiWhiteSpace('\n  ')
          INCLUDE
            PsiElement(KEYWORD_INCLUDE)('include')
            PsiWhiteSpace(' ')
            PsiElement(LITERAL)('"elements.rnc"')
            PsiWhiteSpace(' ')
            PsiElement({)('{')
            PsiWhiteSpace('\n    ')
            DEFINE
              PsiElement(IDENTIFIER)('retrieve-marker')
              PsiWhiteSpace(' ')
              PsiElement(=)('=')
              PsiWhiteSpace('  ')
              REF_PATTERN
                PsiElement(IDENTIFIER)('retrieve-marker-real')
            PsiWhiteSpace('\n    ')
            DEFINE
              PsiElement(IDENTIFIER)('absolute-container')
              PsiWhiteSpace(' ')
              PsiElement(=)('=')
              PsiWhiteSpace(' ')
              REF_PATTERN
                PsiElement(IDENTIFIER)('absolute-container-real')
            PsiWhiteSpace('\n    ')
            DEFINE
              PsiElement(IDENTIFIER)('absolute-container.content')
              PsiWhiteSpace(' ')
              PsiElement(=)('=')
              PsiWhiteSpace(' ')
              PARENT_REF
                PsiElement(KEYWORD_PARENT)('parent')
                PsiWhiteSpace(' ')
                PsiElement(IDENTIFIER)('absolute-container.content')
            PsiWhiteSpace('\n    ')
            DEFINE
              PsiElement(IDENTIFIER)('side-float')
              PsiWhiteSpace(' ')
              PsiElement(=)('=')
              PsiWhiteSpace(' ')
              REF_PATTERN
                PsiElement(IDENTIFIER)('side-float-real')
            PsiWhiteSpace('\n    ')
            DEFINE
              PsiElement(IDENTIFIER)('float.content')
              PsiWhiteSpace(' ')
              PsiElement(=)('=')
              PsiWhiteSpace(' ')
              PARENT_REF
                PsiElement(KEYWORD_PARENT)('parent')
                PsiWhiteSpace(' ')
                PsiElement(IDENTIFIER)('float.content')
            PsiWhiteSpace('\n    ')
            DEFINE
              PsiElement(IDENTIFIER)('leader.content')
              PsiWhiteSpace(' ')
              PsiElement(=)('=')
              PsiWhiteSpace(' ')
              PARENT_REF
                PsiElement(KEYWORD_PARENT)('parent')
                PsiWhiteSpace(' ')
                PsiElement(IDENTIFIER)('leader.content')
            PsiWhiteSpace('\n  ')
            PsiElement(})('}')
          PsiWhiteSpace('\n')
          PsiElement(})('}')
      PsiWhiteSpace('\n\n')
      DEFINE
        PsiElement(IDENTIFIER)('flow')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        PATTERN
          PsiElement(KEYWORD_ELEMENT)('element')
          PsiWhiteSpace(' ')
          NAME_CLASS
            NAME
              PsiElement(PREFIXED_NAME)('fo:flow')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace(' ')
          SEQUENCE
            REF_PATTERN
              PsiElement(IDENTIFIER)('flow.attlist')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            REF_PATTERN
              PsiElement(IDENTIFIER)('flow.content')
          PsiWhiteSpace(' ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      DEFINE
        PsiElement(IDENTIFIER)('flow.content')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        GRAMMAR_PATTERN
          PsiElement(KEYWORD_GRAMMAR)('grammar')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiWhiteSpace('\n  ')
          START
            PsiElement(KEYWORD_START)('start')
            PsiWhiteSpace(' ')
            PsiElement(=)('=')
            SEQUENCE
              ZERO_OR_MORE
                REF_PATTERN
                  PsiElement(IDENTIFIER)('marker')
                PsiElement(*)('*')
              PsiElement(,)(',')
              PsiWhiteSpace(' ')
              ONE_OR_MORE
                GROUP_PATTERN
                  PsiElement(()('(')
                  CHOICE
                    REF_PATTERN
                      PsiElement(IDENTIFIER)('blocks')
                    PsiWhiteSpace(' ')
                    PsiElement(|)('|')
                    PsiWhiteSpace(' ')
                    REF_PATTERN
                      PsiElement(IDENTIFIER)('flow-section')
                  PsiElement())(')')
                PsiElement(+)('+')
          PsiWhiteSpace('\n  ')
          INCLUDE
            PsiElement(KEYWORD_INCLUDE)('include')
            PsiWhiteSpace(' ')
            PsiElement(LITERAL)('"elements.rnc"')
            PsiWhiteSpace(' ')
            PsiElement({)('{')
            PsiWhiteSpace('\n    ')
            DEFINE
              PsiElement(IDENTIFIER)('absolute-container')
              PsiWhiteSpace(' ')
              PsiElement(=)('=')
              PsiWhiteSpace(' ')
              REF_PATTERN
                PsiElement(IDENTIFIER)('absolute-container-real')
            PsiWhiteSpace('\n    ')
            PsiComment(SINGLE_LINE_COMMENT)('#MEMO: We have two options here:')
            PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n    # * use parent content model which is too strict (side-floats descendants not allowed);')
            PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n    # * use current content model which is too loose (all outline descendants are allowed).')
            PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n    # We prefer stricter mode.')
            PsiWhiteSpace('\n    ')
            DEFINE
              PsiElement(IDENTIFIER)('absolute-container.content')
              PsiWhiteSpace(' ')
              PsiElement(=)('=')
              PsiWhiteSpace(' ')
              PARENT_REF
                PsiElement(KEYWORD_PARENT)('parent')
                PsiWhiteSpace(' ')
                PsiElement(IDENTIFIER)('absolute-container.content')
            PsiWhiteSpace('\n    ')
            DEFINE
              PsiElement(IDENTIFIER)('marker')
              PsiWhiteSpace(' ')
              PsiElement(=)('=')
              PsiWhiteSpace(' ')
              REF_PATTERN
                PsiElement(IDENTIFIER)('marker-real')
            PsiWhiteSpace('\n    ')
            DEFINE
              PsiElement(IDENTIFIER)('marker.content')
              PsiWhiteSpace(' ')
              PsiElement(=)('=')
              PsiWhiteSpace(' ')
              PARENT_REF
                PsiElement(KEYWORD_PARENT)('parent')
                PsiWhiteSpace(' ')
                PsiElement(IDENTIFIER)('marker.content')
            PsiWhiteSpace('\n    ')
            DEFINE
              PsiElement(IDENTIFIER)('side-float')
              PsiWhiteSpace(' ')
              PsiElement(=)('=')
              PsiWhiteSpace(' ')
              REF_PATTERN
                PsiElement(IDENTIFIER)('side-float-real')
            PsiWhiteSpace('\n    ')
            DEFINE
              PsiElement(IDENTIFIER)('before-float')
              PsiWhiteSpace(' ')
              PsiElement(=)('=')
              PsiWhiteSpace(' ')
              REF_PATTERN
                PsiElement(IDENTIFIER)('before-float-real')
            PsiWhiteSpace('\n    ')
            DEFINE
              PsiElement(IDENTIFIER)('float.content')
              PsiWhiteSpace(' ')
              PsiElement(=)('=')
              PsiWhiteSpace(' ')
              PARENT_REF
                PsiElement(KEYWORD_PARENT)('parent')
                PsiWhiteSpace(' ')
                PsiElement(IDENTIFIER)('float.content')
            PsiWhiteSpace('\n    ')
            DEFINE
              PsiElement(IDENTIFIER)('footnote')
              PsiWhiteSpace(' ')
              PsiElement(=)('=')
              PsiWhiteSpace(' ')
              REF_PATTERN
                PsiElement(IDENTIFIER)('footnote-real')
            PsiWhiteSpace('\n    ')
            DEFINE
              PsiElement(IDENTIFIER)('footnote.content')
              PsiWhiteSpace(' ')
              PsiElement(=)('=')
              PsiWhiteSpace(' ')
              PARENT_REF
                PsiElement(KEYWORD_PARENT)('parent')
                PsiWhiteSpace(' ')
                PsiElement(IDENTIFIER)('footnote.content')
            PsiWhiteSpace('\n    ')
            PsiComment(SINGLE_LINE_COMMENT)('#NOTE: fo:leader can't have outlines and marker descendants')
            PsiWhiteSpace('\n    ')
            DEFINE
              PsiElement(IDENTIFIER)('leader.content')
              PsiWhiteSpace(' ')
              PsiElement(=)('=')
              PsiWhiteSpace(' ')
              PARENT_REF
                PsiElement(KEYWORD_PARENT)('parent')
                PsiWhiteSpace(' ')
                PsiElement(IDENTIFIER)('leader.content')
            PsiWhiteSpace('\n  ')
            PsiElement(})('}')
          PsiWhiteSpace('\n  ')
          PsiComment(SINGLE_LINE_COMMENT)('# Extension element. Acts like a top-level block with multiple columns.')
          PsiWhiteSpace('\n  ')
          DEFINE
            PsiElement(IDENTIFIER)('flow-section')
            PsiWhiteSpace(' ')
            PsiElement(=)('=')
            PsiWhiteSpace(' ')
            PATTERN
              PsiElement(KEYWORD_ELEMENT)('element')
              PsiWhiteSpace(' ')
              NAME_CLASS
                NAME
                  PsiElement(PREFIXED_NAME)('rx:flow-section')
              PsiWhiteSpace(' ')
              PsiElement({)('{')
              PsiWhiteSpace(' ')
              SEQUENCE
                REF_PATTERN
                  PsiElement(IDENTIFIER)('flow-section.attlist')
                PsiElement(,)(',')
                PsiWhiteSpace(' ')
                REF_PATTERN
                  PsiElement(IDENTIFIER)('flow-section.content')
              PsiWhiteSpace(' ')
              PsiElement(})('}')
          PsiWhiteSpace('\n  ')
          DEFINE
            PsiElement(IDENTIFIER)('flow-section.content')
            PsiWhiteSpace(' ')
            PsiElement(=)('=')
            PsiWhiteSpace(' ')
            ONE_OR_MORE
              REF_PATTERN
                PsiElement(IDENTIFIER)('blocks')
              PsiElement(+)('+')
          PsiWhiteSpace('\n')
          PsiElement(})('}')
  PsiWhiteSpace('  \n\n')
  PsiComment(SINGLE_LINE_COMMENT)('#MEMO: Spec prohibits use of fo:leader as a descendant of itself.')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# We find this constraint somewhat abusive so we do not enforce it.')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# 'Folint' also does not controll this constraint')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# However following trick can be used to prevent fo:leader to appear as it's own child.')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# (to make it work we have to set leader.content to be notAllowed and move')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# actual content into leader.content-real in elements.rnc)')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#leader.content |= grammar {')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n# start = leader.content-real')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#  include "elements.rnc" {')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#    leader = notAllowed ')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#  }')
  PsiComment(SINGLE_LINE_COMMENT_CONTINUE)('\n#}')