SHELL_SCRIPT
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      LITERAL
        PsiElement(word)('echo')
    PsiWhiteSpace(' ')
    PsiElement(&&)('&&')
    PsiWhiteSpace(' ')
    CONDITIONAL_COMMAND
      PsiElement([)('[')
      PsiWhiteSpace(' ')
      LITERAL_CONDITION
        PsiElement(word)('-z')
      PsiWhiteSpace(' ')
      LITERAL_CONDITION
        STRING
          PsiElement(OPEN_QUOTE)('"')
          PsiElement(STRING_CONTENT)('hi')
          PsiElement(CLOSE_QUOTE)('"')
      PsiWhiteSpace(' ')
      PsiElement(])(']')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FOR_COMMAND
      PsiElement(for)('for')
      PsiWhiteSpace(' ')
      FOR_CLAUSE
        PsiElement(word)('f')
        PsiWhiteSpace(' ')
        PsiElement(in)('in')
        PsiWhiteSpace(' ')
        PsiElement(word)('a')
        LIST_TERMINATOR
          PsiElement(;)(';')
      PsiWhiteSpace(' ')
      DO_BLOCK
        PsiElement(do)('do')
        PsiWhiteSpace(' ')
        COMPOUND_LIST
          PIPELINE_COMMAND_LIST
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('echo')
            PsiWhiteSpace(' ')
            PsiElement(&&)('&&')
            PsiWhiteSpace(' ')
            CONDITIONAL_COMMAND
              PsiElement([)('[')
              PsiWhiteSpace(' ')
              LITERAL_CONDITION
                PsiElement(word)('-z')
              PsiWhiteSpace(' ')
              LITERAL_CONDITION
                STRING
                  PsiElement(OPEN_QUOTE)('"')
                  PsiElement(STRING_CONTENT)('hi')
                  PsiElement(CLOSE_QUOTE)('"')
              PsiWhiteSpace(' ')
              PsiElement(])(']')
          PsiElement(;)(';')
        PsiWhiteSpace(' ')
        PsiElement(done)('done')