SHELL_SCRIPT
  COMMANDS_LIST
    IF_COMMAND
      PsiElement(if)('if')
      PsiWhiteSpace(' ')
      COMPOUND_LIST
        TEST_COMMAND
          PsiElement(test)('test')
          PsiWhiteSpace(' ')
          STRING
            PsiElement(OPEN_QUOTE)('"')
            PsiElement(STRING_CONTENT)('X')
            VARIABLE
              PsiElement(var)('$1')
            PsiElement(CLOSE_QUOTE)('"')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      THEN_CLAUSE
        PsiElement(then)('then')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('cat')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              HEREDOC
                PsiElement(HEREDOC_MARKER_TAG)('<<')
                PsiElement(HEREDOC_MARKER_START)('XX')
                PsiElement(\n)('\n')
                PsiElement(HEREDOC_MARKER_END)('XX')
          PsiElement(\n)('\n')
          GENERIC_COMMAND_DIRECTIVE
            LITERAL
              PsiElement(word)('echo')
          PsiElement(\n)('\n')
      PsiElement(fi)('fi')