FILE
  RsMacroImpl(MACRO)
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('macro_export')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('doc')
        RsMetaItemArgsImpl(META_ITEM_ARGS)
          PsiElement(()('(')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('hidden')
          PsiElement())(')')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    PsiElement(identifier)('macro_rules')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('__diesel_column')
    PsiWhiteSpace(' ')
    RsMacroBodyImpl(MACRO_BODY)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
              PsiElement($)('$')
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingImpl(MACRO_BINDING)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('table')
                  PsiElement(:)(':')
                  PsiElement(identifier)('ident')
              PsiElement())(')')
              RsMacroBindingGroupSeparatorImpl(MACRO_BINDING_GROUP_SEPARATOR)
                PsiElement(::)('::')
              PsiElement(*)('*')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('column_name')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
            PsiWhiteSpace(' ')
            PsiElement(->)('->')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('Type')
              PsiElement(:)(':')
              PsiElement(identifier)('ty')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            PsiElement(#)('#')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement([)('[')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                PsiElement(identifier)('allow')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(identifier)('non_camel_case_types')
                    PsiElement(,)(',')
                    PsiWhiteSpace(' ')
                    PsiElement(identifier)('dead_code')
                  PsiElement())(')')
              PsiElement(])(']')
            PsiWhiteSpace('\n        ')
            PsiElement(#)('#')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement([)('[')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                PsiElement(identifier)('derive')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(identifier)('Debug')
                    PsiElement(,)(',')
                    PsiWhiteSpace(' ')
                    PsiElement(identifier)('Clone')
                    PsiElement(,)(',')
                    PsiWhiteSpace(' ')
                    PsiElement(identifier)('Copy')
                  PsiElement())(')')
              PsiElement(])(']')
            PsiWhiteSpace('\n        ')
            PsiElement(pub)('pub')
            PsiWhiteSpace(' ')
            PsiElement(struct)('struct')
            PsiWhiteSpace(' ')
            RsMacroReferenceImpl(MACRO_REFERENCE)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('column_name')
            PsiElement(;)(';')
            PsiWhiteSpace('\n\n        ')
            PsiElement(impl)('impl')
            PsiWhiteSpace(' ')
            RsMacroReferenceImpl(MACRO_REFERENCE)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(crate)('crate')
            PsiElement(::)('::')
            PsiElement(identifier)('expression')
            PsiElement(::)('::')
            PsiElement(identifier)('Expression')
            PsiWhiteSpace(' ')
            PsiElement(for)('for')
            PsiWhiteSpace(' ')
            RsMacroReferenceImpl(MACRO_REFERENCE)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('column_name')
            PsiWhiteSpace(' ')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement({)('{')
              PsiWhiteSpace('\n            ')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                PsiElement(type)('type')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('SqlType')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('Type')
                PsiElement(;)(';')
              PsiWhiteSpace('\n        ')
              PsiElement(})('}')
            PsiWhiteSpace('\n\n        ')
            PsiElement(impl)('impl')
            PsiElement(<)('<')
            PsiElement(identifier)('DB')
            PsiElement(>)('>')
            PsiWhiteSpace(' ')
            RsMacroReferenceImpl(MACRO_REFERENCE)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(crate)('crate')
            PsiElement(::)('::')
            PsiElement(identifier)('query_builder')
            PsiElement(::)('::')
            PsiElement(identifier)('QueryFragment')
            PsiElement(<)('<')
            PsiElement(identifier)('DB')
            PsiElement(>)('>')
            PsiWhiteSpace(' ')
            PsiElement(for)('for')
            PsiWhiteSpace(' ')
            RsMacroReferenceImpl(MACRO_REFERENCE)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('column_name')
            PsiWhiteSpace(' ')
            PsiElement(where)('where')
            PsiWhiteSpace('\n            ')
            PsiElement(identifier)('DB')
            PsiElement(:)(':')
            PsiWhiteSpace(' ')
            RsMacroReferenceImpl(MACRO_REFERENCE)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(crate)('crate')
            PsiElement(::)('::')
            PsiElement(identifier)('backend')
            PsiElement(::)('::')
            PsiElement(identifier)('Backend')
            PsiElement(,)(',')
            PsiWhiteSpace('\n            ')
            PsiElement(<)('<')
            RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
              PsiElement($)('$')
              PsiElement(()('(')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('table')
              PsiElement())(')')
              RsMacroExpansionGroupSeparatorImpl(MACRO_EXPANSION_GROUP_SEPARATOR)
                PsiElement(::)('::')
              PsiElement(*)('*')
            PsiWhiteSpace(' ')
            PsiElement(as)('as')
            PsiWhiteSpace(' ')
            PsiElement(identifier)('QuerySource')
            PsiElement(>)('>')
            PsiElement(::)('::')
            PsiElement(identifier)('FromClause')
            PsiElement(:)(':')
            PsiWhiteSpace(' ')
            PsiElement(identifier)('QueryFragment')
            PsiElement(<)('<')
            PsiElement(identifier)('DB')
            PsiElement(>)('>')
            PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement({)('{')
              PsiWhiteSpace('\n            ')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                PsiElement(fn)('fn')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('to_sql')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(&)('&')
                    PsiElement(self)('self')
                    PsiElement(,)(',')
                    PsiWhiteSpace(' ')
                    PsiElement(identifier)('out')
                    PsiElement(:)(':')
                    PsiWhiteSpace(' ')
                    PsiElement(&)('&')
                    PsiElement(mut)('mut')
                    PsiWhiteSpace(' ')
                    PsiElement(identifier)('DB')
                    PsiElement(::)('::')
                    PsiElement(identifier)('QueryBuilder')
                  PsiElement())(')')
                PsiWhiteSpace(' ')
                PsiElement(->)('->')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(crate)('crate')
                PsiElement(::)('::')
                PsiElement(identifier)('query_builder')
                PsiElement(::)('::')
                PsiElement(identifier)('BuildQueryResult')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement({)('{')
                  PsiWhiteSpace('\n                ')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(identifier)('try')
                    PsiElement(!)('!')
                    RsMacroExpansionImpl(MACRO_EXPANSION)
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                          PsiElement($)('$')
                          PsiElement(()('(')
                          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                            RsMacroReferenceImpl(MACRO_REFERENCE)
                              PsiElement($)('$')
                              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                                PsiElement(identifier)('table')
                          PsiElement())(')')
                          RsMacroExpansionGroupSeparatorImpl(MACRO_EXPANSION_GROUP_SEPARATOR)
                            PsiElement(::)('::')
                          PsiElement(*)('*')
                        PsiElement(.)('.')
                        PsiElement(identifier)('from_clause')
                        RsMacroExpansionImpl(MACRO_EXPANSION)
                          PsiElement(()('(')
                          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                            <empty list>
                          PsiElement())(')')
                        PsiElement(.)('.')
                        PsiElement(identifier)('to_sql')
                        RsMacroExpansionImpl(MACRO_EXPANSION)
                          PsiElement(()('(')
                          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                            PsiElement(identifier)('out')
                          PsiElement())(')')
                      PsiElement())(')')
                    PsiElement(;)(';')
                    PsiWhiteSpace('\n                ')
                    PsiElement(identifier)('out')
                    PsiElement(.)('.')
                    PsiElement(identifier)('push_sql')
                    RsMacroExpansionImpl(MACRO_EXPANSION)
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        PsiElement(STRING_LITERAL)('"."')
                      PsiElement())(')')
                    PsiElement(;)(';')
                    PsiWhiteSpace('\n                ')
                    PsiElement(identifier)('out')
                    PsiElement(.)('.')
                    PsiElement(identifier)('push_identifier')
                    RsMacroExpansionImpl(MACRO_EXPANSION)
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        PsiElement(identifier)('stringify')
                        PsiElement(!)('!')
                        RsMacroExpansionImpl(MACRO_EXPANSION)
                          PsiElement(()('(')
                          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                            RsMacroReferenceImpl(MACRO_REFERENCE)
                              PsiElement($)('$')
                              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                                PsiElement(identifier)('column_name')
                          PsiElement())(')')
                      PsiElement())(')')
                  PsiWhiteSpace('\n            ')
                  PsiElement(})('}')
                PsiWhiteSpace('\n\n            ')
                PsiElement(fn)('fn')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('collect_binds')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(&)('&')
                    PsiElement(self)('self')
                    PsiElement(,)(',')
                    PsiWhiteSpace(' ')
                    PsiElement(identifier)('_out')
                    PsiElement(:)(':')
                    PsiWhiteSpace(' ')
                    PsiElement(&)('&')
                    PsiElement(mut)('mut')
                    PsiWhiteSpace(' ')
                    PsiElement(identifier)('DB')
                    PsiElement(::)('::')
                    PsiElement(identifier)('BindCollector')
                  PsiElement())(')')
                PsiWhiteSpace(' ')
                PsiElement(->)('->')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(crate)('crate')
                PsiElement(::)('::')
                PsiElement(identifier)('result')
                PsiElement(::)('::')
                PsiElement(identifier)('QueryResult')
                PsiElement(<)('<')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    <empty list>
                  PsiElement())(')')
                PsiElement(>)('>')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement({)('{')
                  PsiWhiteSpace('\n                ')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(identifier)('Ok')
                    RsMacroExpansionImpl(MACRO_EXPANSION)
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        RsMacroExpansionImpl(MACRO_EXPANSION)
                          PsiElement(()('(')
                          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                            <empty list>
                          PsiElement())(')')
                      PsiElement())(')')
                  PsiWhiteSpace('\n            ')
                  PsiElement(})('}')
                PsiWhiteSpace('\n\n            ')
                PsiElement(fn)('fn')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('is_safe_to_cache_prepared')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(&)('&')
                    PsiElement(self)('self')
                  PsiElement())(')')
                PsiWhiteSpace(' ')
                PsiElement(->)('->')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('bool')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement({)('{')
                  PsiWhiteSpace('\n                ')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(BOOL_LITERAL)('true')
                  PsiWhiteSpace('\n            ')
                  PsiElement(})('}')
              PsiWhiteSpace('\n        ')
              PsiElement(})('}')
            PsiWhiteSpace('\n\n        ')
            PsiElement(identifier)('impl_query_id')
            PsiElement(!)('!')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement(()('(')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('column_name')
              PsiElement())(')')
            PsiElement(;)(';')
            PsiWhiteSpace('\n\n        ')
            PsiElement(impl)('impl')
            PsiWhiteSpace(' ')
            PsiElement(identifier)('SelectableExpression')
            PsiElement(<)('<')
            RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
              PsiElement($)('$')
              PsiElement(()('(')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('table')
              PsiElement())(')')
              RsMacroExpansionGroupSeparatorImpl(MACRO_EXPANSION_GROUP_SEPARATOR)
                PsiElement(::)('::')
              PsiElement(*)('*')
            PsiElement(>)('>')
            PsiWhiteSpace(' ')
            PsiElement(for)('for')
            PsiWhiteSpace(' ')
            RsMacroReferenceImpl(MACRO_REFERENCE)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('column_name')
            PsiWhiteSpace(' ')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement({)('{')
              PsiWhiteSpace('\n        ')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                <empty list>
              PsiElement(})('}')
          PsiWhiteSpace('\n\n    ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsMacroImpl(MACRO)
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('macro_export')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    PsiElement(identifier)('macro_rules')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('table')
    PsiWhiteSpace(' ')
    RsMacroBodyImpl(MACRO_BODY)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      PsiComment(<EOL_COMMENT>)('// Put `use` statements at the end because macro_rules! cannot figure out')
      PsiWhiteSpace('\n    ')
      PsiComment(<EOL_COMMENT>)('// if `use` is an ident or not (hint: It's not)')
      PsiWhiteSpace('\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          PsiWhiteSpace('\n        ')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            PsiElement(use)('use')
            PsiWhiteSpace(' ')
            RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
              PsiElement($)('$')
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingImpl(MACRO_BINDING)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('import')
                  PsiElement(:)(':')
                  PsiElement(identifier)('tt')
              PsiElement())(')')
              RsMacroBindingGroupSeparatorImpl(MACRO_BINDING_GROUP_SEPARATOR)
                PsiElement(::)('::')
              PsiElement(+)('+')
            PsiElement(;)(';')
            PsiWhiteSpace(' ')
            RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
              PsiElement($)('$')
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingImpl(MACRO_BINDING)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('rest')
                  PsiElement(:)(':')
                  PsiElement(identifier)('tt')
              PsiElement())(')')
              PsiElement(+)('+')
          PsiWhiteSpace('\n    ')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            PsiElement(identifier)('table')
            PsiElement(!)('!')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement(()('(')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('rest')
                  PsiElement())(')')
                  PsiElement(+)('+')
                PsiWhiteSpace(' ')
                PsiElement(use)('use')
                PsiWhiteSpace(' ')
                RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('import')
                  PsiElement())(')')
                  RsMacroExpansionGroupSeparatorImpl(MACRO_EXPANSION_GROUP_SEPARATOR)
                    PsiElement(::)('::')
                  PsiElement(+)('+')
                PsiElement(;)(';')
              PsiElement())(')')
            PsiElement(;)(';')
          PsiWhiteSpace('\n    ')
          PsiElement(})('}')
      PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      PsiComment(<EOL_COMMENT>)('// Add the primary key if it's not present')
      PsiWhiteSpace('\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          PsiWhiteSpace('\n        ')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
              PsiElement($)('$')
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingImpl(MACRO_BINDING)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('table_name')
                  PsiElement(:)(':')
                  PsiElement(identifier)('ident')
              PsiElement())(')')
              RsMacroBindingGroupSeparatorImpl(MACRO_BINDING_GROUP_SEPARATOR)
                PsiElement(.)('.')
              PsiElement(+)('+')
            PsiWhiteSpace(' ')
            RsMacroPatternImpl(MACRO_PATTERN)
              PsiElement({)('{')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                    RsMacroBindingImpl(MACRO_BINDING)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('body')
                      PsiElement(:)(':')
                      PsiElement(identifier)('tt')
                  PsiElement())(')')
                  PsiElement(*)('*')
              PsiElement(})('}')
            PsiWhiteSpace('\n        ')
            RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
              PsiElement($)('$')
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingImpl(MACRO_BINDING)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('imports')
                  PsiElement(:)(':')
                  PsiElement(identifier)('tt')
              PsiElement())(')')
              PsiElement(*)('*')
          PsiWhiteSpace('\n    ')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            PsiElement(identifier)('table')
            PsiElement(!)('!')
            PsiWhiteSpace(' ')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement({)('{')
              PsiWhiteSpace('\n            ')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('table_name')
                  PsiElement())(')')
                  RsMacroExpansionGroupSeparatorImpl(MACRO_EXPANSION_GROUP_SEPARATOR)
                    PsiElement(.)('.')
                  PsiElement(+)('+')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(identifier)('id')
                  PsiElement())(')')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement({)('{')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                      PsiElement($)('$')
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        RsMacroReferenceImpl(MACRO_REFERENCE)
                          PsiElement($)('$')
                          RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                            PsiElement(identifier)('body')
                      PsiElement())(')')
                      PsiElement(*)('*')
                  PsiElement(})('}')
                PsiWhiteSpace(' ')
                RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('imports')
                  PsiElement())(')')
                  PsiElement(*)('*')
              PsiWhiteSpace('\n        ')
              PsiElement(})('}')
          PsiWhiteSpace('\n    ')
          PsiElement(})('}')
      PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      PsiComment(<EOL_COMMENT>)('// Add the schema name if it's not present')
      PsiWhiteSpace('\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          PsiWhiteSpace('\n        ')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('name')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
            PsiWhiteSpace(' ')
            RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
              PsiElement($)('$')
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroPatternImpl(MACRO_PATTERN)
                  PsiElement(()('(')
                  RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                    RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
                      PsiElement($)('$')
                      PsiElement(()('(')
                      RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                        RsMacroBindingImpl(MACRO_BINDING)
                          PsiElement($)('$')
                          RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                            PsiElement(identifier)('pk')
                          PsiElement(:)(':')
                          PsiElement(identifier)('ident')
                      PsiElement())(')')
                      RsMacroBindingGroupSeparatorImpl(MACRO_BINDING_GROUP_SEPARATOR)
                        PsiElement(,)(',')
                      PsiElement(+)('+')
                  PsiElement())(')')
              PsiElement())(')')
              PsiElement(*)('*')
            PsiWhiteSpace(' ')
            RsMacroPatternImpl(MACRO_PATTERN)
              PsiElement({)('{')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                    RsMacroBindingImpl(MACRO_BINDING)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('body')
                      PsiElement(:)(':')
                      PsiElement(identifier)('tt')
                  PsiElement())(')')
                  PsiElement(*)('*')
              PsiElement(})('}')
            PsiWhiteSpace('\n        ')
            RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
              PsiElement($)('$')
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingImpl(MACRO_BINDING)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('imports')
                  PsiElement(:)(':')
                  PsiElement(identifier)('tt')
              PsiElement())(')')
              PsiElement(*)('*')
          PsiWhiteSpace('\n    ')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            PsiElement(identifier)('table')
            PsiElement(!)('!')
            PsiWhiteSpace(' ')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement({)('{')
              PsiWhiteSpace('\n            ')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                PsiElement(identifier)('public')
                PsiWhiteSpace(' ')
                PsiElement(.)('.')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('name')
                PsiWhiteSpace(' ')
                RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroExpansionImpl(MACRO_EXPANSION)
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                          PsiElement($)('$')
                          PsiElement(()('(')
                          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                            RsMacroReferenceImpl(MACRO_REFERENCE)
                              PsiElement($)('$')
                              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                                PsiElement(identifier)('pk')
                          PsiElement())(')')
                          RsMacroExpansionGroupSeparatorImpl(MACRO_EXPANSION_GROUP_SEPARATOR)
                            PsiElement(,)(',')
                          PsiElement(+)('+')
                      PsiElement())(')')
                  PsiElement())(')')
                  PsiElement(*)('*')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement({)('{')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                      PsiElement($)('$')
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        RsMacroReferenceImpl(MACRO_REFERENCE)
                          PsiElement($)('$')
                          RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                            PsiElement(identifier)('body')
                      PsiElement())(')')
                      PsiElement(*)('*')
                  PsiElement(})('}')
                PsiWhiteSpace(' ')
                RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('imports')
                  PsiElement())(')')
                  PsiElement(*)('*')
              PsiWhiteSpace('\n        ')
              PsiElement(})('}')
          PsiWhiteSpace('\n    ')
          PsiElement(})('}')
      PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      PsiComment(<EOL_COMMENT>)('// Import `diesel::types::*` if no imports were given')
      PsiWhiteSpace('\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          PsiWhiteSpace('\n        ')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
              PsiElement($)('$')
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingImpl(MACRO_BINDING)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('table_name')
                  PsiElement(:)(':')
                  PsiElement(identifier)('ident')
              PsiElement())(')')
              RsMacroBindingGroupSeparatorImpl(MACRO_BINDING_GROUP_SEPARATOR)
                PsiElement(.)('.')
              PsiElement(+)('+')
            PsiWhiteSpace(' ')
            RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
              PsiElement($)('$')
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroPatternImpl(MACRO_PATTERN)
                  PsiElement(()('(')
                  RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                    RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
                      PsiElement($)('$')
                      PsiElement(()('(')
                      RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                        RsMacroBindingImpl(MACRO_BINDING)
                          PsiElement($)('$')
                          RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                            PsiElement(identifier)('pk')
                          PsiElement(:)(':')
                          PsiElement(identifier)('ident')
                      PsiElement())(')')
                      RsMacroBindingGroupSeparatorImpl(MACRO_BINDING_GROUP_SEPARATOR)
                        PsiElement(,)(',')
                      PsiElement(+)('+')
                  PsiElement())(')')
              PsiElement())(')')
              PsiElement(*)('*')
            PsiWhiteSpace(' ')
            RsMacroPatternImpl(MACRO_PATTERN)
              PsiElement({)('{')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                    RsMacroBindingImpl(MACRO_BINDING)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('body')
                      PsiElement(:)(':')
                      PsiElement(identifier)('tt')
                  PsiElement())(')')
                  PsiElement(*)('*')
              PsiElement(})('}')
          PsiWhiteSpace('\n    ')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            PsiElement(identifier)('table')
            PsiElement(!)('!')
            PsiWhiteSpace(' ')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement({)('{')
              PsiWhiteSpace('\n            ')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('table_name')
                  PsiElement())(')')
                  RsMacroExpansionGroupSeparatorImpl(MACRO_EXPANSION_GROUP_SEPARATOR)
                    PsiElement(.)('.')
                  PsiElement(+)('+')
                PsiWhiteSpace(' ')
                RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroExpansionImpl(MACRO_EXPANSION)
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                          PsiElement($)('$')
                          PsiElement(()('(')
                          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                            RsMacroReferenceImpl(MACRO_REFERENCE)
                              PsiElement($)('$')
                              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                                PsiElement(identifier)('pk')
                          PsiElement())(')')
                          RsMacroExpansionGroupSeparatorImpl(MACRO_EXPANSION_GROUP_SEPARATOR)
                            PsiElement(,)(',')
                          PsiElement(+)('+')
                      PsiElement())(')')
                  PsiElement())(')')
                  PsiElement(*)('*')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement({)('{')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                      PsiElement($)('$')
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        RsMacroReferenceImpl(MACRO_REFERENCE)
                          PsiElement($)('$')
                          RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                            PsiElement(identifier)('body')
                      PsiElement())(')')
                      PsiElement(*)('*')
                  PsiElement(})('}')
                PsiWhiteSpace('\n            ')
                PsiElement(use)('use')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(crate)('crate')
                PsiElement(::)('::')
                PsiElement(identifier)('types')
                PsiElement(::)('::')
                PsiElement(*)('*')
                PsiElement(;)(';')
              PsiWhiteSpace('\n        ')
              PsiElement(})('}')
          PsiWhiteSpace('\n    ')
          PsiElement(})('}')
      PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      PsiComment(<EOL_COMMENT>)('// Terminal with single-column pk')
      PsiWhiteSpace('\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          PsiWhiteSpace('\n        ')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('schema_name')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
            PsiWhiteSpace(' ')
            PsiElement(.)('.')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('name')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
            PsiWhiteSpace(' ')
            RsMacroPatternImpl(MACRO_PATTERN)
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingImpl(MACRO_BINDING)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('pk')
                  PsiElement(:)(':')
                  PsiElement(identifier)('ident')
              PsiElement())(')')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('body')
              PsiElement(:)(':')
              PsiElement(identifier)('tt')
            PsiWhiteSpace('\n        ')
            RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
              PsiElement($)('$')
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingImpl(MACRO_BINDING)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('imports')
                  PsiElement(:)(':')
                  PsiElement(identifier)('tt')
              PsiElement())(')')
              PsiElement(+)('+')
          PsiWhiteSpace('\n    ')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            PsiElement(identifier)('table_body')
            PsiElement(!)('!')
            PsiWhiteSpace(' ')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement({)('{')
              PsiWhiteSpace('\n            ')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('schema_name')
                PsiWhiteSpace(' ')
                PsiElement(.)('.')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('name')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('pk')
                  PsiElement())(')')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('body')
                PsiWhiteSpace(' ')
                RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('imports')
                  PsiElement())(')')
                  PsiElement(+)('+')
              PsiWhiteSpace('\n        ')
              PsiElement(})('}')
          PsiWhiteSpace('\n    ')
          PsiElement(})('}')
      PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      PsiComment(<EOL_COMMENT>)('// Terminal with composite pk (add a trailing comma)')
      PsiWhiteSpace('\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          PsiWhiteSpace('\n        ')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('schema_name')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
            PsiWhiteSpace(' ')
            PsiElement(.)('.')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('name')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
            PsiWhiteSpace(' ')
            RsMacroPatternImpl(MACRO_PATTERN)
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingImpl(MACRO_BINDING)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('pk')
                  PsiElement(:)(':')
                  PsiElement(identifier)('ident')
                PsiElement(,)(',')
                PsiWhiteSpace(' ')
                RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                    RsMacroBindingImpl(MACRO_BINDING)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('composite_pk')
                      PsiElement(:)(':')
                      PsiElement(identifier)('ident')
                  PsiElement())(')')
                  RsMacroBindingGroupSeparatorImpl(MACRO_BINDING_GROUP_SEPARATOR)
                    PsiElement(,)(',')
                  PsiElement(+)('+')
              PsiElement())(')')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('body')
              PsiElement(:)(':')
              PsiElement(identifier)('tt')
            PsiWhiteSpace('\n        ')
            RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
              PsiElement($)('$')
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingImpl(MACRO_BINDING)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('imports')
                  PsiElement(:)(':')
                  PsiElement(identifier)('tt')
              PsiElement())(')')
              PsiElement(+)('+')
          PsiWhiteSpace('\n    ')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            PsiElement(identifier)('table_body')
            PsiElement(!)('!')
            PsiWhiteSpace(' ')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement({)('{')
              PsiWhiteSpace('\n            ')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('schema_name')
                PsiWhiteSpace(' ')
                PsiElement(.)('.')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('name')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('pk')
                    PsiElement(,)(',')
                    PsiWhiteSpace(' ')
                    RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                      PsiElement($)('$')
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        RsMacroReferenceImpl(MACRO_REFERENCE)
                          PsiElement($)('$')
                          RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                            PsiElement(identifier)('composite_pk')
                        PsiElement(,)(',')
                      PsiElement())(')')
                      PsiElement(+)('+')
                  PsiElement())(')')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('body')
                PsiWhiteSpace(' ')
                RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('imports')
                  PsiElement())(')')
                  PsiElement(+)('+')
              PsiWhiteSpace('\n        ')
              PsiElement(})('}')
          PsiWhiteSpace('\n    ')
          PsiElement(})('}')
      PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsMacroImpl(MACRO)
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('macro_export')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('doc')
        RsMetaItemArgsImpl(META_ITEM_ARGS)
          PsiElement(()('(')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('hidden')
          PsiElement())(')')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    PsiElement(identifier)('macro_rules')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('table_body')
    PsiWhiteSpace(' ')
    RsMacroBodyImpl(MACRO_BODY)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          PsiWhiteSpace('\n        ')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('schema_name')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
            PsiWhiteSpace(' ')
            PsiElement(.)('.')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('name')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
            PsiWhiteSpace(' ')
            RsMacroPatternImpl(MACRO_PATTERN)
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingImpl(MACRO_BINDING)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('pk')
                  PsiElement(:)(':')
                  PsiElement(identifier)('ident')
              PsiElement())(')')
            PsiWhiteSpace(' ')
            RsMacroPatternImpl(MACRO_PATTERN)
              PsiElement({)('{')
              PsiWhiteSpace('\n            ')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                    RsMacroBindingImpl(MACRO_BINDING)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('column_name')
                      PsiElement(:)(':')
                      PsiElement(identifier)('ident')
                    PsiWhiteSpace(' ')
                    PsiElement(->)('->')
                    PsiWhiteSpace(' ')
                    RsMacroBindingImpl(MACRO_BINDING)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('Type')
                      PsiElement(:)(':')
                      PsiElement(identifier)('ty')
                    PsiElement(,)(',')
                  PsiElement())(')')
                  PsiElement(+)('+')
              PsiWhiteSpace('\n        ')
              PsiElement(})('}')
            PsiWhiteSpace('\n        ')
            RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
              PsiElement($)('$')
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                PsiElement(use)('use')
                PsiWhiteSpace(' ')
                RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                    RsMacroBindingImpl(MACRO_BINDING)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('import')
                      PsiElement(:)(':')
                      PsiElement(identifier)('tt')
                  PsiElement())(')')
                  RsMacroBindingGroupSeparatorImpl(MACRO_BINDING_GROUP_SEPARATOR)
                    PsiElement(::)('::')
                  PsiElement(+)('+')
                PsiElement(;)(';')
              PsiElement())(')')
              PsiElement(+)('+')
          PsiWhiteSpace('\n    ')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            PsiElement(identifier)('table_body')
            PsiElement(!)('!')
            PsiWhiteSpace(' ')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement({)('{')
              PsiWhiteSpace('\n            ')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                PsiElement(identifier)('schema_name')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('schema_name')
                PsiElement(,)(',')
                PsiWhiteSpace('\n            ')
                PsiElement(identifier)('table_name')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('name')
                PsiElement(,)(',')
                PsiWhiteSpace('\n            ')
                PsiElement(identifier)('primary_key_ty')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('columns')
                PsiElement(::)('::')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('pk')
                PsiElement(,)(',')
                PsiWhiteSpace('\n            ')
                PsiElement(identifier)('primary_key_expr')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('columns')
                PsiElement(::)('::')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('pk')
                PsiElement(,)(',')
                PsiWhiteSpace('\n            ')
                PsiElement(identifier)('columns')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement([)('[')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                      PsiElement($)('$')
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        RsMacroReferenceImpl(MACRO_REFERENCE)
                          PsiElement($)('$')
                          RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                            PsiElement(identifier)('column_name')
                        PsiWhiteSpace(' ')
                        PsiElement(->)('->')
                        PsiWhiteSpace(' ')
                        RsMacroReferenceImpl(MACRO_REFERENCE)
                          PsiElement($)('$')
                          RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                            PsiElement(identifier)('Type')
                        PsiElement(,)(',')
                      PsiElement())(')')
                      PsiElement(+)('+')
                  PsiElement(])(']')
                PsiElement(,)(',')
                PsiWhiteSpace('\n            ')
                PsiElement(identifier)('imports')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                      PsiElement($)('$')
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                          PsiElement($)('$')
                          PsiElement(()('(')
                          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                            RsMacroReferenceImpl(MACRO_REFERENCE)
                              PsiElement($)('$')
                              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                                PsiElement(identifier)('import')
                          PsiElement())(')')
                          RsMacroExpansionGroupSeparatorImpl(MACRO_EXPANSION_GROUP_SEPARATOR)
                            PsiElement(::)('::')
                          PsiElement(+)('+')
                      PsiElement())(')')
                      RsMacroExpansionGroupSeparatorImpl(MACRO_EXPANSION_GROUP_SEPARATOR)
                        PsiElement(,)(',')
                      PsiElement(+)('+')
                  PsiElement())(')')
                PsiElement(,)(',')
              PsiWhiteSpace('\n        ')
              PsiElement(})('}')
          PsiWhiteSpace('\n    ')
          PsiElement(})('}')
      PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          PsiWhiteSpace('\n        ')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('schema_name')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
            PsiWhiteSpace(' ')
            PsiElement(.)('.')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('name')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
            PsiWhiteSpace(' ')
            RsMacroPatternImpl(MACRO_PATTERN)
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                    RsMacroBindingImpl(MACRO_BINDING)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('pk')
                      PsiElement(:)(':')
                      PsiElement(identifier)('ident')
                    PsiElement(,)(',')
                  PsiElement())(')')
                  PsiElement(+)('+')
              PsiElement())(')')
            PsiWhiteSpace(' ')
            RsMacroPatternImpl(MACRO_PATTERN)
              PsiElement({)('{')
              PsiWhiteSpace('\n            ')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                    RsMacroBindingImpl(MACRO_BINDING)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('column_name')
                      PsiElement(:)(':')
                      PsiElement(identifier)('ident')
                    PsiWhiteSpace(' ')
                    PsiElement(->)('->')
                    PsiWhiteSpace(' ')
                    RsMacroBindingImpl(MACRO_BINDING)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('Type')
                      PsiElement(:)(':')
                      PsiElement(identifier)('ty')
                    PsiElement(,)(',')
                  PsiElement())(')')
                  PsiElement(+)('+')
              PsiWhiteSpace('\n        ')
              PsiElement(})('}')
            PsiWhiteSpace('\n        ')
            RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
              PsiElement($)('$')
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                PsiElement(use)('use')
                PsiWhiteSpace(' ')
                RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                    RsMacroBindingImpl(MACRO_BINDING)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('import')
                      PsiElement(:)(':')
                      PsiElement(identifier)('tt')
                  PsiElement())(')')
                  RsMacroBindingGroupSeparatorImpl(MACRO_BINDING_GROUP_SEPARATOR)
                    PsiElement(::)('::')
                  PsiElement(+)('+')
                PsiElement(;)(';')
              PsiElement())(')')
              PsiElement(+)('+')
          PsiWhiteSpace('\n    ')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            PsiElement(identifier)('table_body')
            PsiElement(!)('!')
            PsiWhiteSpace(' ')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement({)('{')
              PsiWhiteSpace('\n            ')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                PsiElement(identifier)('schema_name')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('schema_name')
                PsiElement(,)(',')
                PsiWhiteSpace('\n            ')
                PsiElement(identifier)('table_name')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('name')
                PsiElement(,)(',')
                PsiWhiteSpace('\n            ')
                PsiElement(identifier)('primary_key_ty')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                      PsiElement($)('$')
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        PsiElement(identifier)('columns')
                        PsiElement(::)('::')
                        RsMacroReferenceImpl(MACRO_REFERENCE)
                          PsiElement($)('$')
                          RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                            PsiElement(identifier)('pk')
                        PsiElement(,)(',')
                      PsiElement())(')')
                      PsiElement(+)('+')
                  PsiElement())(')')
                PsiElement(,)(',')
                PsiWhiteSpace('\n            ')
                PsiElement(identifier)('primary_key_expr')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                      PsiElement($)('$')
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        PsiElement(identifier)('columns')
                        PsiElement(::)('::')
                        RsMacroReferenceImpl(MACRO_REFERENCE)
                          PsiElement($)('$')
                          RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                            PsiElement(identifier)('pk')
                        PsiElement(,)(',')
                      PsiElement())(')')
                      PsiElement(+)('+')
                  PsiElement())(')')
                PsiElement(,)(',')
                PsiWhiteSpace('\n            ')
                PsiElement(identifier)('columns')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement([)('[')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                      PsiElement($)('$')
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        RsMacroReferenceImpl(MACRO_REFERENCE)
                          PsiElement($)('$')
                          RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                            PsiElement(identifier)('column_name')
                        PsiWhiteSpace(' ')
                        PsiElement(->)('->')
                        PsiWhiteSpace(' ')
                        RsMacroReferenceImpl(MACRO_REFERENCE)
                          PsiElement($)('$')
                          RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                            PsiElement(identifier)('Type')
                        PsiElement(,)(',')
                      PsiElement())(')')
                      PsiElement(+)('+')
                  PsiElement(])(']')
                PsiElement(,)(',')
                PsiWhiteSpace('\n            ')
                PsiElement(identifier)('imports')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                      PsiElement($)('$')
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                          PsiElement($)('$')
                          PsiElement(()('(')
                          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                            RsMacroReferenceImpl(MACRO_REFERENCE)
                              PsiElement($)('$')
                              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                                PsiElement(identifier)('import')
                          PsiElement())(')')
                          RsMacroExpansionGroupSeparatorImpl(MACRO_EXPANSION_GROUP_SEPARATOR)
                            PsiElement(::)('::')
                          PsiElement(+)('+')
                      PsiElement())(')')
                      RsMacroExpansionGroupSeparatorImpl(MACRO_EXPANSION_GROUP_SEPARATOR)
                        PsiElement(,)(',')
                      PsiElement(+)('+')
                  PsiElement())(')')
                PsiElement(,)(',')
              PsiWhiteSpace('\n        ')
              PsiElement(})('}')
          PsiWhiteSpace('\n    ')
          PsiElement(})('}')
      PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          PsiWhiteSpace('\n        ')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            PsiElement(identifier)('schema_name')
            PsiWhiteSpace(' ')
            PsiElement(=)('=')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('schema_name')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
            PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            PsiElement(identifier)('table_name')
            PsiWhiteSpace(' ')
            PsiElement(=)('=')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('table_name')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
            PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            PsiElement(identifier)('primary_key_ty')
            PsiWhiteSpace(' ')
            PsiElement(=)('=')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('primary_key_ty')
              PsiElement(:)(':')
              PsiElement(identifier)('ty')
            PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            PsiElement(identifier)('primary_key_expr')
            PsiWhiteSpace(' ')
            PsiElement(=)('=')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('primary_key_expr')
              PsiElement(:)(':')
              PsiElement(identifier)('expr')
            PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            PsiElement(identifier)('columns')
            PsiWhiteSpace(' ')
            PsiElement(=)('=')
            PsiWhiteSpace(' ')
            RsMacroPatternImpl(MACRO_PATTERN)
              PsiElement([)('[')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                    RsMacroBindingImpl(MACRO_BINDING)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('column_name')
                      PsiElement(:)(':')
                      PsiElement(identifier)('ident')
                    PsiWhiteSpace(' ')
                    PsiElement(->)('->')
                    PsiWhiteSpace(' ')
                    RsMacroBindingImpl(MACRO_BINDING)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('column_ty')
                      PsiElement(:)(':')
                      PsiElement(identifier)('ty')
                    PsiElement(,)(',')
                  PsiElement())(')')
                  PsiElement(+)('+')
              PsiElement(])(']')
            PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            PsiElement(identifier)('imports')
            PsiWhiteSpace(' ')
            PsiElement(=)('=')
            PsiWhiteSpace(' ')
            RsMacroPatternImpl(MACRO_PATTERN)
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                    RsMacroBindingGroupImpl(MACRO_BINDING_GROUP)
                      PsiElement($)('$')
                      PsiElement(()('(')
                      RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                        RsMacroBindingImpl(MACRO_BINDING)
                          PsiElement($)('$')
                          RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                            PsiElement(identifier)('import')
                          PsiElement(:)(':')
                          PsiElement(identifier)('tt')
                      PsiElement())(')')
                      RsMacroBindingGroupSeparatorImpl(MACRO_BINDING_GROUP_SEPARATOR)
                        PsiElement(::)('::')
                      PsiElement(+)('+')
                  PsiElement())(')')
                  RsMacroBindingGroupSeparatorImpl(MACRO_BINDING_GROUP_SEPARATOR)
                    PsiElement(,)(',')
                  PsiElement(+)('+')
              PsiElement())(')')
            PsiElement(,)(',')
          PsiWhiteSpace('\n    ')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            PsiElement(pub)('pub')
            PsiWhiteSpace(' ')
            PsiElement(mod)('mod')
            PsiWhiteSpace(' ')
            RsMacroReferenceImpl(MACRO_REFERENCE)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('table_name')
            PsiWhiteSpace(' ')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement({)('{')
              PsiWhiteSpace('\n            ')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                PsiElement(#)('#')
                PsiElement(!)('!')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement([)('[')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(identifier)('allow')
                    RsMacroExpansionImpl(MACRO_EXPANSION)
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        PsiElement(identifier)('dead_code')
                      PsiElement())(')')
                  PsiElement(])(']')
                PsiWhiteSpace('\n            ')
                PsiElement(use)('use')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(crate)('crate')
                PsiElement(::)('::')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement({)('{')
                  PsiWhiteSpace('\n                ')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(identifier)('QuerySource')
                    PsiElement(,)(',')
                    PsiWhiteSpace('\n                ')
                    PsiElement(identifier)('Table')
                    PsiElement(,)(',')
                  PsiWhiteSpace('\n            ')
                  PsiElement(})('}')
                PsiElement(;)(';')
                PsiWhiteSpace('\n            ')
                PsiElement(use)('use')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(crate)('crate')
                PsiElement(::)('::')
                PsiElement(identifier)('associations')
                PsiElement(::)('::')
                PsiElement(identifier)('HasTable')
                PsiElement(;)(';')
                PsiWhiteSpace('\n            ')
                RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                  PsiElement($)('$')
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(use)('use')
                    PsiWhiteSpace(' ')
                    RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                      PsiElement($)('$')
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        RsMacroReferenceImpl(MACRO_REFERENCE)
                          PsiElement($)('$')
                          RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                            PsiElement(identifier)('import')
                      PsiElement())(')')
                      RsMacroExpansionGroupSeparatorImpl(MACRO_EXPANSION_GROUP_SEPARATOR)
                        PsiElement(::)('::')
                      PsiElement(+)('+')
                    PsiElement(;)(';')
                  PsiElement())(')')
                  PsiElement(+)('+')
                PsiWhiteSpace('\n            ')
                PsiElement(identifier)('__diesel_table_query_source_impl')
                PsiElement(!)('!')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(identifier)('table')
                    PsiElement(,)(',')
                    PsiWhiteSpace(' ')
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('schema_name')
                    PsiElement(,)(',')
                    PsiWhiteSpace(' ')
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('table_name')
                  PsiElement())(')')
                PsiElement(;)(';')
                PsiWhiteSpace('\n\n            ')
                PsiElement(identifier)('impl_query_id')
                PsiElement(!)('!')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(identifier)('table')
                  PsiElement())(')')
                PsiElement(;)(';')
                PsiWhiteSpace('\n\n            ')
                PsiElement(pub)('pub')
                PsiWhiteSpace(' ')
                PsiElement(mod)('mod')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('columns')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement({)('{')
                  PsiWhiteSpace('\n                ')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(use)('use')
                    PsiWhiteSpace(' ')
                    PsiElement(super)('super')
                    PsiElement(::)('::')
                    PsiElement(identifier)('table')
                    PsiElement(;)(';')
                    PsiWhiteSpace('\n                ')
                    PsiElement(use)('use')
                    PsiWhiteSpace(' ')
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(crate)('crate')
                    PsiElement(::)('::')
                    PsiElement(identifier)('result')
                    PsiElement(::)('::')
                    PsiElement(identifier)('QueryResult')
                    PsiElement(;)(';')
                    PsiWhiteSpace('\n                ')
                    RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                      PsiElement($)('$')
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        PsiElement(use)('use')
                        PsiWhiteSpace(' ')
                        RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                          PsiElement($)('$')
                          PsiElement(()('(')
                          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                            RsMacroReferenceImpl(MACRO_REFERENCE)
                              PsiElement($)('$')
                              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                                PsiElement(identifier)('import')
                          PsiElement())(')')
                          RsMacroExpansionGroupSeparatorImpl(MACRO_EXPANSION_GROUP_SEPARATOR)
                            PsiElement(::)('::')
                          PsiElement(+)('+')
                        PsiElement(;)(';')
                      PsiElement())(')')
                      PsiElement(+)('+')
                    PsiWhiteSpace('\n\n                ')
                    RsMacroExpansionReferenceGroupImpl(MACRO_EXPANSION_REFERENCE_GROUP)
                      PsiElement($)('$')
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        PsiElement(identifier)('__diesel_column')
                        PsiElement(!)('!')
                        RsMacroExpansionImpl(MACRO_EXPANSION)
                          PsiElement(()('(')
                          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                            PsiElement(identifier)('table')
                            PsiElement(,)(',')
                            PsiWhiteSpace(' ')
                            RsMacroReferenceImpl(MACRO_REFERENCE)
                              PsiElement($)('$')
                              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                                PsiElement(identifier)('column_name')
                            PsiWhiteSpace(' ')
                            PsiElement(->)('->')
                            PsiWhiteSpace(' ')
                            RsMacroReferenceImpl(MACRO_REFERENCE)
                              PsiElement($)('$')
                              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                                PsiElement(identifier)('column_ty')
                          PsiElement())(')')
                        PsiElement(;)(';')
                      PsiElement())(')')
                      PsiElement(+)('+')
                  PsiWhiteSpace('\n            ')
                  PsiElement(})('}')
              PsiWhiteSpace('\n        ')
              PsiElement(})('}')
          PsiWhiteSpace('\n    ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsMacroImpl(MACRO)
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('macro_export')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('doc')
        RsMetaItemArgsImpl(META_ITEM_ARGS)
          PsiElement(()('(')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('hidden')
          PsiElement())(')')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    PsiElement(identifier)('macro_rules')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('__diesel_table_query_source_impl')
    PsiWhiteSpace(' ')
    RsMacroBodyImpl(MACRO_BODY)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('table_struct')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            PsiElement(identifier)('public')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('table_name')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            PsiElement(impl)('impl')
            PsiWhiteSpace(' ')
            PsiElement(identifier)('QuerySource')
            PsiWhiteSpace(' ')
            PsiElement(for)('for')
            PsiWhiteSpace(' ')
            RsMacroReferenceImpl(MACRO_REFERENCE)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('table_struct')
            PsiWhiteSpace(' ')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement({)('{')
              PsiWhiteSpace('\n            ')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                PsiElement(type)('type')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('FromClause')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('Identifier')
                PsiElement(<)('<')
                PsiElement(QUOTE_IDENTIFIER)(''static')
                PsiElement(>)('>')
                PsiElement(;)(';')
                PsiWhiteSpace('\n            ')
                PsiElement(type)('type')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('DefaultSelection')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                PsiElement(<)('<')
                PsiElement(Self)('Self')
                PsiWhiteSpace(' ')
                PsiElement(as)('as')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('Table')
                PsiElement(>)('>')
                PsiElement(::)('::')
                PsiElement(identifier)('AllColumns')
                PsiElement(;)(';')
                PsiWhiteSpace('\n\n            ')
                PsiElement(fn)('fn')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('from_clause')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(&)('&')
                    PsiElement(self)('self')
                  PsiElement())(')')
                PsiWhiteSpace(' ')
                PsiElement(->)('->')
                PsiWhiteSpace(' ')
                PsiElement(Self)('Self')
                PsiElement(::)('::')
                PsiElement(identifier)('FromClause')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement({)('{')
                  PsiWhiteSpace('\n                ')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(identifier)('Identifier')
                    RsMacroExpansionImpl(MACRO_EXPANSION)
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        PsiElement(identifier)('stringify')
                        PsiElement(!)('!')
                        RsMacroExpansionImpl(MACRO_EXPANSION)
                          PsiElement(()('(')
                          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                            RsMacroReferenceImpl(MACRO_REFERENCE)
                              PsiElement($)('$')
                              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                                PsiElement(identifier)('table_name')
                          PsiElement())(')')
                      PsiElement())(')')
                  PsiWhiteSpace('\n            ')
                  PsiElement(})('}')
                PsiWhiteSpace('\n\n            ')
                PsiElement(fn)('fn')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('default_selection')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(&)('&')
                    PsiElement(self)('self')
                  PsiElement())(')')
                PsiWhiteSpace(' ')
                PsiElement(->)('->')
                PsiWhiteSpace(' ')
                PsiElement(Self)('Self')
                PsiElement(::)('::')
                PsiElement(identifier)('DefaultSelection')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement({)('{')
                  PsiWhiteSpace('\n                ')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(Self)('Self')
                    PsiElement(::)('::')
                    PsiElement(identifier)('all_columns')
                    RsMacroExpansionImpl(MACRO_EXPANSION)
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        <empty list>
                      PsiElement())(')')
                  PsiWhiteSpace('\n            ')
                  PsiElement(})('}')
              PsiWhiteSpace('\n        ')
              PsiElement(})('}')
          PsiWhiteSpace('\n    ')
          PsiElement(})('}')
      PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('table_struct')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('schema_name')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('table_name')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            PsiElement(impl)('impl')
            PsiWhiteSpace(' ')
            PsiElement(identifier)('QuerySource')
            PsiWhiteSpace(' ')
            PsiElement(for)('for')
            PsiWhiteSpace(' ')
            RsMacroReferenceImpl(MACRO_REFERENCE)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('table_struct')
            PsiWhiteSpace(' ')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement({)('{')
              PsiWhiteSpace('\n            ')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                PsiElement(type)('type')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('FromClause')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(crate)('crate')
                PsiElement(::)('::')
                PsiElement(identifier)('query_builder')
                PsiElement(::)('::')
                PsiElement(identifier)('nodes')
                PsiElement(::)('::')
                PsiWhiteSpace('\n                ')
                PsiElement(identifier)('InfixNode')
                PsiElement(<)('<')
                PsiElement(QUOTE_IDENTIFIER)(''static')
                PsiElement(,)(',')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('Identifier')
                PsiElement(<)('<')
                PsiElement(QUOTE_IDENTIFIER)(''static')
                PsiElement(>)('>')
                PsiElement(,)(',')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('Identifier')
                PsiElement(<)('<')
                PsiElement(QUOTE_IDENTIFIER)(''static')
                PsiElement(>>)('>>')
                PsiElement(;)(';')
                PsiWhiteSpace('\n            ')
                PsiElement(type)('type')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('DefaultSelection')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                PsiElement(<)('<')
                PsiElement(Self)('Self')
                PsiWhiteSpace(' ')
                PsiElement(as)('as')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('Table')
                PsiElement(>)('>')
                PsiElement(::)('::')
                PsiElement(identifier)('AllColumns')
                PsiElement(;)(';')
                PsiWhiteSpace('\n\n            ')
                PsiElement(fn)('fn')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('from_clause')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(&)('&')
                    PsiElement(self)('self')
                  PsiElement())(')')
                PsiWhiteSpace(' ')
                PsiElement(->)('->')
                PsiWhiteSpace(' ')
                PsiElement(Self)('Self')
                PsiElement(::)('::')
                PsiElement(identifier)('FromClause')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement({)('{')
                  PsiWhiteSpace('\n                ')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(crate)('crate')
                    PsiElement(::)('::')
                    PsiElement(identifier)('query_builder')
                    PsiElement(::)('::')
                    PsiElement(identifier)('nodes')
                    PsiElement(::)('::')
                    PsiElement(identifier)('InfixNode')
                    PsiElement(::)('::')
                    PsiElement(identifier)('new')
                    RsMacroExpansionImpl(MACRO_EXPANSION)
                      PsiElement(()('(')
                      PsiWhiteSpace('\n                    ')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        PsiElement(identifier)('Identifier')
                        RsMacroExpansionImpl(MACRO_EXPANSION)
                          PsiElement(()('(')
                          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                            PsiElement(identifier)('stringify')
                            PsiElement(!)('!')
                            RsMacroExpansionImpl(MACRO_EXPANSION)
                              PsiElement(()('(')
                              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                                RsMacroReferenceImpl(MACRO_REFERENCE)
                                  PsiElement($)('$')
                                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                                    PsiElement(identifier)('schema_name')
                              PsiElement())(')')
                          PsiElement())(')')
                        PsiElement(,)(',')
                        PsiWhiteSpace('\n                    ')
                        PsiElement(identifier)('Identifier')
                        RsMacroExpansionImpl(MACRO_EXPANSION)
                          PsiElement(()('(')
                          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                            PsiElement(identifier)('stringify')
                            PsiElement(!)('!')
                            RsMacroExpansionImpl(MACRO_EXPANSION)
                              PsiElement(()('(')
                              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                                RsMacroReferenceImpl(MACRO_REFERENCE)
                                  PsiElement($)('$')
                                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                                    PsiElement(identifier)('table_name')
                              PsiElement())(')')
                          PsiElement())(')')
                        PsiElement(,)(',')
                        PsiWhiteSpace('\n                    ')
                        PsiElement(STRING_LITERAL)('"."')
                        PsiElement(,)(',')
                      PsiWhiteSpace('\n                ')
                      PsiElement())(')')
                  PsiWhiteSpace('\n            ')
                  PsiElement(})('}')
                PsiWhiteSpace('\n\n            ')
                PsiElement(fn)('fn')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('default_selection')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(&)('&')
                    PsiElement(self)('self')
                  PsiElement())(')')
                PsiWhiteSpace(' ')
                PsiElement(->)('->')
                PsiWhiteSpace(' ')
                PsiElement(Self)('Self')
                PsiElement(::)('::')
                PsiElement(identifier)('DefaultSelection')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement({)('{')
                  PsiWhiteSpace('\n                ')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(Self)('Self')
                    PsiElement(::)('::')
                    PsiElement(identifier)('all_columns')
                    RsMacroExpansionImpl(MACRO_EXPANSION)
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        <empty list>
                      PsiElement())(')')
                  PsiWhiteSpace('\n            ')
                  PsiElement(})('}')
              PsiWhiteSpace('\n        ')
              PsiElement(})('}')
          PsiWhiteSpace('\n    ')
          PsiElement(})('}')
      PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsMacroImpl(MACRO)
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('macro_export')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('doc')
        RsMetaItemArgsImpl(META_ITEM_ARGS)
          PsiElement(()('(')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('hidden')
          PsiElement())(')')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    PsiElement(identifier)('macro_rules')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('joinable')
    PsiWhiteSpace(' ')
    RsMacroBodyImpl(MACRO_BODY)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('child')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
            PsiWhiteSpace(' ')
            PsiElement(->)('->')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('parent')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
            PsiWhiteSpace(' ')
            RsMacroPatternImpl(MACRO_PATTERN)
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingImpl(MACRO_BINDING)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('source')
                  PsiElement(:)(':')
                  PsiElement(identifier)('ident')
              PsiElement())(')')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            PsiElement(identifier)('joinable_inner')
            PsiElement(!)('!')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement(()('(')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('child')
                PsiElement(::)('::')
                PsiElement(identifier)('table')
                PsiWhiteSpace(' ')
                PsiElement(=>)('=>')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('parent')
                PsiElement(::)('::')
                PsiElement(identifier)('table')
                PsiWhiteSpace(' ')
                PsiElement(:)(':')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('child')
                    PsiElement(::)('::')
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('source')
                    PsiWhiteSpace(' ')
                    PsiElement(=)('=')
                    PsiWhiteSpace(' ')
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('parent')
                    PsiElement(::)('::')
                    PsiElement(identifier)('table')
                  PsiElement())(')')
              PsiElement())(')')
            PsiElement(;)(';')
            PsiWhiteSpace('\n        ')
            PsiElement(identifier)('joinable_inner')
            PsiElement(!)('!')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement(()('(')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('parent')
                PsiElement(::)('::')
                PsiElement(identifier)('table')
                PsiWhiteSpace(' ')
                PsiElement(=>)('=>')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('child')
                PsiElement(::)('::')
                PsiElement(identifier)('table')
                PsiWhiteSpace(' ')
                PsiElement(:)(':')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('child')
                    PsiElement(::)('::')
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('source')
                    PsiWhiteSpace(' ')
                    PsiElement(=)('=')
                    PsiWhiteSpace(' ')
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('parent')
                    PsiElement(::)('::')
                    PsiElement(identifier)('table')
                  PsiElement())(')')
              PsiElement())(')')
            PsiElement(;)(';')
          PsiWhiteSpace('\n    ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsMacroImpl(MACRO)
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('macro_export')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('doc')
        RsMetaItemArgsImpl(META_ITEM_ARGS)
          PsiElement(()('(')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('hidden')
          PsiElement())(')')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    PsiElement(identifier)('macro_rules')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('joinable_inner')
    PsiWhiteSpace(' ')
    RsMacroBodyImpl(MACRO_BODY)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('left_table')
              PsiElement(:)(':')
              PsiElement(identifier)('path')
            PsiWhiteSpace(' ')
            PsiElement(=>)('=>')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('right_table')
              PsiElement(:)(':')
              PsiElement(identifier)('path')
            PsiWhiteSpace(' ')
            PsiElement(:)(':')
            PsiWhiteSpace(' ')
            RsMacroPatternImpl(MACRO_PATTERN)
              PsiElement(()('(')
              RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
                RsMacroBindingImpl(MACRO_BINDING)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('foreign_key')
                  PsiElement(:)(':')
                  PsiElement(identifier)('path')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsMacroBindingImpl(MACRO_BINDING)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('parent_table')
                  PsiElement(:)(':')
                  PsiElement(identifier)('path')
              PsiElement())(')')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            PsiElement(identifier)('joinable_inner')
            PsiElement(!)('!')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement(()('(')
              PsiWhiteSpace('\n            ')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                PsiElement(identifier)('left_table_ty')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('left_table')
                PsiElement(,)(',')
                PsiWhiteSpace('\n            ')
                PsiElement(identifier)('right_table_ty')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('right_table')
                PsiElement(,)(',')
                PsiWhiteSpace('\n            ')
                PsiElement(identifier)('right_table_expr')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('right_table')
                PsiElement(,)(',')
                PsiWhiteSpace('\n            ')
                PsiElement(identifier)('foreign_key')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('foreign_key')
                PsiElement(,)(',')
                PsiWhiteSpace('\n            ')
                PsiElement(identifier)('primary_key_ty')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                PsiElement(<)('<')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('parent_table')
                PsiWhiteSpace(' ')
                PsiElement(as)('as')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(crate)('crate')
                PsiElement(::)('::')
                PsiElement(identifier)('query_source')
                PsiElement(::)('::')
                PsiElement(identifier)('Table')
                PsiElement(>)('>')
                PsiElement(::)('::')
                PsiElement(identifier)('PrimaryKey')
                PsiElement(,)(',')
                PsiWhiteSpace('\n            ')
                PsiElement(identifier)('primary_key_expr')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('parent_table')
                PsiElement(.)('.')
                PsiElement(identifier)('primary_key')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    <empty list>
                  PsiElement())(')')
                PsiElement(,)(',')
              PsiWhiteSpace('\n        ')
              PsiElement())(')')
            PsiElement(;)(';')
          PsiWhiteSpace('\n    ')
          PsiElement(})('}')
      PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          PsiWhiteSpace('\n        ')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            PsiElement(identifier)('left_table_ty')
            PsiWhiteSpace(' ')
            PsiElement(=)('=')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('left_table_ty')
              PsiElement(:)(':')
              PsiElement(identifier)('ty')
            PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            PsiElement(identifier)('right_table_ty')
            PsiWhiteSpace(' ')
            PsiElement(=)('=')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('right_table_ty')
              PsiElement(:)(':')
              PsiElement(identifier)('ty')
            PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            PsiElement(identifier)('right_table_expr')
            PsiWhiteSpace(' ')
            PsiElement(=)('=')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('right_table_expr')
              PsiElement(:)(':')
              PsiElement(identifier)('expr')
            PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            PsiElement(identifier)('foreign_key')
            PsiWhiteSpace(' ')
            PsiElement(=)('=')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('foreign_key')
              PsiElement(:)(':')
              PsiElement(identifier)('path')
            PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            PsiElement(identifier)('primary_key_ty')
            PsiWhiteSpace(' ')
            PsiElement(=)('=')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('primary_key_ty')
              PsiElement(:)(':')
              PsiElement(identifier)('ty')
            PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            PsiElement(identifier)('primary_key_expr')
            PsiWhiteSpace(' ')
            PsiElement(=)('=')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('primary_key_expr')
              PsiElement(:)(':')
              PsiElement(identifier)('expr')
            PsiElement(,)(',')
          PsiWhiteSpace('\n    ')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            PsiElement(impl)('impl')
            PsiElement(<)('<')
            PsiElement(identifier)('JoinType')
            PsiElement(>)('>')
            PsiWhiteSpace(' ')
            RsMacroReferenceImpl(MACRO_REFERENCE)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(crate)('crate')
            PsiElement(::)('::')
            PsiElement(identifier)('JoinTo')
            PsiElement(<)('<')
            RsMacroReferenceImpl(MACRO_REFERENCE)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('right_table_ty')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            PsiElement(identifier)('JoinType')
            PsiElement(>)('>')
            PsiWhiteSpace(' ')
            PsiElement(for)('for')
            PsiWhiteSpace(' ')
            RsMacroReferenceImpl(MACRO_REFERENCE)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('left_table_ty')
            PsiWhiteSpace(' ')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement({)('{')
              PsiWhiteSpace('\n            ')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                PsiElement(type)('type')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('JoinClause')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(crate)('crate')
                PsiElement(::)('::')
                PsiElement(identifier)('query_builder')
                PsiElement(::)('::')
                PsiElement(identifier)('nodes')
                PsiElement(::)('::')
                PsiElement(identifier)('Join')
                PsiElement(<)('<')
                PsiWhiteSpace('\n                ')
                PsiElement(<)('<')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('left_table_ty')
                PsiWhiteSpace(' ')
                PsiElement(as)('as')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(crate)('crate')
                PsiElement(::)('::')
                PsiElement(identifier)('QuerySource')
                PsiElement(>)('>')
                PsiElement(::)('::')
                PsiElement(identifier)('FromClause')
                PsiElement(,)(',')
                PsiWhiteSpace('\n                ')
                PsiElement(<)('<')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('right_table_ty')
                PsiWhiteSpace(' ')
                PsiElement(as)('as')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(crate)('crate')
                PsiElement(::)('::')
                PsiElement(identifier)('QuerySource')
                PsiElement(>)('>')
                PsiElement(::)('::')
                PsiElement(identifier)('FromClause')
                PsiElement(,)(',')
                PsiWhiteSpace('\n                ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(crate)('crate')
                PsiElement(::)('::')
                PsiElement(identifier)('expression')
                PsiElement(::)('::')
                PsiElement(identifier)('helper_types')
                PsiElement(::)('::')
                PsiElement(identifier)('Eq')
                PsiElement(<)('<')
                PsiWhiteSpace('\n                    ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(crate)('crate')
                PsiElement(::)('::')
                PsiElement(identifier)('expression')
                PsiElement(::)('::')
                PsiElement(identifier)('nullable')
                PsiElement(::)('::')
                PsiElement(identifier)('Nullable')
                PsiElement(<)('<')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('foreign_key')
                PsiElement(>)('>')
                PsiElement(,)(',')
                PsiWhiteSpace('\n                    ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(crate)('crate')
                PsiElement(::)('::')
                PsiElement(identifier)('expression')
                PsiElement(::)('::')
                PsiElement(identifier)('nullable')
                PsiElement(::)('::')
                PsiElement(identifier)('Nullable')
                PsiElement(<)('<')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('primary_key_ty')
                PsiElement(>)('>')
                PsiElement(,)(',')
                PsiWhiteSpace('\n                ')
                PsiElement(>)('>')
                PsiElement(,)(',')
                PsiWhiteSpace('\n                ')
                PsiElement(identifier)('JoinType')
                PsiElement(,)(',')
                PsiWhiteSpace('\n            ')
                PsiElement(>)('>')
                PsiElement(;)(';')
              PsiWhiteSpace('\n        ')
              PsiElement(})('}')
          PsiWhiteSpace('\n    ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsMacroImpl(MACRO)
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('macro_export')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('doc')
        RsMetaItemArgsImpl(META_ITEM_ARGS)
          PsiElement(()('(')
          RsMetaItemImpl(META_ITEM)
            RsPathImpl(PATH)
              PsiElement(identifier)('hidden')
          PsiElement())(')')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    PsiElement(identifier)('macro_rules')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('join_through')
    PsiWhiteSpace(' ')
    RsMacroBodyImpl(MACRO_BODY)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('parent')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
            PsiWhiteSpace(' ')
            PsiElement(->)('->')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('through')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
            PsiWhiteSpace(' ')
            PsiElement(->)('->')
            PsiWhiteSpace(' ')
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('child')
              PsiElement(:)(':')
              PsiElement(identifier)('ident')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            PsiElement(impl)('impl')
            PsiElement(<)('<')
            PsiElement(identifier)('JoinType')
            PsiElement(:)(':')
            PsiWhiteSpace(' ')
            PsiElement(identifier)('Copy')
            PsiElement(>)('>')
            PsiWhiteSpace(' ')
            RsMacroReferenceImpl(MACRO_REFERENCE)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(crate)('crate')
            PsiElement(::)('::')
            PsiElement(identifier)('JoinTo')
            PsiElement(<)('<')
            RsMacroReferenceImpl(MACRO_REFERENCE)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('child')
            PsiElement(::)('::')
            PsiElement(identifier)('table')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            PsiElement(identifier)('JoinType')
            PsiElement(>)('>')
            PsiWhiteSpace(' ')
            PsiElement(for)('for')
            PsiWhiteSpace(' ')
            RsMacroReferenceImpl(MACRO_REFERENCE)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('parent')
            PsiElement(::)('::')
            PsiElement(identifier)('table')
            PsiWhiteSpace(' ')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement({)('{')
              PsiWhiteSpace('\n            ')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                PsiElement(type)('type')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('JoinClause')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                PsiElement(<)('<')
                PsiWhiteSpace('\n                ')
                PsiElement(<)('<')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('parent')
                PsiElement(::)('::')
                PsiElement(identifier)('table')
                PsiWhiteSpace(' ')
                PsiElement(as)('as')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(crate)('crate')
                PsiElement(::)('::')
                PsiElement(identifier)('JoinTo')
                PsiElement(<)('<')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('through')
                PsiElement(::)('::')
                PsiElement(identifier)('table')
                PsiElement(,)(',')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('JoinType')
                PsiElement(>>)('>>')
                PsiElement(::)('::')
                PsiElement(identifier)('JoinClause')
                PsiWhiteSpace('\n                ')
                PsiElement(as)('as')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(crate)('crate')
                PsiElement(::)('::')
                PsiElement(identifier)('query_builder')
                PsiElement(::)('::')
                PsiElement(identifier)('nodes')
                PsiElement(::)('::')
                PsiElement(identifier)('CombinedJoin')
                PsiElement(<)('<')
                PsiWhiteSpace('\n                    ')
                PsiElement(<)('<')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('through')
                PsiElement(::)('::')
                PsiElement(identifier)('table')
                PsiWhiteSpace(' ')
                PsiElement(as)('as')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(crate)('crate')
                PsiElement(::)('::')
                PsiElement(identifier)('JoinTo')
                PsiElement(<)('<')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(identifier)('child')
                PsiElement(::)('::')
                PsiElement(identifier)('table')
                PsiElement(,)(',')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('JoinType')
                PsiElement(>>)('>>')
                PsiElement(::)('::')
                PsiElement(identifier)('JoinClause')
                PsiElement(,)(',')
                PsiWhiteSpace('\n                ')
                PsiElement(>>)('>>')
                PsiElement(::)('::')
                PsiElement(identifier)('Output')
                PsiElement(;)(';')
                PsiWhiteSpace('\n\n            ')
                PsiElement(fn)('fn')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('join_clause')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(&)('&')
                    PsiElement(self)('self')
                    PsiElement(,)(',')
                    PsiWhiteSpace(' ')
                    PsiElement(identifier)('join_type')
                    PsiElement(:)(':')
                    PsiWhiteSpace(' ')
                    PsiElement(identifier)('JoinType')
                  PsiElement())(')')
                PsiWhiteSpace(' ')
                PsiElement(->)('->')
                PsiWhiteSpace(' ')
                PsiElement(Self)('Self')
                PsiElement(::)('::')
                PsiElement(identifier)('JoinClause')
                PsiWhiteSpace(' ')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement({)('{')
                  PsiWhiteSpace('\n                ')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(use)('use')
                    PsiWhiteSpace(' ')
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(crate)('crate')
                    PsiElement(::)('::')
                    PsiElement(identifier)('query_builder')
                    PsiElement(::)('::')
                    PsiElement(identifier)('nodes')
                    PsiElement(::)('::')
                    PsiElement(identifier)('CombinedJoin')
                    PsiElement(;)(';')
                    PsiWhiteSpace('\n                ')
                    PsiElement(let)('let')
                    PsiWhiteSpace(' ')
                    PsiElement(identifier)('parent_to_through')
                    PsiWhiteSpace(' ')
                    PsiElement(=)('=')
                    PsiWhiteSpace(' ')
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(crate)('crate')
                    PsiElement(::)('::')
                    PsiElement(identifier)('JoinTo')
                    PsiElement(::)('::')
                    PsiElement(<)('<')
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('through')
                    PsiElement(::)('::')
                    PsiElement(identifier)('table')
                    PsiElement(,)(',')
                    PsiWhiteSpace(' ')
                    PsiElement(identifier)('JoinType')
                    PsiElement(>)('>')
                    PsiWhiteSpace('\n                    ')
                    PsiElement(::)('::')
                    PsiElement(identifier)('join_clause')
                    RsMacroExpansionImpl(MACRO_EXPANSION)
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        PsiElement(&)('&')
                        RsMacroReferenceImpl(MACRO_REFERENCE)
                          PsiElement($)('$')
                          RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                            PsiElement(identifier)('parent')
                        PsiElement(::)('::')
                        PsiElement(identifier)('table')
                        PsiElement(,)(',')
                        PsiWhiteSpace(' ')
                        PsiElement(identifier)('join_type')
                      PsiElement())(')')
                    PsiElement(;)(';')
                    PsiWhiteSpace('\n                ')
                    PsiElement(let)('let')
                    PsiWhiteSpace(' ')
                    PsiElement(identifier)('through_to_child')
                    PsiWhiteSpace(' ')
                    PsiElement(=)('=')
                    PsiWhiteSpace(' ')
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(crate)('crate')
                    PsiElement(::)('::')
                    PsiElement(identifier)('JoinTo')
                    PsiElement(::)('::')
                    PsiElement(<)('<')
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('child')
                    PsiElement(::)('::')
                    PsiElement(identifier)('table')
                    PsiElement(,)(',')
                    PsiWhiteSpace(' ')
                    PsiElement(identifier)('JoinType')
                    PsiElement(>)('>')
                    PsiWhiteSpace('\n                    ')
                    PsiElement(::)('::')
                    PsiElement(identifier)('join_clause')
                    RsMacroExpansionImpl(MACRO_EXPANSION)
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        PsiElement(&)('&')
                        RsMacroReferenceImpl(MACRO_REFERENCE)
                          PsiElement($)('$')
                          RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                            PsiElement(identifier)('through')
                        PsiElement(::)('::')
                        PsiElement(identifier)('table')
                        PsiElement(,)(',')
                        PsiWhiteSpace(' ')
                        PsiElement(identifier)('join_type')
                      PsiElement())(')')
                    PsiElement(;)(';')
                    PsiWhiteSpace('\n                ')
                    PsiElement(identifier)('parent_to_through')
                    PsiElement(.)('.')
                    PsiElement(identifier)('combine_with')
                    RsMacroExpansionImpl(MACRO_EXPANSION)
                      PsiElement(()('(')
                      RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                        PsiElement(identifier)('through_to_child')
                      PsiElement())(')')
                  PsiWhiteSpace('\n            ')
                  PsiElement(})('}')
              PsiWhiteSpace('\n        ')
              PsiElement(})('}')
          PsiWhiteSpace('\n    ')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsMacroImpl(MACRO)
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('macro_export')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    PsiElement(identifier)('macro_rules')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('debug_sql')
    PsiWhiteSpace(' ')
    RsMacroBodyImpl(MACRO_BODY)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('query')
              PsiElement(:)(':')
              PsiElement(identifier)('expr')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement({)('{')
              PsiWhiteSpace('\n        ')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                PsiElement(use)('use')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(crate)('crate')
                PsiElement(::)('::')
                PsiElement(identifier)('query_builder')
                PsiElement(::)('::')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement({)('{')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(identifier)('QueryFragment')
                    PsiElement(,)(',')
                    PsiWhiteSpace(' ')
                    PsiElement(identifier)('QueryBuilder')
                  PsiElement(})('}')
                PsiElement(;)(';')
                PsiWhiteSpace('\n        ')
                PsiElement(use)('use')
                PsiWhiteSpace(' ')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(crate)('crate')
                PsiElement(::)('::')
                PsiElement(identifier)('query_builder')
                PsiElement(::)('::')
                PsiElement(identifier)('debug')
                PsiElement(::)('::')
                PsiElement(identifier)('DebugQueryBuilder')
                PsiElement(;)(';')
                PsiWhiteSpace('\n        ')
                PsiElement(let)('let')
                PsiWhiteSpace(' ')
                PsiElement(mut)('mut')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('query_builder')
                PsiWhiteSpace(' ')
                PsiElement(=)('=')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('DebugQueryBuilder')
                PsiElement(::)('::')
                PsiElement(identifier)('new')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    <empty list>
                  PsiElement())(')')
                PsiElement(;)(';')
                PsiWhiteSpace('\n        ')
                PsiElement(identifier)('QueryFragment')
                PsiElement(::)('::')
                PsiElement(<)('<')
                RsMacroReferenceImpl(MACRO_REFERENCE)
                  PsiElement($)('$')
                  RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                    PsiElement(crate)('crate')
                PsiElement(::)('::')
                PsiElement(identifier)('backend')
                PsiElement(::)('::')
                PsiElement(identifier)('Debug')
                PsiElement(>)('>')
                PsiElement(::)('::')
                PsiElement(identifier)('to_sql')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    PsiElement(&)('&')
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('query')
                    PsiElement(,)(',')
                    PsiWhiteSpace(' ')
                    PsiElement(&)('&')
                    PsiElement(mut)('mut')
                    PsiWhiteSpace(' ')
                    PsiElement(identifier)('query_builder')
                  PsiElement())(')')
                PsiElement(.)('.')
                PsiElement(identifier)('unwrap')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    <empty list>
                  PsiElement())(')')
                PsiElement(;)(';')
                PsiWhiteSpace('\n        ')
                PsiElement(identifier)('query_builder')
                PsiElement(.)('.')
                PsiElement(identifier)('finish')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    <empty list>
                  PsiElement())(')')
              PsiWhiteSpace('\n    ')
              PsiElement(})('}')
          PsiElement(})('}')
      PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsMacroImpl(MACRO)
    RsOuterAttrImpl(OUTER_ATTR)
      PsiElement(#)('#')
      PsiElement([)('[')
      RsMetaItemImpl(META_ITEM)
        RsPathImpl(PATH)
          PsiElement(identifier)('macro_export')
      PsiElement(])(']')
    PsiWhiteSpace('\n')
    PsiElement(identifier)('macro_rules')
    PsiElement(!)('!')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('print_sql')
    PsiWhiteSpace(' ')
    RsMacroBodyImpl(MACRO_BODY)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsMacroCaseImpl(MACRO_CASE)
        RsMacroPatternImpl(MACRO_PATTERN)
          PsiElement(()('(')
          RsMacroPatternContentsImpl(MACRO_PATTERN_CONTENTS)
            RsMacroBindingImpl(MACRO_BINDING)
              PsiElement($)('$')
              RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                PsiElement(identifier)('query')
              PsiElement(:)(':')
              PsiElement(identifier)('expr')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=>)('=>')
        PsiWhiteSpace(' ')
        RsMacroExpansionImpl(MACRO_EXPANSION)
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
            PsiElement(identifier)('println')
            PsiElement(!)('!')
            RsMacroExpansionImpl(MACRO_EXPANSION)
              PsiElement(()('(')
              RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                PsiElement(STRING_LITERAL)('"{}"')
                PsiElement(,)(',')
                PsiWhiteSpace(' ')
                PsiElement(&)('&')
                PsiElement(identifier)('debug_sql')
                PsiElement(!)('!')
                RsMacroExpansionImpl(MACRO_EXPANSION)
                  PsiElement(()('(')
                  RsMacroExpansionContentsImpl(MACRO_EXPANSION_CONTENTS)
                    RsMacroReferenceImpl(MACRO_REFERENCE)
                      PsiElement($)('$')
                      RsMetaVarIdentifierImpl(META_VAR_IDENTIFIER)
                        PsiElement(identifier)('query')
                  PsiElement())(')')
              PsiElement())(')')
            PsiElement(;)(';')
          PsiWhiteSpace('\n    ')
          PsiElement(})('}')
      PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')