FILE
  RsFunctionImpl(FUNCTION)
    PsiElement(async_kw)('async')
    PsiWhiteSpace(' ')
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('foo')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n')
  RsFunctionImpl(FUNCTION)
    PsiElement(async_kw)('async')
    PsiWhiteSpace(' ')
    PsiElement(fn)('fn')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('bar')
    RsValueParameterListImpl(VALUE_PARAMETER_LIST)
      PsiElement(()('(')
      PsiElement())(')')
    PsiWhiteSpace(' ')
    RsBlockImpl(BLOCK)
      PsiElement({)('{')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  RsTraitItemImpl(TRAIT_ITEM)
    PsiElement(trait)('trait')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('T')
    PsiWhiteSpace(' ')
    RsMembersImpl(MEMBERS)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsFunctionImpl(FUNCTION)
        PsiElement(async_kw)('async')
        PsiWhiteSpace(' ')
        PsiElement(fn)('fn')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('foo')
        RsValueParameterListImpl(VALUE_PARAMETER_LIST)
          PsiElement(()('(')
          PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsFunctionImpl(FUNCTION)
        PsiElement(async_kw)('async')
        PsiWhiteSpace(' ')
        PsiElement(fn)('fn')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('bar')
        RsValueParameterListImpl(VALUE_PARAMETER_LIST)
          PsiElement(()('(')
          PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
  PsiWhiteSpace('\n\n')
  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)('async')
        PsiWhiteSpace(' ')
        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)('await')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsUnitExprImpl(UNIT_EXPR)
          PsiElement(()('(')
          PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatWildImpl(PAT_WILD)
          PsiElement(_)('_')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathExprImpl(PATH_EXPR)
          RsPathImpl(PATH)
            PsiElement(identifier)('async')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatWildImpl(PAT_WILD)
          PsiElement(_)('_')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsPathExprImpl(PATH_EXPR)
          RsPathImpl(PATH)
            PsiElement(identifier)('await')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatWildImpl(PAT_WILD)
          PsiElement(_)('_')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsMacroExprImpl(MACRO_EXPR)
          RsMacroCallImpl(MACRO_CALL)
            RsPathImpl(PATH)
              PsiElement(identifier)('async')
            PsiElement(!)('!')
            RsMacroArgumentImpl(MACRO_ARGUMENT)
              PsiElement(()('(')
              PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatWildImpl(PAT_WILD)
          PsiElement(_)('_')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsDotExprImpl(DOT_EXPR)
          RsPathExprImpl(PATH_EXPR)
            RsPathImpl(PATH)
              PsiElement(identifier)('await')
          PsiElement(.)('.')
          RsFieldLookupImpl(FIELD_LOOKUP)
            PsiElement(identifier)('await')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatWildImpl(PAT_WILD)
          PsiElement(_)('_')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsDotExprImpl(DOT_EXPR)
          RsCallExprImpl(CALL_EXPR)
            RsPathExprImpl(PATH_EXPR)
              RsPathImpl(PATH)
                PsiElement(identifier)('foo')
            RsValueArgumentListImpl(VALUE_ARGUMENT_LIST)
              PsiElement(()('(')
              PsiElement())(')')
          PsiElement(.)('.')
          RsFieldLookupImpl(FIELD_LOOKUP)
            PsiElement(identifier)('await')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatWildImpl(PAT_WILD)
          PsiElement(_)('_')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsDotExprImpl(DOT_EXPR)
          RsBlockExprImpl(BLOCK_EXPR)
            PsiElement(async_kw)('async')
            PsiWhiteSpace(' ')
            RsBlockImpl(BLOCK)
              PsiElement({)('{')
              PsiWhiteSpace(' ')
              RsExprStmtImpl(EXPR_STMT)
                RsUnitExprImpl(UNIT_EXPR)
                  PsiElement(()('(')
                  PsiElement())(')')
              PsiWhiteSpace(' ')
              PsiElement(})('}')
          PsiElement(.)('.')
          RsFieldLookupImpl(FIELD_LOOKUP)
            PsiElement(identifier)('await')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsBlockExprImpl(BLOCK_EXPR)
          PsiElement(async_kw)('async')
          PsiWhiteSpace(' ')
          RsBlockImpl(BLOCK)
            PsiElement({)('{')
            PsiWhiteSpace(' ')
            RsExprStmtImpl(EXPR_STMT)
              RsUnitExprImpl(UNIT_EXPR)
                PsiElement(()('(')
                PsiElement())(')')
            PsiWhiteSpace(' ')
            PsiElement(})('}')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsLambdaExprImpl(LAMBDA_EXPR)
          PsiElement(async_kw)('async')
          PsiWhiteSpace(' ')
          RsValueParameterListImpl(VALUE_PARAMETER_LIST)
            PsiElement(|)('|')
            PsiElement(|)('|')
          PsiWhiteSpace(' ')
          RsBlockExprImpl(BLOCK_EXPR)
            RsBlockImpl(BLOCK)
              PsiElement({)('{')
              PsiWhiteSpace(' ')
              RsExprStmtImpl(EXPR_STMT)
                RsUnitExprImpl(UNIT_EXPR)
                  PsiElement(()('(')
                  PsiElement())(')')
              PsiWhiteSpace(' ')
              PsiElement(})('}')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsLambdaExprImpl(LAMBDA_EXPR)
          PsiElement(async_kw)('async')
          PsiWhiteSpace(' ')
          PsiElement(move)('move')
          PsiWhiteSpace(' ')
          RsValueParameterListImpl(VALUE_PARAMETER_LIST)
            PsiElement(|)('|')
            PsiElement(|)('|')
          PsiWhiteSpace(' ')
          RsBlockExprImpl(BLOCK_EXPR)
            RsBlockImpl(BLOCK)
              PsiElement({)('{')
              PsiWhiteSpace(' ')
              RsExprStmtImpl(EXPR_STMT)
                RsUnitExprImpl(UNIT_EXPR)
                  PsiElement(()('(')
                  PsiElement())(')')
              PsiWhiteSpace(' ')
              PsiElement(})('}')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsExprStmtImpl(EXPR_STMT)
        RsLambdaExprImpl(LAMBDA_EXPR)
          PsiElement(static)('static')
          PsiWhiteSpace(' ')
          PsiElement(move)('move')
          PsiWhiteSpace(' ')
          RsValueParameterListImpl(VALUE_PARAMETER_LIST)
            PsiElement(|)('|')
            PsiElement(|)('|')
          PsiWhiteSpace(' ')
          RsBlockExprImpl(BLOCK_EXPR)
            RsBlockImpl(BLOCK)
              PsiElement({)('{')
              PsiWhiteSpace(' ')
              RsExprStmtImpl(EXPR_STMT)
                RsUnitExprImpl(UNIT_EXPR)
                  PsiElement(()('(')
                  PsiElement())(')')
              PsiWhiteSpace(' ')
              PsiElement(})('}')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsFunctionImpl(FUNCTION)
        PsiElement(async_kw)('async')
        PsiWhiteSpace(' ')
        PsiElement(fn)('fn')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('nested')
        RsValueParameterListImpl(VALUE_PARAMETER_LIST)
          PsiElement(()('(')
          PsiElement())(')')
        PsiWhiteSpace(' ')
        RsBlockImpl(BLOCK)
          PsiElement({)('{')
          PsiElement(})('}')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
