SHELL_SCRIPT
  PsiComment(shebang)('#!/bin/bash')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('echo')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('for')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        OLD_ARITHMETIC_EXPANSION
          PsiElement(ARITH_SQUARE_LEFT)('$[')
          PsiWhiteSpace(' ')
          ADD_EXPRESSION
            LITERAL_EXPRESSION
              NUMBER
                PsiElement(hex)('0x888')
            PsiWhiteSpace(' ')
            PsiElement(-)('-')
            PsiWhiteSpace(' ')
            LITERAL_EXPRESSION
              NUMBER
                PsiElement(octal)('007')
          PsiWhiteSpace(' ')
          PsiElement(ARITH_SQUARE_RIGHT)(']')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('echo')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('for')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        OLD_ARITHMETIC_EXPANSION
          PsiElement(ARITH_SQUARE_LEFT)('$[')
          PsiWhiteSpace(' ')
          POST_EXPRESSION
            POST_EXPRESSION
              POST_EXPRESSION
                LITERAL_EXPRESSION
                  NUMBER
                    PsiElement(hex)('0x888')
                PsiWhiteSpace(' ')
                PsiElement(--)('--')
              PsiElement(--)('--')
            PsiElement(--)('--')
          PsiWhiteSpace(' ')
          PsiErrorElement:'007' unexpected
            PsiElement(octal)('007')
          PsiWhiteSpace(' ')
          PsiElement(ARITH_SQUARE_RIGHT)(']')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('0z999')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('s-fsf+')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FOR_COMMAND
      PsiElement(for)('for')
      PsiWhiteSpace(' ')
      FOR_CLAUSE
        PsiElement(()('(')
        PsiElement(()('(')
        PsiWhiteSpace(' ')
        ASSIGNMENT_EXPRESSION
          LITERAL_EXPRESSION
            PsiElement(word)('i')
          PsiWhiteSpace(' ')
          PsiElement(=)('=')
          PsiWhiteSpace(' ')
          LITERAL_EXPRESSION
            NUMBER
              PsiElement(int)('0')
        PsiElement(;)(';')
        PsiWhiteSpace(' ')
        COMPARISON_EXPRESSION
          LITERAL_EXPRESSION
            PsiElement(word)('i')
          PsiWhiteSpace(' ')
          PsiElement(<)('<')
          PsiWhiteSpace(' ')
          LITERAL_EXPRESSION
            NUMBER
              PsiElement(int)('5')
        PsiElement(;)(';')
        PsiWhiteSpace(' ')
        POST_EXPRESSION
          LITERAL_EXPRESSION
            PsiElement(word)('i')
          PsiElement(++)('++')
        PsiWhiteSpace(' ')
        PsiErrorElement:'av' unexpected
          PsiElement(word)('av')
        PsiWhiteSpace('  ')
        PsiElement())(')')
        PsiElement())(')')
        LIST_TERMINATOR
          PsiElement(;)(';')
      PsiWhiteSpace(' ')
      DO_BLOCK
        PsiElement(do)('do')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('echo')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement(STRING_CONTENT)('sdfs')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
        PsiElement(done)('done')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FOR_COMMAND
      PsiElement(for)('for')
      PsiWhiteSpace(' ')
      FOR_CLAUSE
        PsiElement(()('(')
        PsiElement(()('(')
        PsiWhiteSpace(' ')
        ASSIGNMENT_EXPRESSION
          LITERAL_EXPRESSION
            PsiElement(word)('i')
          PsiWhiteSpace(' ')
          PsiElement(=)('=')
          PsiWhiteSpace(' ')
          LITERAL_EXPRESSION
            NUMBER
              PsiElement(int)('0')
        PsiElement(;)(';')
        PsiWhiteSpace(' ')
        COMPARISON_EXPRESSION
          LITERAL_EXPRESSION
            PsiElement(word)('i')
          PsiWhiteSpace(' ')
          PsiElement(<)('<')
          PsiWhiteSpace(' ')
          LITERAL_EXPRESSION
            NUMBER
              PsiElement(int)('5')
        PsiElement(;)(';')
        PsiWhiteSpace(' ')
        POST_EXPRESSION
          LITERAL_EXPRESSION
            PsiElement(word)('i')
          PsiElement(++)('++')
        PsiWhiteSpace(' ')
        PsiElement())(')')
        PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiErrorElement:<list terminator> expected, got 'fo'
          PsiElement(word)('fo')
        PsiWhiteSpace('  ')
        PsiElement(;)(';')
      PsiWhiteSpace('   ')
      DO_BLOCK
        PsiElement(do)('do')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('echo')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement(STRING_CONTENT)('sdfs')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
        PsiElement(done)('done')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FOR_COMMAND
      PsiElement(for)('for')
      PsiWhiteSpace(' ')
      FOR_CLAUSE
        PsiElement(word)('i')
        PsiWhiteSpace(' ')
        PsiElement(in)('in')
        PsiWhiteSpace(' ')
        NUMBER
          PsiElement(int)('1')
        PsiWhiteSpace(' ')
        NUMBER
          PsiElement(int)('2')
        PsiWhiteSpace(' ')
        NUMBER
          PsiElement(int)('3')
        PsiWhiteSpace(' ')
        NUMBER
          PsiElement(int)('4')
        PsiErrorElement:'!', $, <list terminator>, <number>, <string>, ARITH_SQUARE_LEFT, OPEN_BACKQUOTE, file descriptor, var or '{' expected, got 'do'
          <empty list>
      PsiWhiteSpace('   ')
      DO_BLOCK
        PsiElement(do)('do')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('echo')
            PsiWhiteSpace(' ')
            VARIABLE
              PsiElement(var)('$i')
          PsiElement(\n)('\n')
        PsiElement(done)('done')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('foo')
      PsiElement(()('(')
      PsiErrorElement:')' expected, got 'f'
        <empty list>
      PsiWhiteSpace(' ')
      PsiElement(word)('f')
      PsiWhiteSpace(' ')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      PsiElement(word)('ff')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
        PsiErrorElement:<pipeline command> or '\n' expected, got '}'
          <empty list>
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SELECT_COMMAND
      PsiElement(select)('select')
      PsiWhiteSpace(' ')
      PsiElement(word)('a')
      PsiWhiteSpace(' ')
      PsiErrorElement:<list terminator> or in expected, got 'a'
        PsiElement(word)('a')
      PsiWhiteSpace(' ')
      PsiElement(in)('in')
      PsiWhiteSpace(' ')
      PsiElement(word)('1,2,4,5')
      PsiElement(;)(';')
      PsiWhiteSpace(' ')
      DO_BLOCK
        PsiElement(do)('do')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('echo')
            PsiWhiteSpace(' ')
            VARIABLE
              PsiElement(var)('$a')
          PsiElement(\n)('\n')
        PsiElement(done)('done')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SELECT_COMMAND
      PsiElement(select)('select')
      PsiWhiteSpace(' ')
      PsiElement(word)('a')
      PsiWhiteSpace(' ')
      PsiErrorElement:<list terminator> or in expected, got 'a'
        PsiElement(word)('a')
      PsiWhiteSpace(' ')
      PsiElement(in)('in')
      PsiWhiteSpace(' ')
      PsiElement(word)('1,2,4,5')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('echo')
            PsiWhiteSpace(' ')
            VARIABLE
              PsiElement(var)('$a')
          PsiElement(\n)('\n')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    CASE_COMMAND
      PsiElement(case)('case')
      PsiWhiteSpace(' ')
      VARIABLE
        PsiElement(var)('$x')
      PsiWhiteSpace(' ')
      PsiElement(word)('dvsdv')
      PsiWhiteSpace(' ')
      PsiElement(in)('in')
      PsiWhiteSpace(' ')
      CASE_CLAUSE
        PATTERN
          PsiElement(word)('fss')
          PsiErrorElement:'!', $, <number>, <string>, ARITH_SQUARE_LEFT, OPEN_BACKQUOTE, file descriptor, var, '{' or '|' expected
            PsiElement(\n)('\n')
          PsiElement(word)('pattern')
        PsiElement())(')')
        PsiElement(\n)('\n')
        PsiWhiteSpace('  ')
        COMPOUND_LIST
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('echo')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement(STRING_CONTENT)('text')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
      PsiWhiteSpace('  ')
      PsiElement(;;)(';;')
      PsiElement(\n)('\n')
      PsiElement(esac)('esac')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    CASE_COMMAND
      PsiElement(case)('case')
      PsiWhiteSpace(' ')
      VARIABLE
        PsiElement(var)('$x')
      PsiWhiteSpace(' ')
      PsiElement(word)('dvsdv')
      PsiWhiteSpace(' ')
      PsiElement(in)('in')
      PsiWhiteSpace(' ')
      CASE_CLAUSE
        PATTERN
          PsiElement(word)('fss')
          PsiErrorElement:'!', $, <number>, <string>, ARITH_SQUARE_LEFT, OPEN_BACKQUOTE, file descriptor, var, '{' or '|' expected
            PsiElement(\n)('\n')
          PsiElement(DUMMY_BLOCK)
            PsiElement(word)('pattern')
            PsiElement(\n)('\n')
            PsiWhiteSpace('  ')
            PsiElement(word)('echo')
            PsiWhiteSpace(' ')
            PsiElement(OPEN_QUOTE)('"')
            PsiElement(STRING_CONTENT)('text')
            PsiElement(CLOSE_QUOTE)('"')
            PsiElement(\n)('\n')
            PsiWhiteSpace('  ')
            PsiElement(word)(';;')
            PsiElement(\n)('\n')
            PsiElement(word)('pattern')
        PsiElement())(')')
        PsiElement(\n)('\n')
        PsiWhiteSpace('  ')
        COMPOUND_LIST
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('echo')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement(STRING_CONTENT)('text')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
      PsiWhiteSpace('  ')
      PsiElement(;;)(';;')
      PsiElement(\n)('\n')
      PsiElement(esac)('esac')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      REDIRECTION
        PsiElement(>)('>')
        PsiWhiteSpace(' ')
        PsiElement(word)('dddasd')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      REDIRECTION
        PsiElement(<)('<')
        PsiWhiteSpace(' ')
        PsiElement(word)('adasd')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        NUMBER
          PsiElement(int)('234')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('-')
    PsiElement(;)(';')
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('-')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiComment(Comment)('#asd >  >fsdf # todo: redirect recover')