SHELL_SCRIPT
  COMMANDS_LIST
    FOR_COMMAND
      PsiElement(for)('for')
      PsiWhiteSpace(' ')
      FOR_CLAUSE
        PsiElement(word)('a')
        PsiElement(;)(';')
        PsiElement(\n)('\n')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        PsiWhiteSpace(' ')
        COMPOUND_LIST
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('echo')
            PsiWhiteSpace(' ')
            LITERAL
              PsiElement(word)('a')
          PsiErrorElement:'&', ';' or '\n' expected, got '}'
            <empty list>
        PsiWhiteSpace(' ')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FOR_COMMAND
      PsiElement(for)('for')
      PsiWhiteSpace(' ')
      FOR_CLAUSE
        PsiElement(word)('i')
        PsiWhiteSpace(' ')
        PsiElement(in)('in')
        PsiWhiteSpace(' ')
        NUMBER
          PsiElement(int)('1')
        PsiWhiteSpace(' ')
        NUMBER
          PsiElement(int)('2')
        PsiWhiteSpace(' ')
        NUMBER
          PsiElement(int)('3')
        PsiWhiteSpace(' ')
        NUMBER
          PsiElement(int)('4')
        PsiWhiteSpace(' ')
        NUMBER
          PsiElement(int)('5')
        LIST_TERMINATOR
          PsiElement(\n)('\n')
      DO_BLOCK
        PsiElement(do)('do')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('   ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('echo')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement(STRING_CONTENT)('Welcome ')
              VARIABLE
                PsiElement(var)('$i')
              PsiElement(STRING_CONTENT)(' times')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
        PsiElement(done)('done')