SHELL_SCRIPT
  PsiComment(Comment)('#error markers must be present, but the incomplete if should be parsed without remaining elements')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    IF_COMMAND
      PsiElement(if)('if')
      PsiErrorElement:<compound list> expected, got ';'
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      THEN_CLAUSE
        PsiElement(then)('then')
        PsiErrorElement:<compound list> expected, got ';'
          PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiElement(fi)('fi')
  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')
        PsiErrorElement:<compound list> expected, got ';'
          PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiElement(fi)('fi')
  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
          GENERIC_COMMAND_DIRECTIVE
            LITERAL
              PsiElement(word)('a')
          PsiElement(;)(';')
      PsiWhiteSpace(' ')
      ELSE_CLAUSE
        PsiElement(else)('else')
        PsiErrorElement:<compound list> expected, got ';'
          PsiElement(;)(';')
      PsiWhiteSpace(' ')
      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
    IF_COMMAND
      PsiElement(if)('if')
      PsiWhiteSpace(' ')
      COMPOUND_LIST
        GENERIC_COMMAND_DIRECTIVE
          LITERAL
            PsiElement(word)('a')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      THEN_CLAUSE
        PsiElement(then)('then')
        PsiErrorElement:<compound list> expected, got ';'
          PsiElement(;)(';')
      PsiWhiteSpace(' ')
      ELSE_CLAUSE
        PsiElement(else)('else')
        PsiErrorElement:<compound list> expected, got ';'
          PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiElement(fi)('fi')
  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')
        PsiErrorElement:<compound list> expected, got ';'
          PsiElement(;)(';')
      PsiWhiteSpace(' ')
      ELIF_CLAUSE
        PsiElement(elif)('elif')
        PsiErrorElement:<compound list> expected, got ';'
          PsiElement(;)(';')
        PsiWhiteSpace(' ')
        THEN_CLAUSE
          PsiElement(then)('then')
          PsiErrorElement:<compound list> expected, got ';'
            PsiElement(;)(';')
      PsiWhiteSpace(' ')
      ELSE_CLAUSE
        PsiElement(else)('else')
        PsiErrorElement:<compound list> expected, got ';'
          PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiElement(fi)('fi')
  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')
        PsiErrorElement:<compound list> expected, got ';'
          PsiElement(;)(';')
      PsiWhiteSpace(' ')
      ELIF_CLAUSE
        PsiElement(elif)('elif')
        PsiErrorElement:'then' unexpected
          <empty list>
        PsiWhiteSpace(' ')
        THEN_CLAUSE
          PsiElement(then)('then')
          PsiErrorElement:<compound list> expected, got ';'
            PsiElement(;)(';')
      PsiWhiteSpace(' ')
      ELSE_CLAUSE
        PsiElement(else)('else')
        PsiErrorElement:<compound list> expected, got ';'
          PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiElement(fi)('fi')
  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)('"')