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(' ')
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('x')
          PsiWhiteSpace(' ')
          RsMatchBodyImpl(MATCH_BODY)
            PsiElement({)('{')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatWildImpl(PAT_WILD)
                PsiElement(_)('_')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsBlockExprImpl(BLOCK_EXPR)
                RsBlockImpl(BLOCK)
                  PsiElement({)('{')
                  PsiElement(})('}')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatWildImpl(PAT_WILD)
                PsiElement(_)('_')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('1')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatWildImpl(PAT_WILD)
                PsiElement(_)('_')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsDotExprImpl(DOT_EXPR)
                RsBlockExprImpl(BLOCK_EXPR)
                  PsiElement(unsafe)('unsafe')
                  PsiWhiteSpace(' ')
                  RsBlockImpl(BLOCK)
                    PsiElement({)('{')
                    PsiWhiteSpace(' ')
                    RsExprStmtImpl(EXPR_STMT)
                      RsLitExprImpl(LIT_EXPR)
                        PsiElement(INTEGER_LITERAL)('1')
                    PsiWhiteSpace(' ')
                    PsiElement(})('}')
                PsiElement(.)('.')
                RsMethodCallImpl(METHOD_CALL)
                  PsiElement(identifier)('to_string')
                  RsValueArgumentListImpl(VALUE_ARGUMENT_LIST)
                    PsiElement(()('(')
                    PsiElement())(')')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatWildImpl(PAT_WILD)
                PsiElement(_)('_')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsDotExprImpl(DOT_EXPR)
                RsBlockExprImpl(BLOCK_EXPR)
                  PsiElement(const)('const')
                  PsiWhiteSpace(' ')
                  RsBlockImpl(BLOCK)
                    PsiElement({)('{')
                    PsiWhiteSpace(' ')
                    RsExprStmtImpl(EXPR_STMT)
                      RsLitExprImpl(LIT_EXPR)
                        PsiElement(INTEGER_LITERAL)('2')
                    PsiWhiteSpace(' ')
                    PsiElement(})('}')
                PsiElement(.)('.')
                RsMethodCallImpl(METHOD_CALL)
                  PsiElement(identifier)('to_string')
                  RsValueArgumentListImpl(VALUE_ARGUMENT_LIST)
                    PsiElement(()('(')
                    PsiElement())(')')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatWildImpl(PAT_WILD)
                PsiElement(_)('_')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('92')
            PsiWhiteSpace('\n    ')
            PsiElement(})('}')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMatchExprImpl(MATCH_EXPR)
          PsiElement(match)('match')
          PsiWhiteSpace(' ')
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('x')
          PsiWhiteSpace(' ')
          RsMatchBodyImpl(MATCH_BODY)
            PsiElement({)('{')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsOrPatImpl(OR_PAT)
                PsiElement(|)('|')
                PsiWhiteSpace(' ')
                RsPatConstImpl(PAT_CONST)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('0')
                PsiWhiteSpace('\n        ')
                PsiElement(|)('|')
                PsiWhiteSpace(' ')
                RsPatConstImpl(PAT_CONST)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('1')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('0')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsOrPatImpl(OR_PAT)
                PsiElement(|)('|')
                PsiWhiteSpace(' ')
                RsPatWildImpl(PAT_WILD)
                  PsiElement(_)('_')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('42')
              PsiElement(,)(',')
            PsiWhiteSpace('\n    ')
            PsiElement(})('}')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMatchExprImpl(MATCH_EXPR)
          PsiElement(match)('match')
          PsiWhiteSpace(' ')
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('x')
          PsiWhiteSpace(' ')
          RsMatchBodyImpl(MATCH_BODY)
            PsiElement({)('{')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatConstImpl(PAT_CONST)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('0')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('0')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatConstImpl(PAT_CONST)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('1')
              PsiWhiteSpace(' ')
              RsMatchArmGuardImpl(MATCH_ARM_GUARD)
                PsiElement(if)('if')
                PsiWhiteSpace(' ')
                RsBinaryExprImpl(BINARY_EXPR)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('1')
                  PsiWhiteSpace(' ')
                  RsBinaryOpImpl(BINARY_OP)
                    PsiElement(<)('<')
                  PsiWhiteSpace(' ')
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('2')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('1')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatConstImpl(PAT_CONST)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('2')
              PsiWhiteSpace(' ')
              RsMatchArmGuardImpl(MATCH_ARM_GUARD)
                PsiElement(if)('if')
                PsiWhiteSpace(' ')
                RsLetExprImpl(LET_EXPR)
                  PsiElement(let)('let')
                  PsiWhiteSpace(' ')
                  RsOrPatImpl(OR_PAT)
                    RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
                      RsPathImpl(PATH)
                        PsiElement(identifier)('Some')
                      PsiElement(()('(')
                      RsPatConstImpl(PAT_CONST)
                        RsLitExprImpl(LIT_EXPR)
                          PsiElement(INTEGER_LITERAL)('24')
                      PsiElement())(')')
                    PsiWhiteSpace(' ')
                    PsiElement(|)('|')
                    PsiWhiteSpace(' ')
                    RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
                      RsPathImpl(PATH)
                        PsiElement(identifier)('Some')
                      PsiElement(()('(')
                      RsPatConstImpl(PAT_CONST)
                        RsLitExprImpl(LIT_EXPR)
                          PsiElement(INTEGER_LITERAL)('42')
                      PsiElement())(')')
                  PsiWhiteSpace(' ')
                  PsiElement(=)('=')
                  PsiWhiteSpace(' ')
                  RsCallExprImpl(CALL_EXPR)
                    RsPathExprImpl(PATH_EXPR)
                      RsPathImpl(PATH)
                        PsiElement(identifier)('Some')
                    RsValueArgumentListImpl(VALUE_ARGUMENT_LIST)
                      PsiElement(()('(')
                      RsLitExprImpl(LIT_EXPR)
                        PsiElement(INTEGER_LITERAL)('42')
                      PsiElement())(')')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('2')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatConstImpl(PAT_CONST)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('3')
              PsiWhiteSpace(' ')
              RsMatchArmGuardImpl(MATCH_ARM_GUARD)
                PsiElement(if)('if')
                PsiWhiteSpace(' ')
                RsBinaryExprImpl(BINARY_EXPR)
                  RsLetExprImpl(LET_EXPR)
                    PsiElement(let)('let')
                    PsiWhiteSpace(' ')
                    RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
                      RsPathImpl(PATH)
                        PsiElement(identifier)('Some')
                      PsiElement(()('(')
                      RsPatConstImpl(PAT_CONST)
                        RsLitExprImpl(LIT_EXPR)
                          PsiElement(INTEGER_LITERAL)('24')
                      PsiElement())(')')
                    PsiWhiteSpace(' ')
                    PsiElement(=)('=')
                    PsiWhiteSpace(' ')
                    RsCallExprImpl(CALL_EXPR)
                      RsPathExprImpl(PATH_EXPR)
                        RsPathImpl(PATH)
                          PsiElement(identifier)('Some')
                      RsValueArgumentListImpl(VALUE_ARGUMENT_LIST)
                        PsiElement(()('(')
                        RsLitExprImpl(LIT_EXPR)
                          PsiElement(INTEGER_LITERAL)('24')
                        PsiElement())(')')
                  PsiWhiteSpace(' ')
                  RsBinaryOpImpl(BINARY_OP)
                    PsiElement(&&)('&&')
                  PsiWhiteSpace(' ')
                  RsBinaryExprImpl(BINARY_EXPR)
                    RsLitExprImpl(LIT_EXPR)
                      PsiElement(INTEGER_LITERAL)('1')
                    PsiWhiteSpace(' ')
                    RsBinaryOpImpl(BINARY_OP)
                      PsiElement(<)('<')
                    PsiWhiteSpace(' ')
                    RsLitExprImpl(LIT_EXPR)
                      PsiElement(INTEGER_LITERAL)('2')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('3')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatConstImpl(PAT_CONST)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('4')
              PsiWhiteSpace(' ')
              RsMatchArmGuardImpl(MATCH_ARM_GUARD)
                PsiElement(if)('if')
                PsiWhiteSpace(' ')
                RsBinaryExprImpl(BINARY_EXPR)
                  RsBinaryExprImpl(BINARY_EXPR)
                    RsLitExprImpl(LIT_EXPR)
                      PsiElement(INTEGER_LITERAL)('1')
                    PsiWhiteSpace(' ')
                    RsBinaryOpImpl(BINARY_OP)
                      PsiElement(<)('<')
                    PsiWhiteSpace(' ')
                    RsLitExprImpl(LIT_EXPR)
                      PsiElement(INTEGER_LITERAL)('2')
                  PsiWhiteSpace(' ')
                  RsBinaryOpImpl(BINARY_OP)
                    PsiElement(&&)('&&')
                  PsiWhiteSpace(' ')
                  RsLetExprImpl(LET_EXPR)
                    PsiElement(let)('let')
                    PsiWhiteSpace(' ')
                    RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
                      RsPathImpl(PATH)
                        PsiElement(identifier)('Some')
                      PsiElement(()('(')
                      RsPatConstImpl(PAT_CONST)
                        RsLitExprImpl(LIT_EXPR)
                          PsiElement(INTEGER_LITERAL)('42')
                      PsiElement())(')')
                    PsiWhiteSpace(' ')
                    PsiElement(=)('=')
                    PsiWhiteSpace(' ')
                    RsCallExprImpl(CALL_EXPR)
                      RsPathExprImpl(PATH_EXPR)
                        RsPathImpl(PATH)
                          PsiElement(identifier)('Some')
                      RsValueArgumentListImpl(VALUE_ARGUMENT_LIST)
                        PsiElement(()('(')
                        RsLitExprImpl(LIT_EXPR)
                          PsiElement(INTEGER_LITERAL)('42')
                        PsiElement())(')')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('4')
              PsiElement(,)(',')
            PsiWhiteSpace('\n    ')
            PsiElement(})('}')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMatchExprImpl(MATCH_EXPR)
          PsiElement(match)('match')
          PsiWhiteSpace(' ')
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('x')
          PsiWhiteSpace(' ')
          RsMatchBodyImpl(MATCH_BODY)
            PsiElement({)('{')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatConstImpl(PAT_CONST)
                RsBlockExprImpl(BLOCK_EXPR)
                  PsiElement(const)('const')
                  PsiWhiteSpace(' ')
                  RsBlockImpl(BLOCK)
                    PsiElement({)('{')
                    PsiWhiteSpace(' ')
                    RsExprStmtImpl(EXPR_STMT)
                      RsLitExprImpl(LIT_EXPR)
                        PsiElement(INTEGER_LITERAL)('0')
                    PsiWhiteSpace(' ')
                    PsiElement(})('}')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('0')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatConstImpl(PAT_CONST)
                RsBlockExprImpl(BLOCK_EXPR)
                  PsiElement(const)('const')
                  PsiWhiteSpace(' ')
                  RsBlockImpl(BLOCK)
                    PsiElement({)('{')
                    PsiWhiteSpace(' ')
                    RsExprStmtImpl(EXPR_STMT)
                      RsBlockExprImpl(BLOCK_EXPR)
                        PsiElement(const)('const')
                        PsiWhiteSpace(' ')
                        RsBlockImpl(BLOCK)
                          PsiElement({)('{')
                          PsiWhiteSpace(' ')
                          RsExprStmtImpl(EXPR_STMT)
                            RsLitExprImpl(LIT_EXPR)
                              PsiElement(INTEGER_LITERAL)('1')
                          PsiWhiteSpace(' ')
                          PsiElement(})('}')
                    PsiWhiteSpace(' ')
                    PsiElement(})('}')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('1')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatRangeImpl(PAT_RANGE)
                RsPatConstImpl(PAT_CONST)
                  RsBlockExprImpl(BLOCK_EXPR)
                    PsiElement(const)('const')
                    PsiWhiteSpace(' ')
                    RsBlockImpl(BLOCK)
                      PsiElement({)('{')
                      PsiWhiteSpace(' ')
                      RsExprStmtImpl(EXPR_STMT)
                        RsLitExprImpl(LIT_EXPR)
                          PsiElement(INTEGER_LITERAL)('2')
                      PsiWhiteSpace(' ')
                      PsiElement(})('}')
                PsiElement(..=)('..=')
                RsPatConstImpl(PAT_CONST)
                  RsBlockExprImpl(BLOCK_EXPR)
                    PsiElement(const)('const')
                    PsiWhiteSpace(' ')
                    RsBlockImpl(BLOCK)
                      PsiElement({)('{')
                      PsiWhiteSpace(' ')
                      RsExprStmtImpl(EXPR_STMT)
                        RsLitExprImpl(LIT_EXPR)
                          PsiElement(INTEGER_LITERAL)('3')
                      PsiWhiteSpace(' ')
                      PsiElement(})('}')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('2')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatWildImpl(PAT_WILD)
                PsiElement(_)('_')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('3')
            PsiWhiteSpace('\n    ')
            PsiElement(})('}')
        PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
