SHELL_SCRIPT
  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)('b')
          PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiElement(fi)('fi')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    CONDITIONAL_COMMAND
      PsiElement([)('[')
      PsiWhiteSpace(' ')
      LITERAL_CONDITION
        PsiElement(word)('if')
      PsiWhiteSpace(' ')
      LITERAL_CONDITION
        PsiElement(word)('a')
      PsiErrorElement:'&&', <condition>, '\n', ']', ']]' or '||' expected, got ';'
        <empty list>
    PsiElement(;)(';')
    PsiWhiteSpace(' ')
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('then')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('b')
    PsiElement(;)(';')
    PsiWhiteSpace(' ')
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('fi')
      PsiWhiteSpace(' ')
      PsiErrorElement:'(', <assignment command> or <simple command element> expected, got ']'
        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')
        PsiWhiteSpace(' ')
        COMPOUND_LIST
          GENERIC_COMMAND_DIRECTIVE
            LITERAL
              PsiElement(word)('b')
          PsiElement(;)(';')
      PsiWhiteSpace(' ')
      PsiElement(fi)('fi')