FILE
  RsStructItemImpl(STRUCT_ITEM)
    PsiElement(struct)('struct')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('S')
    PsiWhiteSpace(' ')
    RsBlockFieldsImpl(BLOCK_FIELDS)
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      RsNamedFieldDeclImpl(NAMED_FIELD_DECL)
        PsiElement(identifier)('f')
        PsiElement(:)(':')
        PsiWhiteSpace(' ')
        RsPathTypeImpl(PATH_TYPE)
          RsPathImpl(PATH)
            PsiElement(identifier)('f64')
      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(' ')
        RsPatStructImpl(PAT_STRUCT)
          RsPathImpl(PATH)
            PsiElement(identifier)('S')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          RsPatFieldImpl(PAT_FIELD)
            RsPatBindingImpl(PAT_BINDING)
              RsBindingModeImpl(BINDING_MODE)
                PsiElement(mut)('mut')
              PsiWhiteSpace(' ')
              PsiElement(identifier)('f')
          PsiWhiteSpace(' ')
          PsiErrorElement:',' or '}' expected, got ':'
            PsiElement(:)(':')
          PsiWhiteSpace(' ')
          RsPatFieldImpl(PAT_FIELD)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('f')
          PsiElement(})('}')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsStructLiteralImpl(STRUCT_LITERAL)
          RsPathImpl(PATH)
            PsiElement(identifier)('S')
          PsiWhiteSpace(' ')
          RsStructLiteralBodyImpl(STRUCT_LITERAL_BODY)
            PsiElement({)('{')
            PsiWhiteSpace(' ')
            RsStructLiteralFieldImpl(STRUCT_LITERAL_FIELD)
              PsiElement(identifier)('f')
              PsiElement(:)(':')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(FLOAT_LITERAL)('92.0')
            PsiWhiteSpace(' ')
            PsiElement(})('}')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatStructImpl(PAT_STRUCT)
          RsPathImpl(PATH)
            PsiElement(identifier)('S')
          PsiWhiteSpace(' ')
          PsiElement({)('{')
          PsiErrorElement:<pat field> expected, got ','
            <empty list>
          PsiElement(,)(',')
          RsPatFieldImpl(PAT_FIELD)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('f')
          PsiElement(})('}')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        RsStructLiteralImpl(STRUCT_LITERAL)
          RsPathImpl(PATH)
            PsiElement(identifier)('S')
          PsiWhiteSpace(' ')
          RsStructLiteralBodyImpl(STRUCT_LITERAL_BODY)
            PsiElement({)('{')
            PsiWhiteSpace(' ')
            RsStructLiteralFieldImpl(STRUCT_LITERAL_FIELD)
              PsiElement(identifier)('f')
              PsiElement(:)(':')
              PsiWhiteSpace(' ')
              RsLitExprImpl(LIT_EXPR)
                PsiElement(FLOAT_LITERAL)('92.0')
            PsiWhiteSpace(' ')
            PsiElement(})('}')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatTupImpl(PAT_TUP)
          PsiElement(()('(')
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('a')
          PsiElement(,)(',')
          PsiErrorElement:',' unexpected
            PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('b')
          PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatTupImpl(PAT_TUP)
          PsiElement(()('(')
          PsiErrorElement:<pattern> expected, got ','
            <empty list>
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('c')
          PsiElement())(')')
        PsiElement(;)(';')
      PsiWhiteSpace('\n\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatSliceImpl(PAT_SLICE)
          PsiElement([)('[')
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('a')
          PsiElement(,)(',')
          PsiErrorElement:',' unexpected
            PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('b')
          PsiElement(])(']')
        PsiElement(;)(';')
      PsiWhiteSpace('\n    ')
      RsLetDeclImpl(LET_DECL)
        PsiElement(let)('let')
        PsiWhiteSpace(' ')
        RsPatSliceImpl(PAT_SLICE)
          PsiElement([)('[')
          PsiErrorElement:<pattern> expected, got ','
            <empty list>
          PsiElement(,)(',')
          PsiWhiteSpace(' ')
          RsPatIdentImpl(PAT_IDENT)
            RsPatBindingImpl(PAT_BINDING)
              PsiElement(identifier)('c')
          PsiElement(])(']')
        PsiElement(;)(';')
      PsiWhiteSpace('\n')
      PsiElement(})('}')
