SHELL_SCRIPT
  PsiComment(Comment)('#code with errors')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    IF_COMMAND
      PsiElement(if)('if')
      PsiWhiteSpace(' ')
      COMPOUND_LIST
        GENERIC_COMMAND_DIRECTIVE
          LITERAL
            PsiElement(word)('a')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      THEN_CLAUSE
        PsiElement(then)('then')
        PsiWhiteSpace(' ')
        COMPOUND_LIST
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('b')
            PsiWhiteSpace(' ')
            LITERAL
              PsiElement(word)('c')
          PsiElement(;)(';')
      PsiWhiteSpace(' ')
      ELIF_CLAUSE
        PsiElement(elif)('elif')
        PsiWhiteSpace(' ')
        COMPOUND_LIST
          GENERIC_COMMAND_DIRECTIVE
            LITERAL
              PsiElement(word)('d')
          PsiElement(;)(';')
        PsiWhiteSpace(' ')
        THEN_CLAUSE
          PsiElement(then)('then')
          PsiWhiteSpace(' ')
          COMPOUND_LIST
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('e')
            PsiWhiteSpace(' ')
            PsiElement(&)('&')
            PsiErrorElement:<pipeline command> or '\n' expected, got ';'
              PsiElement(;)(';')
      ELSE_CLAUSE
        PsiElement(else)('else')
        PsiWhiteSpace(' ')
        COMPOUND_LIST
          GENERIC_COMMAND_DIRECTIVE
            LITERAL
              PsiElement(word)('c')
          PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiErrorElement:<redirection>, HEREDOC_MARKER_TAG or fi expected, got 'elif'
        PsiElement(elif)('elif')
  PsiWhiteSpace(' ')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('a')
    PsiElement(;)(';')
    PsiWhiteSpace(' ')
    PsiErrorElement:<pipeline command> expected, got 'then'
      PsiElement(then)('then')
  PsiWhiteSpace(' ')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('b')
    PsiElement(;)(';')
    PsiWhiteSpace(' ')
    PsiErrorElement:<pipeline command> expected, got 'else'
      PsiElement(else)('else')
  PsiWhiteSpace(' ')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('f')
    PsiElement(;)(';')
    PsiWhiteSpace(' ')
    PsiErrorElement:<pipeline command> expected, got 'fi'
      PsiElement(fi)('fi')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    IF_COMMAND
      PsiElement(if)('if')
      PsiWhiteSpace(' ')
      COMPOUND_LIST
        CONDITIONAL_COMMAND
          PsiElement([)('[')
          PsiWhiteSpace(' ')
          ASSIGNMENT_CONDITION
            LITERAL_CONDITION
              STRING
                PsiElement(OPEN_QUOTE)('"')
                PsiElement(STRING_CONTENT)('foo')
                PsiElement(CLOSE_QUOTE)('"')
            PsiWhiteSpace(' ')
            PsiElement(=)('=')
            PsiWhiteSpace(' ')
            LITERAL_CONDITION
              STRING
                PsiElement(OPEN_QUOTE)('"')
                PsiElement(STRING_CONTENT)('foo')
                PsiElement(CLOSE_QUOTE)('"')
          PsiWhiteSpace(' ')
          PsiElement(])(']')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      THEN_CLAUSE
        PsiElement(then)('then')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('echo')
            PsiWhiteSpace(' ')
            NUMBER
              PsiElement(int)('1')
          PsiElement(\n)('\n')
      PsiElement(fi)('fi')
    PsiElement(;)(';')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('echo')
      PsiWhiteSpace(' ')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('Example')
        PsiElement(CLOSE_QUOTE)('"')