SHELL_SCRIPT
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('echo')
      PsiWhiteSpace(' ')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)(') \\')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('echo')
      PsiWhiteSpace(' ')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('    ((r)->direct) ? \\')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('echo')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('-n')
      PsiWhiteSpace(' ')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('\tbus_')
        PsiElement($)('$')
        SHELL_PARAMETER_EXPANSION
          PsiElement({)('{')
          PsiElement(word)('n')
          PsiElement(})('}')
        PsiElement(STRING_CONTENT)('((r)->res')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('echo')
      PsiWhiteSpace(' ')
      STRING
        PsiElement(RAW_STRING)('$'\101\102\103\010'')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('echo')
      PsiWhiteSpace(' ')
      STRING
        PsiElement(RAW_STRING)('$'this is \'a single string\'\' it?'')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        STRING
          PsiElement(OPEN_QUOTE)('"')
          PsiElement(STRING_CONTENT)(''')
          PsiElement(CLOSE_QUOTE)('"')
      PsiWhiteSpace(' ')
      NUMBER
        PsiElement(int)('1234')
      PsiWhiteSpace(' ')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)(''')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(RAW_STRING)('' "its also not a double string" '')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('a$')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('abc')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        STRING
          PsiElement(OPEN_QUOTE)('"')
          PsiElement(STRING_CONTENT)('abc')
          PsiElement(CLOSE_QUOTE)('"')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('abc')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('\.')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('\n')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)(' ')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement($)('$')
        SUBSHELL_COMMAND
          PsiElement(()('(')
          PsiWhiteSpace(' ')
          COMPOUND_LIST
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('a')
          PsiWhiteSpace(' ')
          PsiElement())(')')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        VARIABLE
          PsiElement(var)('$a')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('a b\"')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('a')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('b')
      PsiWhiteSpace(' ')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('a b \"')
        PsiElement(CLOSE_QUOTE)('"')
      PsiWhiteSpace(' ')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('a')
        PsiElement(CLOSE_QUOTE)('"')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('b')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('a$')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement($)('$')
        SUBSHELL_COMMAND
          PsiElement(()('(')
          COMPOUND_LIST
            GENERIC_COMMAND_DIRECTIVE
              STRING
                PsiElement(OPEN_QUOTE)('"')
                PsiElement(STRING_CONTENT)('hey there')
                PsiElement(CLOSE_QUOTE)('"')
          PsiElement())(')')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement($)('$')
        SUBSHELL_COMMAND
          PsiElement(()('(')
          COMPOUND_LIST
            SIMPLE_COMMAND
              GENERIC_COMMAND_DIRECTIVE
                LITERAL
                  PsiElement(word)('echo')
              PsiWhiteSpace(' ')
              LITERAL
                PsiElement(word)('\"\"')
          PsiElement())(')')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        STRING
          PsiElement(OPEN_QUOTE)('"')
          PsiElement($)('$')
          SUBSHELL_COMMAND
            PsiElement(()('(')
            COMPOUND_LIST
              SIMPLE_COMMAND
                GENERIC_COMMAND_DIRECTIVE
                  LITERAL
                    PsiElement(word)('echo')
                PsiWhiteSpace(' ')
                LITERAL
                  PsiElement(word)('\"\"')
            PsiElement())(')')
          PsiElement(CLOSE_QUOTE)('"')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('a')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement($)('$')
        SUBSHELL_COMMAND
          PsiElement(()('(')
          COMPOUND_LIST
            PIPELINE_COMMAND_LIST
              GENERIC_COMMAND_DIRECTIVE
                LITERAL
                  PsiElement(word)('echo')
              PsiWhiteSpace(' ')
              PsiElement(||)('||')
              PsiWhiteSpace(' ')
              GENERIC_COMMAND_DIRECTIVE
                LITERAL
                  PsiElement(word)('echo')
          PsiElement())(')')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement($)('$')
        SUBSHELL_COMMAND
          PsiElement(()('(')
          COMPOUND_LIST
            PIPELINE_COMMAND_LIST
              GENERIC_COMMAND_DIRECTIVE
                LITERAL
                  PsiElement(word)('echo')
              PsiWhiteSpace(' ')
              PsiElement(&&)('&&')
              PsiWhiteSpace(' ')
              GENERIC_COMMAND_DIRECTIVE
                LITERAL
                  PsiElement(word)('echo')
          PsiElement())(')')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement($)('$')
        SUBSHELL_COMMAND
          PsiElement(()('(')
          COMPOUND_LIST
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('abc')
          PsiElement())(')')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement($)('$')
        SUBSHELL_COMMAND
          PsiElement(()('(')
          COMPOUND_LIST
            GENERIC_COMMAND_DIRECTIVE
              NUMBER
                PsiElement(int)('1')
          PsiElement())(')')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement($)('$')
        ARITHMETIC_EXPANSION
          PsiElement(()('(')
          PsiElement(()('(')
          LITERAL_EXPRESSION
            NUMBER
              PsiElement(int)('1')
          PsiElement())(')')
          PsiElement())(')')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('s/.*\(iphoneos(([0-9]|.)+)\).*/\1/')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  PsiComment(Comment)('# "$("s/(/")" #todo check s/(')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\.')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\>')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\<')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('||')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('&&')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  PsiComment(Comment)('#"$(&&)"  # todo: michail')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('a#%%')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('a#%%')
      SIMPLE_COMMAND_ELEMENT
        CONDITIONAL_COMMAND
          PsiElement([)('[')
          LITERAL_CONDITION
            PsiElement(word)('0-9')
          PsiElement(])(']')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('echo')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('level%%')
      SIMPLE_COMMAND_ELEMENT
        CONDITIONAL_COMMAND
          PsiElement([)('[')
          LITERAL_CONDITION
            PsiElement(word)('a-zA-Z')
          PsiElement(])(']')
      LITERAL
        PsiElement(word)('*')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    CONDITIONAL_COMMAND
      PsiElement([)('[')
      PsiWhiteSpace(' ')
      LITERAL_CONDITION
        PsiElement(word)('\$')
      LITERAL_CONDITION
        BRACE_EXPANSION
          PsiElement({)('{')
          PsiElement(word)('a')
          PsiElement(})('}')
      PsiWhiteSpace(' ')
      PsiElement(])(']')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    CONDITIONAL_COMMAND
      PsiElement([)('[')
      PsiWhiteSpace('  ')
      PsiElement(])(']')
  PsiElement(\n)('\n')
  PsiComment(Comment)('#[ ] # todo')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    CONDITIONAL_COMMAND
      PsiElement([[)('[[')
      PsiWhiteSpace(' ')
      LOGICAL_OR_CONDITION
        LITERAL_CONDITION
          PsiElement(word)('a')
        PsiWhiteSpace(' ')
        PsiElement(||)('||')
        PsiWhiteSpace(' ')
        LITERAL_CONDITION
          PsiElement(word)('b')
      PsiWhiteSpace(' ')
      PsiElement(]])(']]')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('rdev')
        PsiElement(param_separator)('%')
        PsiElement(word)(':*?')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(param_separator)('@')
        PsiElement(word)('!')
        PsiElement(param_separator)('-')
        PsiElement(word)('+')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('a')
        ARRAY_EXPRESSION
          PsiElement([)('[')
          LITERAL_EXPRESSION
            PsiElement(word)('@')
          PsiElement(])(']')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('\ ')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        PsiElement($)('$')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        PsiElement($)('$')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('abc')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(RAW_STRING)('$''')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(RAW_STRING)('$'abc'')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('(( ')
        VARIABLE
          PsiElement(var)('$1')
        PsiElement(STRING_CONTENT)(' ))')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('a\nb\nc')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('\n')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(RAW_STRING)(''a\nb\nc'')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      STRING
        PsiElement(RAW_STRING)(''\n'')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\*')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\\n\{')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\;')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\.')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\r')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\:')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\(')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\)')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\\')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\>')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\<')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\$')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\\n\?')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('\!')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('abc\\nabc')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('echo')
      PsiWhiteSpace(' ')
      STRING
        PsiElement(RAW_STRING)(''this is \'')
      LITERAL
        PsiElement(word)('a')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('s')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('isn\'t')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('it?')
      STRING
        PsiElement(RAW_STRING)(''')