SHELL_SCRIPT
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('a')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        PsiWhiteSpace(' ')
        COMPOUND_LIST
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              GENERIC_COMMAND_DIRECTIVE
                LITERAL
                  PsiElement(word)('k')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            THEN_CLAUSE
              PsiElement(then)('then')
              PsiWhiteSpace(' ')
              PsiErrorElement:<compound list> expected, got ';'
                PsiElement(;)(';')
              PsiWhiteSpace(' ')
              PsiElement(done)('done')
              PsiWhiteSpace(' ')
              PsiElement(})('}')
              PsiElement(\n)('\n')
              PsiElement(word)('echo')
              PsiWhiteSpace(' ')
              PsiElement(OPEN_QUOTE)('"')
              PsiElement(STRING_CONTENT)('abc')
              PsiElement(CLOSE_QUOTE)('"')
          PsiErrorElement:'&', ';' or '\n' expected
            <empty list>