FILE
  RsFunctionImpl(FUNCTION)
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('expressions')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiWhiteSpace('\n   ')
      PsiComment(<EOL_COMMENT>)('// expressions')
      PsiWhiteSpace('\n   ')
      RsExprStmtImpl(EXPR_STMT)
        RsBinaryExprImpl(BINARY_EXPR)
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('1')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(>>)('>>')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('1')
        PsiElement(;)(';')
      PsiWhiteSpace('\n   ')
      RsExprStmtImpl(EXPR_STMT)
        RsBinaryExprImpl(BINARY_EXPR)
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('x')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(>>=)('>>=')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('1')
        PsiElement(;)(';')
      PsiWhiteSpace('\n   ')
      RsExprStmtImpl(EXPR_STMT)
        RsBinaryExprImpl(BINARY_EXPR)
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('x')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(>=)('>=')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('1')
        PsiElement(;)(';')
      PsiWhiteSpace('\n   ')
      RsExprStmtImpl(EXPR_STMT)
        RsBinaryExprImpl(BINARY_EXPR)
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('1')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(<<)('<<')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('1')
        PsiElement(;)(';')
      PsiWhiteSpace('\n   ')
      RsExprStmtImpl(EXPR_STMT)
        RsBinaryExprImpl(BINARY_EXPR)
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('x')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(<<=)('<<=')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('1')
        PsiElement(;)(';')
      PsiWhiteSpace('\n   ')
      RsExprStmtImpl(EXPR_STMT)
        RsBinaryExprImpl(BINARY_EXPR)
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('x')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(<=)('<=')
          PsiWhiteSpace(' ')
          RsLitExprImpl(LIT_EXPR)
            PsiElement(INTEGER_LITERAL)('1')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n   ')
      RsTypeAliasImpl(TYPE_ALIAS)
        PsiComment(<EOL_COMMENT>)('// generics')
        PsiWhiteSpace('\n   ')
        PsiElement(type)('type')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('T')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('Vec')
            RsTypeArgumentListImpl(TYPE_ARGUMENT_LIST)
              PsiElement(<)('<')
              RsPathTypeImpl(PATH_TYPE)
                RsPathImpl(PATH)
                  PsiElement(identifier)('Vec')
                  RsTypeArgumentListImpl(TYPE_ARGUMENT_LIST)
                    PsiElement(<)('<')
                    RsInferTypeImpl(INFER_TYPE)
                      PsiElement(_)('_')
                    PsiElement(>)('>')
              PsiElement(>)('>')
        PsiElement(;)(';')
      PsiWhiteSpace('\n   ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('x')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('V')
            RsTypeArgumentListImpl(TYPE_ARGUMENT_LIST)
              PsiElement(<)('<')
              RsInferTypeImpl(INFER_TYPE)
                PsiElement(_)('_')
              PsiElement(>)('>')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsUnitExprImpl(UNIT_EXPR)
          PsiElement(()('(')
          PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n   ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatIdentImpl(PAT_IDENT)
          RsPatBindingImpl(PAT_BINDING)
            PsiElement(identifier)('x')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('V')
            RsTypeArgumentListImpl(TYPE_ARGUMENT_LIST)
              PsiElement(<)('<')
              RsPathTypeImpl(PATH_TYPE)
                RsPathImpl(PATH)
                  PsiElement(identifier)('V')
                  RsTypeArgumentListImpl(TYPE_ARGUMENT_LIST)
                    PsiElement(<)('<')
                    RsInferTypeImpl(INFER_TYPE)
                      PsiElement(_)('_')
                    PsiElement(>)('>')
              PsiElement(>)('>')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsUnitExprImpl(UNIT_EXPR)
          PsiElement(()('(')
          PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n   ')
      RsExprStmtImpl(EXPR_STMT)
        RsDotExprImpl(DOT_EXPR)
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('x')
          PsiElement(.)('.')
          RsMethodCallImpl(METHOD_CALL)
            PsiElement(identifier)('collect')
            RsTypeArgumentListImpl(TYPE_ARGUMENT_LIST)
              PsiElement(::)('::')
              PsiElement(<)('<')
              RsPathTypeImpl(PATH_TYPE)
                RsPathImpl(PATH)
                  PsiElement(identifier)('Vec')
                  RsTypeArgumentListImpl(TYPE_ARGUMENT_LIST)
                    PsiElement(<)('<')
                    RsPathTypeImpl(PATH_TYPE)
                      RsPathImpl(PATH)
                        PsiElement(identifier)('Vec')
                        RsTypeArgumentListImpl(TYPE_ARGUMENT_LIST)
                          PsiElement(<)('<')
                          RsInferTypeImpl(INFER_TYPE)
                            PsiElement(_)('_')
                          PsiElement(>)('>')
                    PsiElement(>)('>')
              PsiElement(>)('>')
            RsValueArgumentListImpl(VALUE_ARGUMENT_LIST)
              PsiElement(()('(')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n   ')
      RsTypeAliasImpl(TYPE_ALIAS)
        PsiElement(type)('type')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('U')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('Vec')
            RsTypeArgumentListImpl(TYPE_ARGUMENT_LIST)
              PsiElement(<)('<')
              RsPathTypeImpl(PATH_TYPE)
                RsPathImpl(PATH)
                  RsTypeQualImpl(TYPE_QUAL)
                    PsiElement(<)('<')
                    RsPathTypeImpl(PATH_TYPE)
                      RsPathImpl(PATH)
                        PsiElement(identifier)('i32')
                    PsiWhiteSpace(' ')
                    PsiElement(as)('as')
                    PsiWhiteSpace(' ')
                    RsTraitRefImpl(TRAIT_REF)
                      RsPathImpl(PATH)
                        PsiElement(identifier)('F')
                    PsiElement(>)('>')
                    PsiElement(::)('::')
                  PsiElement(identifier)('Q')
              PsiElement(>)('>')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n   ')
      RsExprStmtImpl(EXPR_STMT)
        RsBinaryExprImpl(BINARY_EXPR)
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('i')
          PsiWhiteSpace(' ')
          RsBinaryOpImpl(BINARY_OP)
            PsiElement(<)('<')
          PsiWhiteSpace(' ')
          RsCallExprImpl(CALL_EXPR)
            RsPathExprImpl(PATH_EXPR)
              RsPathImpl(PATH)
                RsTypeQualImpl(TYPE_QUAL)
                  PsiElement(<)('<')
                  RsPathTypeImpl(PATH_TYPE)
                    RsPathImpl(PATH)
                      PsiElement(identifier)('u32')
                  PsiElement(>)('>')
                  PsiElement(::)('::')
                PsiElement(identifier)('max_value')
            RsValueArgumentListImpl(VALUE_ARGUMENT_LIST)
              PsiElement(()('(')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
