FILE
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('main')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMatchExprImpl(MATCH_EXPR)
          PsiElement(match)('match')
          PsiWhiteSpace(' ')
          RsUnitExprImpl(UNIT_EXPR)
            PsiElement(()('(')
            PsiElement())(')')
          PsiWhiteSpace(' ')
          RsMatchBodyImpl(MATCH_BODY)
            PsiElement({)('{')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatTupImpl(PAT_TUP)
                PsiElement(()('(')
                PsiElement())(')')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsBlockExprImpl(BLOCK_EXPR)
                RsBlockImpl(BLOCK)
                  PsiElement({)('{')
                  PsiElement(})('}')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatTupImpl(PAT_TUP)
                PsiElement(()('(')
                PsiElement())(')')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsBlockExprImpl(BLOCK_EXPR)
                RsBlockImpl(BLOCK)
                  PsiElement({)('{')
                  PsiElement(})('}')
            PsiWhiteSpace('\n    ')
            PsiElement(})('}')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      PsiComment(<EOL_COMMENT>)('// https://github.com/intellij-rust/intellij-rust/issues/5786')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('array')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsArrayExprImpl(ARRAY_EXPR)
          PsiElement([)('[')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('42')
          PsiElement(])(']')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMatchExprImpl(MATCH_EXPR)
          PsiElement(match)('match')
          PsiWhiteSpace(' ')
          RsIndexExprImpl(INDEX_EXPR)
            RsPathExprImpl(PATH_EXPR)
              RsPathImpl(PATH)
                PsiElement(identifier)('array')
            PsiElement([)('[')
            RsRangeExprImpl(RANGE_EXPR)
              PsiElement(..)('..')
            PsiElement(])(']')
          PsiWhiteSpace(' ')
          RsMatchBodyImpl(MATCH_BODY)
            PsiElement({)('{')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatSliceImpl(PAT_SLICE)
                PsiElement([)('[')
                PsiElement(])(']')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsBlockExprImpl(BLOCK_EXPR)
                RsBlockImpl(BLOCK)
                  PsiElement({)('{')
                  PsiElement(})('}')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatSliceImpl(PAT_SLICE)
                PsiElement([)('[')
                RsPatIdentImpl(PAT_IDENT)
                  RsPatBindingImpl(PAT_BINDING)
                    PsiElement(identifier)('_x')
                PsiElement(])(']')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsBlockExprImpl(BLOCK_EXPR)
                RsBlockImpl(BLOCK)
                  PsiElement({)('{')
                  PsiElement(})('}')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatWildImpl(PAT_WILD)
                PsiElement(_)('_')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsBlockExprImpl(BLOCK_EXPR)
                RsBlockImpl(BLOCK)
                  PsiElement({)('{')
                  PsiElement(})('}')
            PsiWhiteSpace('\n    ')
            PsiElement(})('}')
        PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
