SHELL_SCRIPT
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('a')
      PsiElement(()('(')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        PsiWhiteSpace(' ')
        COMPOUND_LIST
          FOR_COMMAND
            PsiElement(for)('for')
            PsiWhiteSpace(' ')
            FOR_CLAUSE
              PsiElement(word)('f')
              PsiWhiteSpace(' ')
              PsiElement(in)('in')
              PsiWhiteSpace(' ')
              NUMBER
                PsiElement(int)('1')
              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(;)(';')
        PsiWhiteSpace(' ')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('a')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        PsiWhiteSpace(' ')
        COMPOUND_LIST
          FOR_COMMAND
            PsiElement(for)('for')
            PsiWhiteSpace(' ')
            FOR_CLAUSE
              PsiElement(word)('f')
              PsiWhiteSpace(' ')
              PsiElement(in)('in')
              PsiWhiteSpace(' ')
              NUMBER
                PsiElement(int)('1')
              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(;)(';')
        PsiWhiteSpace(' ')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(word)('f')
      PsiElement(()('(')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        PsiWhiteSpace(' ')
        COMPOUND_LIST
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('export')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              ASSIGNMENT_COMMAND
                LITERAL
                  PsiElement(word)('a')
                PsiElement(=)('=')
                NUMBER
                  PsiElement(int)('1')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              ASSIGNMENT_COMMAND
                LITERAL
                  PsiElement(word)('b')
                PsiElement(=)('=')
                NUMBER
                  PsiElement(int)('2')
          PsiElement(;)(';')
        PsiWhiteSpace(' ')
        PsiElement(})('}')