SHELL_SCRIPT
  PsiComment(Comment)('#error markers must be present, but the incomplete if should be parsed without remaining elements')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SELECT_COMMAND
      PsiElement(select)('select')
      PsiWhiteSpace(' ')
      PsiElement(word)('f')
      PsiWhiteSpace(' ')
      PsiElement(in)('in')
      PsiWhiteSpace(' ')
      PsiElement(word)('a')
      LIST_TERMINATOR
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      DO_BLOCK
        PsiElement(do)('do')
        COMPOUND_LIST
          PsiErrorElement:<pipeline command> or '\n' expected, got ';'
            PsiElement(;)(';')
        PsiWhiteSpace(' ')
        PsiElement(done)('done')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SELECT_COMMAND
      PsiElement(select)('select')
      PsiWhiteSpace(' ')
      PsiElement(word)('FILENAME')
      PsiWhiteSpace(' ')
      PsiElement(in)('in')
      PsiWhiteSpace(' ')
      PsiElement(word)('*')
      LIST_TERMINATOR
        PsiElement(;)(';')
      PsiElement(\n)('\n')
      DO_BLOCK
        PsiElement(do)('do')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('  ')
          CASE_COMMAND
            PsiElement(case)('case')
            PsiWhiteSpace(' ')
            VARIABLE
              PsiElement(var)('$FILENAME')
            PsiWhiteSpace(' ')
            PsiElement(in)('in')
            CASE_CLAUSE
              PsiElement(\n)('\n')
              PsiWhiteSpace('        ')
              PATTERN
                STRING
                  PsiElement(OPEN_QUOTE)('"')
                  VARIABLE
                    PsiElement(var)('$QUIT')
                  PsiElement(CLOSE_QUOTE)('"')
              PsiElement())(')')
              PsiElement(\n)('\n')
              PsiWhiteSpace('          ')
              COMPOUND_LIST
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('echo')
                  PsiWhiteSpace(' ')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    PsiElement(STRING_CONTENT)('Exiting.')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
                PsiWhiteSpace('          ')
                GENERIC_COMMAND_DIRECTIVE
                  LITERAL
                    PsiElement(word)('break')
                PsiElement(\n)('\n')
            PsiWhiteSpace('          ')
            PsiElement(;;)(';;')
            CASE_CLAUSE
              PsiElement(\n)('\n')
              PsiWhiteSpace('        ')
              PATTERN
                PsiElement(word)('*')
              PsiElement())(')')
              PsiElement(\n)('\n')
              PsiWhiteSpace('          ')
              COMPOUND_LIST
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('echo')
                  PsiWhiteSpace(' ')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    PsiElement(STRING_CONTENT)('You picked ')
                    VARIABLE
                      PsiElement(var)('$FILENAME')
                    PsiElement(STRING_CONTENT)(' (')
                    VARIABLE
                      PsiElement(var)('$REPLY')
                    PsiElement(STRING_CONTENT)(')')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
            PsiWhiteSpace('          ')
            PsiElement(;;)(';;')
            PsiElement(\n)('\n')
            PsiWhiteSpace('  ')
            PsiElement(esac)('esac')
          PsiElement(\n)('\n')
        PsiElement(done)('done')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SELECT_COMMAND
      PsiElement(select)('select')
      PsiWhiteSpace(' ')
      PsiElement(word)('a')
      PsiWhiteSpace(' ')
      PsiElement(in)('in')
      PsiErrorElement:'!', $, <number>, <string>, ARITH_SQUARE_LEFT, OPEN_BACKQUOTE, file descriptor, var or '{' expected, got ';'
        <empty list>
      LIST_TERMINATOR
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      DO_BLOCK
        PsiElement(do)('do')
        PsiWhiteSpace(' ')
        COMPOUND_LIST
          GENERIC_COMMAND_DIRECTIVE
            LITERAL
              PsiElement(word)('echo')
          PsiElement(;)(';')
        PsiWhiteSpace(' ')
        PsiElement(done)('done')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('echo')
      PsiWhiteSpace(' ')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('Example text')
        PsiElement(CLOSE_QUOTE)('"')