FILE
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('patterns')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatStructImpl(PAT_STRUCT)
          RsPathImpl(PATH)
            PsiElement(identifier)('S')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          RsPatRestImpl(PAT_REST)
            PsiElement(..)('..')
          PsiElement(})('}')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathExprImpl(PATH_EXPR)
          RsPathImpl(PATH)
            PsiElement(identifier)('x')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatStructImpl(PAT_STRUCT)
          RsPathImpl(PATH)
            PsiElement(identifier)('S')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          RsPatFieldImpl(PAT_FIELD)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('field')
          PsiElement(})('}')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathExprImpl(PATH_EXPR)
          RsPathImpl(PATH)
            PsiElement(identifier)('x')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatStructImpl(PAT_STRUCT)
          RsPathImpl(PATH)
            PsiElement(identifier)('S')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          RsPatFieldImpl(PAT_FIELD)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('field')
          PsiElement(,)(',')
          PsiElement(})('}')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathExprImpl(PATH_EXPR)
          RsPathImpl(PATH)
            PsiElement(identifier)('x')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatStructImpl(PAT_STRUCT)
          RsPathImpl(PATH)
            PsiElement(identifier)('S')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          RsPatFieldImpl(PAT_FIELD)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('field')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsPatRestImpl(PAT_REST)
            PsiElement(..)('..')
          PsiElement(})('}')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathExprImpl(PATH_EXPR)
          RsPathImpl(PATH)
            PsiElement(identifier)('x')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
          RsPathImpl(PATH)
            PsiElement(identifier)('T')
          PsiElement(()('(')
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('field')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsPatRestImpl(PAT_REST)
            PsiElement(..)('..')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathExprImpl(PATH_EXPR)
          RsPathImpl(PATH)
            PsiElement(identifier)('x')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
          RsPathImpl(PATH)
            PsiElement(identifier)('T')
          PsiElement(()('(')
          RsPatRestImpl(PAT_REST)
            PsiElement(..)('..')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('field')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathExprImpl(PATH_EXPR)
          RsPathImpl(PATH)
            PsiElement(identifier)('x')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatTupImpl(PAT_TUP)
          PsiElement(()('(')
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('x')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsPatRestImpl(PAT_REST)
            PsiElement(..)('..')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('y')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsTupleExprImpl(TUPLE_EXPR)
          PsiElement(()('(')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('1')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('2')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('3')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('4')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('5')
          PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatSliceImpl(PAT_SLICE)
          PsiElement([)('[')
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('x')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsPatRestImpl(PAT_REST)
            PsiElement(..)('..')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('y')
          PsiElement(])(']')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsArrayExprImpl(ARRAY_EXPR)
          PsiElement([)('[')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('1')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('2')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('3')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('4')
          PsiElement(])(']')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatSliceImpl(PAT_SLICE)
          PsiElement([)('[')
          PsiWhiteSpace(' ')
          RsOrPatImpl(OR_PAT)
            PsiElement(|)('|')
            PsiWhiteSpace(' ')
            RsPatIdentImpl(PAT_IDENT)
              RsPatBindingImpl(PAT_BINDING)
                PsiElement(identifier)('x')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsPatRestImpl(PAT_REST)
            PsiElement(..)('..')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsOrPatImpl(OR_PAT)
            PsiElement(|)('|')
            PsiWhiteSpace(' ')
            RsPatIdentImpl(PAT_IDENT)
              RsPatBindingImpl(PAT_BINDING)
                PsiElement(identifier)('y')
          PsiElement(])(']')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsArrayExprImpl(ARRAY_EXPR)
          PsiElement([)('[')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('1')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('2')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('3')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('4')
          PsiElement(])(']')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatRefImpl(PAT_REF)
          PsiElement(&)('&')
          RsPatSliceImpl(PAT_SLICE)
            PsiElement([)('[')
            RsPatIdentImpl(PAT_IDENT)
              RsPatBindingImpl(PAT_BINDING)
                PsiElement(identifier)('x')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            RsPatIdentImpl(PAT_IDENT)
              RsPatBindingImpl(PAT_BINDING)
                RsBindingModeImpl(BINDING_MODE)
                  PsiElement(ref)('ref')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('y')
              PsiWhiteSpace(' ')
              PsiElement(@)('@')
              PsiWhiteSpace(' ')
              RsPatRestImpl(PAT_REST)
                PsiElement(..)('..')
            PsiElement(])(']')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsArrayExprImpl(ARRAY_EXPR)
          PsiElement([)('[')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('1')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('2')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('3')
          PsiElement(])(']')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatSliceImpl(PAT_SLICE)
          PsiElement([)('[')
          RsPatRestImpl(PAT_REST)
            PsiElement(..)('..')
          PsiElement(])(']')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsArrayExprImpl(ARRAY_EXPR)
          PsiElement([)('[')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('1')
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('2')
          PsiElement(])(']')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            RsBindingModeImpl(BINDING_MODE)
              PsiElement(ref)('ref')
            PsiWhiteSpace(' ')
            PsiElement(identifier)('a')
          PsiWhiteSpace(' ')
          PsiElement(@)('@')
          PsiWhiteSpace(' ')
          RsPatWildImpl(PAT_WILD)
            PsiElement(_)('_')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathExprImpl(PATH_EXPR)
          RsPathImpl(PATH)
            PsiElement(identifier)('value')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsIfExprImpl(IF_EXPR)
          PsiElement(if)('if')
          PsiWhiteSpace(' ')
          RsConditionImpl(CONDITION)
            RsLetExprImpl(LET_EXPR)
              PsiElement(let)('let')
              PsiWhiteSpace(' ')
              RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
                RsPathImpl(PATH)
                  PsiElement(identifier)('Some')
                PsiElement(()('(')
                RsPatIdentImpl(PAT_IDENT)
                  RsPatBindingImpl(PAT_BINDING)
                    PsiElement(identifier)('x')
                PsiElement(,)(',')
                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)('92')
                  PsiElement())(')')
          PsiWhiteSpace(' ')
          RsBlockImpl(BLOCK)
            PsiElement({)('{')
            PsiWhiteSpace(' ')
            PsiElement(})('}')
      PsiWhiteSpace('\n\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatMacroImpl(PAT_MACRO)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('m')
            PsiElement(!)('!')
            RsMacroArgumentImpl(MACRO_ARGUMENT)
              PsiElement(()('(')
              RsMacroBodyIdentImpl(MACRO_BODY_IDENT)
                PsiElement(identifier)('x')
              PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsLitExprImpl(LIT_EXPR)
          PsiElement(INTEGER_LITERAL)('92')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatRangeImpl(PAT_RANGE)
          RsPatConstImpl(PAT_CONST)
            RsPathExprImpl(PATH_EXPR)
              RsPathImpl(PATH)
                RsTypeQualImpl(TYPE_QUAL)
                  PsiElement(<)('<')
                  RsPathTypeImpl(PATH_TYPE)
                    RsPathImpl(PATH)
                      PsiElement(identifier)('i32')
                  PsiElement(>)('>')
                  PsiElement(::)('::')
                PsiElement(identifier)('foo')
          PsiWhiteSpace(' ')
          PsiElement(...)('...')
          PsiWhiteSpace(' ')
          RsPatConstImpl(PAT_CONST)
            RsPathExprImpl(PATH_EXPR)
              RsPathImpl(PATH)
                RsTypeQualImpl(TYPE_QUAL)
                  PsiElement(<)('<')
                  RsPathTypeImpl(PATH_TYPE)
                    RsPathImpl(PATH)
                      PsiElement(identifier)('i32')
                  PsiElement(>)('>')
                  PsiElement(::)('::')
                PsiElement(identifier)('bar')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsLitExprImpl(LIT_EXPR)
          PsiElement(INTEGER_LITERAL)('92')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatConstImpl(PAT_CONST)
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              RsPathImpl(PATH)
                PsiElement(identifier)('Option')
              PsiElement(::)('::')
              PsiElement(identifier)('None')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathExprImpl(PATH_EXPR)
          RsPathImpl(PATH)
            PsiElement(identifier)('None')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsOrPatImpl(OR_PAT)
          RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
            RsPathImpl(PATH)
              PsiElement(identifier)('Foo')
            PsiElement(()('(')
            RsPatIdentImpl(PAT_IDENT)
              RsPatBindingImpl(PAT_BINDING)
                PsiElement(identifier)('x')
            PsiElement())(')')
          PsiWhiteSpace(' ')
          PsiElement(|)('|')
          PsiWhiteSpace(' ')
          RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
            RsPathImpl(PATH)
              PsiElement(identifier)('Bar')
            PsiElement(()('(')
            RsPatIdentImpl(PAT_IDENT)
              RsPatBindingImpl(PAT_BINDING)
                PsiElement(identifier)('x')
            PsiElement())(')')
          PsiWhiteSpace(' ')
          PsiElement(|)('|')
          PsiWhiteSpace(' ')
          RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
            RsPathImpl(PATH)
              PsiElement(identifier)('Baz')
            PsiElement(()('(')
            RsPatIdentImpl(PAT_IDENT)
              RsPatBindingImpl(PAT_BINDING)
                PsiElement(identifier)('x')
            PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathExprImpl(PATH_EXPR)
          RsPathImpl(PATH)
            PsiElement(identifier)('baz')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsOrPatImpl(OR_PAT)
          PsiElement(|)('|')
          PsiWhiteSpace(' ')
          RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
            RsPathImpl(PATH)
              PsiElement(identifier)('Foo')
            PsiElement(()('(')
            RsPatIdentImpl(PAT_IDENT)
              RsPatBindingImpl(PAT_BINDING)
                PsiElement(identifier)('x')
            PsiElement())(')')
          PsiWhiteSpace(' ')
          PsiElement(|)('|')
          PsiWhiteSpace(' ')
          RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
            RsPathImpl(PATH)
              PsiElement(identifier)('Bar')
            PsiElement(()('(')
            RsPatIdentImpl(PAT_IDENT)
              RsPatBindingImpl(PAT_BINDING)
                PsiElement(identifier)('x')
            PsiElement())(')')
          PsiWhiteSpace(' ')
          PsiElement(|)('|')
          PsiWhiteSpace(' ')
          RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
            RsPathImpl(PATH)
              PsiElement(identifier)('Baz')
            PsiElement(()('(')
            RsPatIdentImpl(PAT_IDENT)
              RsPatBindingImpl(PAT_BINDING)
                PsiElement(identifier)('x')
            PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathExprImpl(PATH_EXPR)
          RsPathImpl(PATH)
            PsiElement(identifier)('baz')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
          RsPathImpl(PATH)
            PsiElement(identifier)('Some')
          PsiElement(()('(')
          RsOrPatImpl(OR_PAT)
            RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
              RsPathImpl(PATH)
                PsiElement(identifier)('Foo')
              PsiElement(()('(')
              RsPatIdentImpl(PAT_IDENT)
                RsPatBindingImpl(PAT_BINDING)
                  PsiElement(identifier)('x')
              PsiElement())(')')
            PsiWhiteSpace(' ')
            PsiElement(|)('|')
            PsiWhiteSpace(' ')
            RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
              RsPathImpl(PATH)
                PsiElement(identifier)('Bar')
              PsiElement(()('(')
              RsPatIdentImpl(PAT_IDENT)
                RsPatBindingImpl(PAT_BINDING)
                  PsiElement(identifier)('x')
              PsiElement())(')')
            PsiWhiteSpace(' ')
            PsiElement(|)('|')
            PsiWhiteSpace(' ')
            RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
              RsPathImpl(PATH)
                PsiElement(identifier)('Baz')
              PsiElement(()('(')
              RsPatIdentImpl(PAT_IDENT)
                RsPatBindingImpl(PAT_BINDING)
                  PsiElement(identifier)('x')
              PsiElement())(')')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathExprImpl(PATH_EXPR)
          RsPathImpl(PATH)
            PsiElement(identifier)('baz')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
          RsPathImpl(PATH)
            PsiElement(identifier)('Some')
          PsiElement(()('(')
          RsOrPatImpl(OR_PAT)
            PsiElement(|)('|')
            PsiWhiteSpace(' ')
            RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
              RsPathImpl(PATH)
                PsiElement(identifier)('Foo')
              PsiElement(()('(')
              RsPatIdentImpl(PAT_IDENT)
                RsPatBindingImpl(PAT_BINDING)
                  PsiElement(identifier)('x')
              PsiElement())(')')
            PsiWhiteSpace(' ')
            PsiElement(|)('|')
            PsiWhiteSpace(' ')
            RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
              RsPathImpl(PATH)
                PsiElement(identifier)('Bar')
              PsiElement(()('(')
              RsPatIdentImpl(PAT_IDENT)
                RsPatBindingImpl(PAT_BINDING)
                  PsiElement(identifier)('x')
              PsiElement())(')')
            PsiWhiteSpace(' ')
            PsiElement(|)('|')
            PsiWhiteSpace(' ')
            RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
              RsPathImpl(PATH)
                PsiElement(identifier)('Baz')
              PsiElement(()('(')
              RsPatIdentImpl(PAT_IDENT)
                RsPatBindingImpl(PAT_BINDING)
                  PsiElement(identifier)('x')
              PsiElement())(')')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathExprImpl(PATH_EXPR)
          RsPathImpl(PATH)
            PsiElement(identifier)('baz')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
          RsPathImpl(PATH)
            PsiElement(identifier)('Some')
          PsiElement(()('(')
          RsOrPatImpl(OR_PAT)
            RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
              RsPathImpl(PATH)
                PsiElement(identifier)('Foo')
              PsiElement(()('(')
              RsPatIdentImpl(PAT_IDENT)
                RsPatBindingImpl(PAT_BINDING)
                  PsiElement(identifier)('x')
              PsiElement())(')')
            PsiWhiteSpace(' ')
            PsiElement(|)('|')
            PsiWhiteSpace(' ')
            RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
              RsPathImpl(PATH)
                PsiElement(identifier)('Bar')
              PsiElement(()('(')
              RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
                RsPathImpl(PATH)
                  PsiElement(identifier)('Ok')
                PsiElement(()('(')
                RsOrPatImpl(OR_PAT)
                  RsPatConstImpl(PAT_CONST)
                    RsLitExprImpl(LIT_EXPR)
                      PsiElement(INTEGER_LITERAL)('1')
                  PsiWhiteSpace(' ')
                  PsiElement(|)('|')
                  PsiWhiteSpace(' ')
                  RsPatConstImpl(PAT_CONST)
                    RsLitExprImpl(LIT_EXPR)
                      PsiElement(INTEGER_LITERAL)('2')
                PsiElement())(')')
              PsiElement())(')')
            PsiWhiteSpace(' ')
            PsiElement(|)('|')
            PsiWhiteSpace(' ')
            RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
              RsPathImpl(PATH)
                PsiElement(identifier)('Baz')
              PsiElement(()('(')
              RsPatIdentImpl(PAT_IDENT)
                RsPatBindingImpl(PAT_BINDING)
                  PsiElement(identifier)('x')
              PsiElement())(')')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathExprImpl(PATH_EXPR)
          RsPathImpl(PATH)
            PsiElement(identifier)('baz')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      PsiComment(<EOL_COMMENT>)('// https://github.com/rust-lang/rfcs/blob/master/text/2535-or-patterns.md#precedence')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsOrPatImpl(OR_PAT)
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('i')
            PsiWhiteSpace(' ')
            PsiElement(@)('@')
            PsiWhiteSpace(' ')
            RsPatIdentImpl(PAT_IDENT)
              RsPatBindingImpl(PAT_BINDING)
                PsiElement(identifier)('p')
          PsiWhiteSpace(' ')
          PsiElement(|)('|')
          PsiWhiteSpace(' ')
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('q')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathExprImpl(PATH_EXPR)
          RsPathImpl(PATH)
            PsiElement(identifier)('x')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('i')
          PsiWhiteSpace(' ')
          PsiElement(@)('@')
          PsiWhiteSpace(' ')
          RsPatTupImpl(PAT_TUP)
            PsiElement(()('(')
            RsOrPatImpl(OR_PAT)
              RsPatIdentImpl(PAT_IDENT)
                RsPatBindingImpl(PAT_BINDING)
                  PsiElement(identifier)('p')
              PsiWhiteSpace(' ')
              PsiElement(|)('|')
              PsiWhiteSpace(' ')
              RsPatIdentImpl(PAT_IDENT)
                RsPatBindingImpl(PAT_BINDING)
                  PsiElement(identifier)('q')
            PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathExprImpl(PATH_EXPR)
          RsPathImpl(PATH)
            PsiElement(identifier)('x')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('i')
          PsiWhiteSpace(' ')
          PsiElement(@)('@')
          PsiWhiteSpace(' ')
          RsPatRangeImpl(PAT_RANGE)
            RsPatConstImpl(PAT_CONST)
              RsLitExprImpl(LIT_EXPR)
                PsiElement(INTEGER_LITERAL)('50')
            PsiElement(..)('..')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathExprImpl(PATH_EXPR)
          RsPathImpl(PATH)
            PsiElement(identifier)('x')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsMatchExprImpl(MATCH_EXPR)
          PsiElement(match)('match')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('10')
          PsiWhiteSpace(' ')
          RsMatchBodyImpl(MATCH_BODY)
            PsiElement({)('{')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatConstImpl(PAT_CONST)
                RsUnaryExprImpl(UNARY_EXPR)
                  PsiElement(-)('-')
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('100')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatIdentImpl(PAT_IDENT)
                RsPatBindingImpl(PAT_BINDING)
                  PsiElement(identifier)('X')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatConstImpl(PAT_CONST)
                RsPathExprImpl(PATH_EXPR)
                  RsPathImpl(PATH)
                    RsPathImpl(PATH)
                      PsiElement(identifier)('Q')
                    PsiElement(::)('::')
                    PsiElement(identifier)('T')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatRestImpl(PAT_REST)
                PsiElement(..)('..')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatRangeImpl(PAT_RANGE)
                PsiElement(..=)('..=')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatRangeImpl(PAT_RANGE)
                PsiElement(...)('...')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatRangeImpl(PAT_RANGE)
                RsPatConstImpl(PAT_CONST)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('0')
                PsiElement(..)('..')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatRangeImpl(PAT_RANGE)
                RsPatConstImpl(PAT_CONST)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('2')
                PsiElement(..=)('..=')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatRangeImpl(PAT_RANGE)
                RsPatConstImpl(PAT_CONST)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('1')
                PsiElement(...)('...')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatRangeImpl(PAT_RANGE)
                PsiElement(..)('..')
                RsPatConstImpl(PAT_CONST)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('3')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatRangeImpl(PAT_RANGE)
                PsiElement(..=)('..=')
                RsPatConstImpl(PAT_CONST)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('5')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatRangeImpl(PAT_RANGE)
                PsiElement(...)('...')
                RsPatConstImpl(PAT_CONST)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('4')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatRangeImpl(PAT_RANGE)
                RsPatConstImpl(PAT_CONST)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('6')
                PsiElement(..)('..')
                RsPatConstImpl(PAT_CONST)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('8')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatRangeImpl(PAT_RANGE)
                RsPatConstImpl(PAT_CONST)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('8')
                PsiElement(..=)('..=')
                RsPatConstImpl(PAT_CONST)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('10')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatRangeImpl(PAT_RANGE)
                RsPatConstImpl(PAT_CONST)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('10')
                PsiElement(...)('...')
                RsPatConstImpl(PAT_CONST)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('12')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatRangeImpl(PAT_RANGE)
                RsPatConstImpl(PAT_CONST)
                  RsPathExprImpl(PATH_EXPR)
                    RsPathImpl(PATH)
                      PsiElement(identifier)('V')
                PsiElement(..=)('..=')
                RsPatConstImpl(PAT_CONST)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('10')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatRangeImpl(PAT_RANGE)
                RsPatConstImpl(PAT_CONST)
                  RsPathExprImpl(PATH_EXPR)
                    RsPathImpl(PATH)
                      PsiElement(identifier)('W')
                PsiElement(..)('..')
                RsPatConstImpl(PAT_CONST)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('20')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatRangeImpl(PAT_RANGE)
                RsPatConstImpl(PAT_CONST)
                  RsPathExprImpl(PATH_EXPR)
                    RsPathImpl(PATH)
                      RsPathImpl(PATH)
                        PsiElement(identifier)('Y')
                      PsiElement(::)('::')
                      PsiElement(identifier)('Z')
                PsiElement(..)('..')
                RsPatConstImpl(PAT_CONST)
                  RsLitExprImpl(LIT_EXPR)
                    PsiElement(INTEGER_LITERAL)('50')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
                RsPathImpl(PATH)
                  PsiElement(identifier)('Ok')
                PsiElement(()('(')
                RsOrPatImpl(OR_PAT)
                  RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
                    RsPathImpl(PATH)
                      PsiElement(identifier)('Foo')
                    PsiElement(()('(')
                    RsPatIdentImpl(PAT_IDENT)
                      RsPatBindingImpl(PAT_BINDING)
                        PsiElement(identifier)('x')
                    PsiElement())(')')
                  PsiWhiteSpace(' ')
                  PsiElement(|)('|')
                  PsiWhiteSpace(' ')
                  RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
                    RsPathImpl(PATH)
                      PsiElement(identifier)('Bar')
                    PsiElement(()('(')
                    RsPatIdentImpl(PAT_IDENT)
                      RsPatBindingImpl(PAT_BINDING)
                        PsiElement(identifier)('x')
                    PsiElement())(')')
                  PsiWhiteSpace(' ')
                  PsiElement(|)('|')
                  PsiWhiteSpace(' ')
                  RsPatTupleStructImpl(PAT_TUPLE_STRUCT)
                    RsPathImpl(PATH)
                      PsiElement(identifier)('Baz')
                    PsiElement(()('(')
                    RsPatIdentImpl(PAT_IDENT)
                      RsPatBindingImpl(PAT_BINDING)
                        PsiElement(identifier)('x')
                    PsiElement())(')')
                PsiElement())(')')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
              PsiElement(,)(',')
            PsiWhiteSpace('\n        ')
            RsMatchArmImpl(MATCH_ARM)
              RsPatWildImpl(PAT_WILD)
                PsiElement(_)('_')
              PsiWhiteSpace(' ')
              PsiElement(=>)('=>')
              PsiWhiteSpace(' ')
              RsPathExprImpl(PATH_EXPR)
                RsPathImpl(PATH)
                  PsiElement(identifier)('x')
            PsiWhiteSpace('\n    ')
            PsiElement(})('}')
        PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
