SHELL_SCRIPT
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(word)('a')
      PsiElement(()('(')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('   ')
          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')
          PsiWhiteSpace('   ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              GENERIC_COMMAND_DIRECTIVE
                LITERAL
                  PsiElement(word)('b')
              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')
        PsiElement(})('}')