FILE
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('main')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('simple_block')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsBlockExprImpl(BLOCK_EXPR)
          RsBlockImpl(BLOCK)
            PsiElement({)('{')
            PsiWhiteSpace('\n        ')
            RsExprStmtImpl(EXPR_STMT)
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('123')
            PsiWhiteSpace('\n    ')
            PsiElement(})('}')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('block_with_label')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsBlockExprImpl(BLOCK_EXPR)
          RsLabelDeclImpl(LABEL_DECL)
            PsiElement(QUOTE_IDENTIFIER)(''block')
            PsiElement(:)(':')
          PsiWhiteSpace(' ')
          RsBlockImpl(BLOCK)
            PsiElement({)('{')
            PsiWhiteSpace('\n        ')
            RsExprStmtImpl(EXPR_STMT)
              RsIfExprImpl(IF_EXPR)
                PsiElement(if)('if')
                PsiWhiteSpace(' ')
                RsConditionImpl(CONDITION)
                  RsCallExprImpl(CALL_EXPR)
                    RsPathExprImpl(PATH_EXPR)
                      RsPathImpl(PATH)
                        PsiElement(identifier)('foo')
                    RsValueArgumentListImpl(VALUE_ARGUMENT_LIST)
                      PsiElement(()('(')
                      PsiElement())(')')
                PsiWhiteSpace(' ')
                RsBlockImpl(BLOCK)
                  PsiElement({)('{')
                  PsiWhiteSpace(' ')
                  RsExprStmtImpl(EXPR_STMT)
                    RsBreakExprImpl(BREAK_EXPR)
                      PsiElement(break)('break')
                      PsiWhiteSpace(' ')
                      RsLabelImpl(LABEL)
                        PsiElement(QUOTE_IDENTIFIER)(''block')
                      PsiWhiteSpace(' ')
                      RsLitExprImpl(LIT_EXPR)
                        PsiElement(INTEGER_LITERAL)('1')
                    PsiElement(;)(';')
                  PsiWhiteSpace(' ')
                  PsiElement(})('}')
            PsiWhiteSpace('\n        ')
            RsExprStmtImpl(EXPR_STMT)
              RsIfExprImpl(IF_EXPR)
                PsiElement(if)('if')
                PsiWhiteSpace(' ')
                RsConditionImpl(CONDITION)
                  RsCallExprImpl(CALL_EXPR)
                    RsPathExprImpl(PATH_EXPR)
                      RsPathImpl(PATH)
                        PsiElement(identifier)('bar')
                    RsValueArgumentListImpl(VALUE_ARGUMENT_LIST)
                      PsiElement(()('(')
                      PsiElement())(')')
                PsiWhiteSpace(' ')
                RsBlockImpl(BLOCK)
                  PsiElement({)('{')
                  PsiWhiteSpace(' ')
                  RsExprStmtImpl(EXPR_STMT)
                    RsBreakExprImpl(BREAK_EXPR)
                      PsiElement(break)('break')
                      PsiWhiteSpace(' ')
                      RsLabelImpl(LABEL)
                        PsiElement(QUOTE_IDENTIFIER)(''block')
                      PsiWhiteSpace(' ')
                      RsLitExprImpl(LIT_EXPR)
                        PsiElement(INTEGER_LITERAL)('2')
                    PsiElement(;)(';')
                  PsiWhiteSpace(' ')
                  PsiElement(})('}')
            PsiWhiteSpace('\n        ')
            RsExprStmtImpl(EXPR_STMT)
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('3')
            PsiWhiteSpace('\n    ')
            PsiElement(})('}')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('const_block')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsBlockExprImpl(BLOCK_EXPR)
          PsiElement(const)('const')
          PsiWhiteSpace(' ')
          RsBlockImpl(BLOCK)
            PsiElement({)('{')
            PsiWhiteSpace('\n        ')
            RsExprStmtImpl(EXPR_STMT)
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('123')
            PsiWhiteSpace('\n    ')
            PsiElement(})('}')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMatchExprImpl(MATCH_EXPR)
          PsiElement(match)('match')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('123')
          PsiWhiteSpace(' ')
          RsMatchBodyImpl(MATCH_BODY)
            PsiElement({)('{')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatConstImpl(PAT_CONST)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('1')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsBlockExprImpl(BLOCK_EXPR)
                RsBlockImpl(BLOCK)
                  PsiElement({)('{')
                  PsiElement(})('}')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatConstImpl(PAT_CONST)
                RsLitExprImpl(LIT_EXPR)
                  PsiElement(INTEGER_LITERAL)('2')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsBlockExprImpl(BLOCK_EXPR)
                RsLabelDeclImpl(LABEL_DECL)
                  PsiElement(QUOTE_IDENTIFIER)(''b')
                  PsiElement(:)(':')
                PsiWhiteSpace(' ')
                RsBlockImpl(BLOCK)
                  PsiElement({)('{')
                  PsiWhiteSpace(' ')
                  RsExprStmtImpl(EXPR_STMT)
                    RsBreakExprImpl(BREAK_EXPR)
                      PsiElement(break)('break')
                      PsiWhiteSpace(' ')
                      RsLabelImpl(LABEL)
                        PsiElement(QUOTE_IDENTIFIER)(''b')
                    PsiElement(;)(';')
                  PsiWhiteSpace(' ')
                  PsiElement(})('}')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatWildImpl(PAT_WILD)
                PsiElement(_)('_')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsBlockExprImpl(BLOCK_EXPR)
                PsiElement(const)('const')
                PsiWhiteSpace(' ')
                RsBlockImpl(BLOCK)
                  PsiElement({)('{')
                  PsiElement(})('}')
            PsiWhiteSpace('\n    ')
            PsiElement(})('}')
      PsiWhiteSpace('\n')
      PsiElement(})('}')

