SHELL_SCRIPT
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)(':')
        PsiElement(word)('offset')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)(':')
        PsiElement(word)('offset')
        PsiElement(param_separator)(':')
        PsiElement(word)('length')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)(':-')
        PsiElement(word)('word')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)(':=')
        PsiElement(word)('word')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)(':?')
        PsiElement(word)('word')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)(':+')
        PsiElement(word)('word')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)('@')
        PsiElement(word)('Q')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)('@')
        PsiElement(word)('E')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)('@')
        PsiElement(word)('P')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)('@')
        PsiElement(word)('A')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)('@')
        PsiElement(word)('a')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)('@')
        PsiElement(word)('@')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)('@')
        PsiElement(word)('*')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)('^')
        PsiElement(word)('pattern')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)('^^')
        PsiElement(word)('pattern')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)(',')
        PsiElement(word)('pattern')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)(',,')
        PsiElement(word)('pattern')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)('/')
        PsiElement(word)('pattern')
        PsiElement(param_separator)('/')
        PsiElement(word)('string')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)('%')
        PsiElement(word)('word')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)('%%')
        PsiElement(word)('word')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)('#')
        PsiElement(word)('word')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)('##')
        PsiElement(word)('word')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(param_separator)('#')
        PsiElement(word)('parameter')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(param_separator)('!')
        PsiElement(word)('name')
        ARRAY_EXPRESSION
          PsiElement([)('[')
          LITERAL_EXPRESSION
            PsiElement(word)('@')
          PsiElement(])(']')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(param_separator)('!')
        PsiElement(word)('name')
        ARRAY_EXPRESSION
          PsiElement([)('[')
          LITERAL_EXPRESSION
            PsiElement(word)('*')
          PsiElement(])(']')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(param_separator)('!')
        PsiElement(word)('prefix')
        PsiElement(param_separator)('*')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(param_separator)('!')
        PsiElement(word)('prefix')
        PsiElement(param_separator)('@')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        NUMBER
          PsiElement(int)('3')
        PsiElement(param_separator)(':+')
        PsiElement(word)(';')
        PsiWhiteSpace(' ')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('a')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('a')
        PsiElement(param_separator)(':')
        PsiElement(word)('a')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('a')
        PsiElement(param_separator)(':-')
        PsiElement(word)('a')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('a')
        PsiElement(param_separator)(':')
        PsiElement(word)('.')
        PsiElement(param_separator)('*')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('a')
        ARRAY_EXPRESSION
          PsiElement([)('[')
          LITERAL_EXPRESSION
            PsiElement(word)('@')
          PsiElement(])(']')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('a')
        ARRAY_EXPRESSION
          PsiElement([)('[')
          LITERAL_EXPRESSION
            PsiElement(word)('*')
          PsiElement(])(']')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('level')
        PsiElement(param_separator)('%%')
        PsiElement(word)('[a-zA-Z]*')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('a')
        ARRAY_EXPRESSION
          PsiElement([)('[')
          LITERAL_EXPRESSION
            PsiElement(word)('var')
          PsiElement(])(']')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('a')
        ARRAY_EXPRESSION
          PsiElement([)('[')
          LITERAL_EXPRESSION
            PsiElement(word)('var+var2')
          PsiElement(])(']')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('a')
        ARRAY_EXPRESSION
          PsiElement([)('[')
          LITERAL_EXPRESSION
            PsiElement(word)('var+var2+1')
          PsiElement(])(']')
        PsiElement(param_separator)('#')
        PsiElement(word)('[a-z][0]')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(param_separator)('#')
        PsiElement(word)('a[1]')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('a')
        PsiElement(param_separator)('-')
        COMMAND_SUBSTITUTION_COMMAND
          PsiElement(OPEN_BACKQUOTE)('`')
          COMPOUND_LIST
            GENERIC_COMMAND_DIRECTIVE
              OLD_ARITHMETIC_EXPANSION
                PsiElement(ARITH_SQUARE_LEFT)('$[')
                LITERAL_EXPRESSION
                  NUMBER
                    PsiElement(int)('1')
                PsiElement(ARITH_SQUARE_RIGHT)(']')
          PsiElement(CLOSE_BACKQUOTE)('`')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('\}')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    IF_COMMAND
      PsiElement(if)('if')
      PsiWhiteSpace(' ')
      COMPOUND_LIST
        CONDITIONAL_COMMAND
          PsiElement([[)('[[')
          PsiWhiteSpace(' ')
          LITERAL_CONDITION
            PsiElement(word)('-z')
          PsiWhiteSpace(' ')
          LITERAL_CONDITION
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement($)('$')
              SHELL_PARAMETER_EXPANSION
                PsiElement({)('{')
                PsiElement(word)('CONTENT')
                ARRAY_EXPRESSION
                  PsiElement([)('[')
                  LITERAL_EXPRESSION
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('index')
                      PsiElement(})('}')
                    PsiElement(word)('-')
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('index')
                      PsiElement(})('}')
                    PsiElement(word)('-')
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('index')
                      PsiElement(})('}')
                  PsiElement(])(']')
                PsiElement(param_separator)('-')
                PsiElement(})('}')
              PsiElement(CLOSE_QUOTE)('"')
          PsiWhiteSpace(' ')
          PsiElement(]])(']]')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      THEN_CLAUSE
        PsiElement(then)('then')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('echo')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement(STRING_CONTENT)('Example')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
      PsiElement(fi)('fi')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      ARITHMETIC_EXPANSION
        PsiElement(()('(')
        PsiElement(()('(')
        PsiWhiteSpace(' ')
        ADD_EXPRESSION
          LITERAL_EXPRESSION
            PsiElement($)('$')
            SHELL_PARAMETER_EXPANSION
              PsiElement({)('{')
              PsiElement(word)('param')
              PsiElement(})('}')
          PsiWhiteSpace(' ')
          PsiElement(+)('+')
          PsiWhiteSpace(' ')
          LITERAL_EXPRESSION
            NUMBER
              PsiElement(int)('1')
        PsiElement())(')')
        PsiElement())(')')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    ASSIGNMENT_COMMAND
      LITERAL
        PsiElement(word)('msg')
      PsiElement(=)('=')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('Entering ')
        VARIABLE
          PsiElement(var)('$funcname')
        PsiElement(STRING_CONTENT)('(')
        VARIABLE
          PsiElement(var)('$args')
        PsiElement(STRING_CONTENT)(')')
        PsiElement($)('$')
        SHELL_PARAMETER_EXPANSION
          PsiElement({)('{')
          PsiElement(word)('envstr')
          PsiElement(param_separator)(':+')
          PsiWhiteSpace(' ')
          PsiElement(word)('with')
          PsiWhiteSpace(' ')
          PsiElement(word)('environment')
          PsiWhiteSpace(' ')
          VARIABLE
            PsiElement(var)('$envstr')
          PsiElement($)('$')
          SHELL_PARAMETER_EXPANSION
            PsiElement({)('{')
            NUMBER
              PsiElement(int)('3')
            PsiElement(param_separator)(':+')
            PsiElement(word)(';')
            PsiWhiteSpace(' ')
            PsiElement(})('}')
          PsiElement(})('}')
        VARIABLE
          PsiElement(var)('$3')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    ASSIGNMENT_COMMAND
      LITERAL
        PsiElement(word)('NEW_USERNAME')
      PsiElement(=)('=')
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('NEW_USERNAME')
        PsiElement(param_separator)(':-')
        PsiElement(word)('builduser')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    ASSIGNMENT_COMMAND
      LITERAL
        PsiElement(word)('REPOSITORY')
      PsiElement(=)('=')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('https://repo.labs.intellij.net/cache/')
        PsiElement($)('$')
        SHELL_PARAMETER_EXPANSION
          PsiElement({)('{')
          PsiElement(word)('REPOSITORY')
          PsiElement(param_separator)('/')
          PsiElement(word)('https:\/')
          PsiElement(param_separator)('/')
          PsiElement(word)('https')
          PsiElement(})('}')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('local')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        ASSIGNMENT_COMMAND
          LITERAL
            PsiElement(word)('wait_seconds')
          PsiElement(=)('=')
          STRING
            PsiElement(OPEN_QUOTE)('"')
            PsiElement($)('$')
            SHELL_PARAMETER_EXPANSION
              PsiElement({)('{')
              NUMBER
                PsiElement(int)('2')
              PsiElement(param_separator)(':-')
              NUMBER
                PsiElement(int)('10')
              PsiElement(})('}')
            PsiElement(CLOSE_QUOTE)('"')
  PsiWhiteSpace(' ')
  PsiComment(Comment)('# 10 seconds as default timeout')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    ASSIGNMENT_COMMAND
      LITERAL
        PsiElement(word)('OLD_USERNAME')
      PsiElement(=)('=')
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('OLD_USERNAME')
        PsiElement(param_separator)(':-')
        PsiElement(word)('jetbrains')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    ASSIGNMENT_COMMAND
      LITERAL
        PsiElement(word)('DISTRIB_MAJOR')
      PsiElement(=)('=')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement($)('$')
        SHELL_PARAMETER_EXPANSION
          PsiElement({)('{')
          PsiElement(word)('DISTRIB_RELEASE')
          PsiElement(param_separator)('%')
          PsiElement(word)('.*')
          PsiElement(})('}')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('echo')
      PsiWhiteSpace(' ')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('export ')
        PsiElement($)('$')
        SHELL_PARAMETER_EXPANSION
          PsiElement({)('{')
          PsiElement(word)('NAME')
          PsiElement(param_separator)('^^')
          PsiElement(})('}')
        PsiElement(STRING_CONTENT)('_HOME=')
        VARIABLE
          PsiElement(var)('$DIR')
        PsiElement(CLOSE_QUOTE)('"')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        REDIRECTION
          PsiElement(>)('>')
          PsiElement(word)('/etc/profile.d/')
          VARIABLE
            PsiElement(var)('$NAME')
          PsiElement(word)('.sh')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    ASSIGNMENT_COMMAND
      LITERAL
        PsiElement(word)('HOMEBREW_PACKAGES')
      PsiElement(=)('=')
      ASSIGNMENT_LIST
        PsiElement(()('(')
        ARRAY_ASSIGNMENT
          LITERAL_OPERATION
            VARIABLE
              PsiElement(var)('$HOMEBREW_PACKAGES')
        PsiElement())(')')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FOR_COMMAND
      PsiElement(for)('for')
      PsiWhiteSpace(' ')
      FOR_CLAUSE
        PsiElement(word)('PKG')
        PsiWhiteSpace(' ')
        PsiElement(in)('in')
        PsiWhiteSpace(' ')
        PsiElement($)('$')
        SHELL_PARAMETER_EXPANSION
          PsiElement({)('{')
          PsiElement(word)('HOMEBREW_PACKAGES')
          ARRAY_EXPRESSION
            PsiElement([)('[')
            LITERAL_EXPRESSION
              PsiElement(word)('@')
            PsiElement(])(']')
          PsiElement(})('}')
        LIST_TERMINATOR
          PsiElement(\n)('\n')
      DO_BLOCK
        PsiElement(do)('do')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('\t')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('/usr/local/bin/brew')
            PsiWhiteSpace(' ')
            LITERAL
              PsiElement(word)('install')
            PsiWhiteSpace(' ')
            VARIABLE
              PsiElement(var)('$PKG')
          PsiElement(\n)('\n')
        PsiElement(done)('done')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('local')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        ASSIGNMENT_COMMAND
          LITERAL
            PsiElement(word)('URL')
          PsiElement(=)('=')
          STRING
            PsiElement(OPEN_QUOTE)('"')
            PsiElement($)('$')
            SHELL_PARAMETER_EXPANSION
              PsiElement({)('{')
              NUMBER
                PsiElement(int)('3')
              PsiElement(param_separator)(':-')
              PsiElement(word)('https')
              PsiElement(param_separator)(':')
              PsiElement(word)('/')
              PsiElement(param_separator)('/')
              PsiElement(word)('repo.labs.intellij.net')
              PsiElement(param_separator)('/')
              PsiElement(word)('download')
              PsiElement(param_separator)('/')
              PsiElement(word)('oracle')
              PsiElement(param_separator)('/')
              VARIABLE
                PsiElement(var)('$FILE')
              PsiElement(})('}')
            PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FOR_COMMAND
      PsiElement(for)('for')
      PsiWhiteSpace(' ')
      FOR_CLAUSE
        PsiElement(word)('component')
        PsiWhiteSpace(' ')
        PsiElement(in)('in')
        PsiWhiteSpace(' ')
        PsiElement($)('$')
        SHELL_PARAMETER_EXPANSION
          PsiElement({)('{')
          PsiElement(word)('distrs')
          ARRAY_EXPRESSION
            PsiElement([)('[')
            LITERAL_EXPRESSION
              PsiElement(word)('*')
            PsiElement(])(']')
          PsiElement(})('}')
        LIST_TERMINATOR
          PsiElement(\n)('\n')
      DO_BLOCK
        PsiElement(do)('do')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('wget')
            PsiWhiteSpace(' ')
            LITERAL
              PsiElement(word)('-nv')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement(STRING_CONTENT)('https://repo.labs.intellij.net/download/oracle/')
              PsiElement($)('$')
              SHELL_PARAMETER_EXPANSION
                PsiElement({)('{')
                PsiElement(word)('component')
                PsiElement(})('}')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
        PsiElement(done)('done')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    ASSIGNMENT_COMMAND
      LITERAL
        PsiElement(word)('ARGS')
      PsiElement(=)('=')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('--install /usr/bin/java java ')
        VARIABLE
          PsiElement(var)('$JAVA_HOME')
        PsiElement(STRING_CONTENT)('/bin/java 100')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FOR_COMMAND
      PsiElement(for)('for')
      PsiWhiteSpace(' ')
      FOR_CLAUSE
        PsiElement(word)('i')
        PsiWhiteSpace(' ')
        PsiElement(in)('in')
        PsiWhiteSpace(' ')
        STRING
          PsiElement(OPEN_QUOTE)('"')
          PsiElement($)('$')
          SHELL_PARAMETER_EXPANSION
            PsiElement({)('{')
            PsiElement(word)('commands')
            ARRAY_EXPRESSION
              PsiElement([)('[')
              LITERAL_EXPRESSION
                PsiElement(word)('@')
              PsiElement(])(']')
            PsiElement(})('}')
          PsiElement(CLOSE_QUOTE)('"')
        LIST_TERMINATOR
          PsiElement(;)(';')
      PsiWhiteSpace(' ')
      DO_BLOCK
        PsiElement(do)('do')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('  ')
          ASSIGNMENT_COMMAND
            LITERAL
              PsiElement(word)('ARGS')
            PsiElement(=)('=')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              VARIABLE
                PsiElement(var)('$ARGS')
              PsiElement(STRING_CONTENT)(' --slave /usr/bin/')
              VARIABLE
                PsiElement(var)('$i')
              PsiElement(STRING_CONTENT)(' ')
              VARIABLE
                PsiElement(var)('$i')
              PsiElement(STRING_CONTENT)(' ')
              VARIABLE
                PsiElement(var)('$JAVA_HOME')
              PsiElement(STRING_CONTENT)('/bin/')
              VARIABLE
                PsiElement(var)('$i')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
        PsiElement(done)('done')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    ASSIGNMENT_COMMAND
      LITERAL
        PsiElement(word)('JDK_VER')
      PsiElement(=)('=')
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('JDK_VER')
        PsiElement(param_separator)(':-')
        NUMBER
          PsiElement(int)('8')
        PsiElement(word)('.181')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    ASSIGNMENT_COMMAND
      LITERAL
        PsiElement(word)('DISTRIB_MAJOR')
      PsiElement(=)('=')
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('DISTRIB_RELEASE')
        PsiElement(param_separator)('%')
        PsiElement(word)('.*')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    ASSIGNMENT_COMMAND
      LITERAL
        PsiElement(word)('A')
      PsiElement(=)('=')
      ASSIGNMENT_LIST
        PsiElement(()('(')
        ARRAY_ASSIGNMENT
          LITERAL_OPERATION
            NUMBER
              PsiElement(int)('1')
            PsiWhiteSpace(' ')
            NUMBER
              PsiElement(int)('2')
            PsiWhiteSpace(' ')
            NUMBER
              PsiElement(int)('3')
        PsiWhiteSpace('  ')
        PsiElement())(')')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('echo')
      PsiWhiteSpace(' ')
      VARIABLE
        PsiElement(var)('$A')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('//')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('array')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('declare')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('-A')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        ASSIGNMENT_COMMAND
          LITERAL
            PsiElement(word)('SHA256MAP')
          PsiElement(=)('=')
          ASSIGNMENT_LIST
            PsiElement(()('(')
            PsiWhiteSpace(' \\n        ')
            ARRAY_ASSIGNMENT
              ASSIGNMENT_OPERATION
                ASSIGNMENT_OPERATION
                  ASSIGNMENT_OPERATION
                    ARRAY_OPERATION
                      PsiElement([)('[')
                      LITERAL_OPERATION
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement(STRING_CONTENT)('11')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(])(']')
                    PsiElement(=)('=')
                    INDEX_OPERATION
                      LITERAL_OPERATION
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement(STRING_CONTENT)('3784cfc4670f0d4c5482604c7c513beb1a92b005f569df9bf100e8bef6610f2e')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiWhiteSpace(' \\n        ')
                      PsiElement([)('[')
                      LITERAL_OPERATION
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement(STRING_CONTENT)('9.0.4')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(])(']')
                  PsiElement(=)('=')
                  INDEX_OPERATION
                    LITERAL_OPERATION
                      STRING
                        PsiElement(OPEN_QUOTE)('"')
                        PsiElement(STRING_CONTENT)('39362fb9bfb341fcc802e55e8ea59f4664ca58fd821ce956d48e1aa4fb3d2dec')
                        PsiElement(CLOSE_QUOTE)('"')
                    PsiWhiteSpace(' \\n        ')
                    PsiElement([)('[')
                    LITERAL_OPERATION
                      STRING
                        PsiElement(OPEN_QUOTE)('"')
                        PsiElement(STRING_CONTENT)('10')
                        PsiElement(CLOSE_QUOTE)('"')
                    PsiElement(])(']')
                PsiElement(=)('=')
                LITERAL_OPERATION
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    PsiElement(STRING_CONTENT)('c851df838a51af52517b74e3a4b251d90c54cf478a4ebed99e7285ef134c3435')
                    PsiElement(CLOSE_QUOTE)('"')
            PsiElement())(')')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('echo')
      PsiWhiteSpace(' ')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement($)('$')
        SHELL_PARAMETER_EXPANSION
          PsiElement({)('{')
          PsiElement(word)('SHA256MAP')
          ARRAY_EXPRESSION
            PsiElement([)('[')
            LITERAL_EXPRESSION
              VARIABLE
                PsiElement(var)('$VERSION')
            PsiElement(])(']')
          PsiElement(})('}')
        PsiElement(STRING_CONTENT)(' /tmp/')
        VARIABLE
          PsiElement(var)('$FILE')
        PsiElement(CLOSE_QUOTE)('"')
    PsiWhiteSpace(' ')
    PsiElement(|)('|')
    PsiWhiteSpace(' ')
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('sha256sum')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('-c')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('-')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('entry')
        PsiElement(param_separator)('%%')
        PsiElement(word)('[[]]*')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('entry')
        PsiElement(param_separator)('%%')
        PsiElement(word)('[[::]]*')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('entry')
        PsiElement(param_separator)('%%')
        PsiElement(word)('[[:space:]]*')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('addConf')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('reportDebugFuncEntry')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              VARIABLE
                PsiElement(var)('$*')
              PsiElement(CLOSE_QUOTE)('"')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement(STRING_CONTENT)('type name')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('typeset')
            PsiWhiteSpace(' ')
            LITERAL
              PsiElement(word)('entryFound')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('typeset')
            PsiWhiteSpace(' ')
            LITERAL
              PsiElement(word)('addConfEntry')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          ASSIGNMENT_COMMAND
            LITERAL
              PsiElement(word)('entry')
            PsiElement(=)('=')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              VARIABLE
                PsiElement(var)('$*')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          ASSIGNMENT_COMMAND
            LITERAL
              PsiElement(word)('addConfEntry')
            PsiElement(=)('=')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              VARIABLE
                PsiElement(var)('$entry')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          ASSIGNMENT_COMMAND
            LITERAL
              PsiElement(word)('type')
            PsiElement(=)('=')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement($)('$')
              SHELL_PARAMETER_EXPANSION
                PsiElement({)('{')
                PsiElement(word)('entry')
                PsiElement(param_separator)('%%')
                PsiElement(word)('[[:space:]]*')
                PsiElement(})('}')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          PsiComment(Comment)('# Check for name collision')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          ASSIGNMENT_COMMAND
            LITERAL
              PsiElement(word)('entryFound')
            PsiElement(=)('=')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement($)('$')
              SUBSHELL_COMMAND
                PsiElement(()('(')
                COMPOUND_LIST
                  PIPELINE_COMMAND_LIST
                    SIMPLE_COMMAND
                      GENERIC_COMMAND_DIRECTIVE
                        LITERAL
                          PsiElement(word)('grep')
                      PsiWhiteSpace(' ')
                      LITERAL
                        PsiElement(word)('-v')
                      PsiWhiteSpace(' ')
                      STRING
                        PsiElement(RAW_STRING)(''^#'')
                      PsiWhiteSpace(' ')
                      STRING
                        PsiElement(OPEN_QUOTE)('"')
                        VARIABLE
                          PsiElement(var)('$usrcff')
                        PsiElement(CLOSE_QUOTE)('"')
                    PsiWhiteSpace(' ')
                    PsiElement(|)('|')
                    PsiWhiteSpace(' ')
                    SIMPLE_COMMAND
                      GENERIC_COMMAND_DIRECTIVE
                        LITERAL
                          PsiElement(word)('grep')
                      PsiWhiteSpace(' ')
                      STRING
                        PsiElement(OPEN_QUOTE)('"')
                        PsiElement(STRING_CONTENT)(' ')
                        VARIABLE
                          PsiElement(var)('$name')
                        PsiElement(STRING_CONTENT)('(')
                        PsiElement(CLOSE_QUOTE)('"')
                PsiElement())(')')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([)('[')
                PsiWhiteSpace(' ')
                LITERAL_CONDITION
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    VARIABLE
                      PsiElement(var)('$entryFound')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiWhiteSpace(' ')
                PsiElement(])(']')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            THEN_CLAUSE
              PsiElement(then)('then')
              COMPOUND_LIST
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('reportError')
                  PsiWhiteSpace(' ')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    PsiElement(STRING_CONTENT)('An entry with name ')
                    VARIABLE
                      PsiElement(var)('$name')
                    PsiElement(STRING_CONTENT)(' is already present in ')
                    VARIABLE
                      PsiElement(var)('$usrcff')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('return')
                  PsiWhiteSpace(' ')
                  NUMBER
                    PsiElement(int)('1')
                PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          PsiComment(Comment)('# Check for addr collision, excluding services.')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([)('[')
                PsiWhiteSpace(' ')
                ASSIGNMENT_CONDITION
                  LITERAL_CONDITION
                    STRING
                      PsiElement(OPEN_QUOTE)('"')
                      VARIABLE
                        PsiElement(var)('$type')
                      PsiElement(CLOSE_QUOTE)('"')
                  PsiWhiteSpace(' ')
                  PsiElement(=)('=')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    STRING
                      PsiElement(OPEN_QUOTE)('"')
                      PsiElement(STRING_CONTENT)('host')
                      PsiElement(CLOSE_QUOTE)('"')
                PsiWhiteSpace(' ')
                LITERAL_CONDITION
                  PsiElement(word)('-o')
                PsiWhiteSpace(' ')
                ASSIGNMENT_CONDITION
                  LITERAL_CONDITION
                    STRING
                      PsiElement(OPEN_QUOTE)('"')
                      VARIABLE
                        PsiElement(var)('$type')
                      PsiElement(CLOSE_QUOTE)('"')
                  PsiWhiteSpace(' ')
                  PsiElement(=)('=')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    STRING
                      PsiElement(OPEN_QUOTE)('"')
                      PsiElement(STRING_CONTENT)('guest')
                      PsiElement(CLOSE_QUOTE)('"')
                PsiWhiteSpace(' ')
                PsiElement(])(']')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            THEN_CLAUSE
              PsiElement(then)('then')
              COMPOUND_LIST
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                ASSIGNMENT_COMMAND
                  LITERAL
                    PsiElement(word)('entryFound')
                  PsiElement(=)('=')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    PsiElement($)('$')
                    SUBSHELL_COMMAND
                      PsiElement(()('(')
                      COMPOUND_LIST
                        PIPELINE_COMMAND_LIST
                          SIMPLE_COMMAND
                            GENERIC_COMMAND_DIRECTIVE
                              LITERAL
                                PsiElement(word)('grep')
                            PsiWhiteSpace(' ')
                            LITERAL
                              PsiElement(word)('-v')
                            PsiWhiteSpace(' ')
                            STRING
                              PsiElement(RAW_STRING)(''^#'')
                            PsiWhiteSpace(' ')
                            STRING
                              PsiElement(OPEN_QUOTE)('"')
                              VARIABLE
                                PsiElement(var)('$usrcff')
                              PsiElement(CLOSE_QUOTE)('"')
                          PsiWhiteSpace(' ')
                          PsiElement(|)('|')
                          PsiWhiteSpace(' ')
                          SIMPLE_COMMAND
                            GENERIC_COMMAND_DIRECTIVE
                              LITERAL
                                PsiElement(word)('grep')
                            PsiWhiteSpace(' ')
                            LITERAL
                              PsiElement(word)('-v')
                            PsiWhiteSpace(' ')
                            STRING
                              PsiElement(RAW_STRING)(''^service'')
                          PsiWhiteSpace(' ')
                          PsiElement(|)('|')
                          PsiWhiteSpace(' ')
                          SIMPLE_COMMAND
                            GENERIC_COMMAND_DIRECTIVE
                              LITERAL
                                PsiElement(word)('grep')
                            PsiWhiteSpace(' ')
                            LITERAL
                              PsiElement(word)('-v')
                            PsiWhiteSpace(' ')
                            STRING
                              PsiElement(RAW_STRING)(''^group'')
                          PsiWhiteSpace(' ')
                          PsiElement(|)('|')
                          PsiWhiteSpace(' ')
                          SIMPLE_COMMAND
                            GENERIC_COMMAND_DIRECTIVE
                              LITERAL
                                PsiElement(word)('grep')
                            PsiWhiteSpace(' ')
                            STRING
                              PsiElement(OPEN_QUOTE)('"')
                              VARIABLE
                                PsiElement(var)('$addr')
                              PsiElement(CLOSE_QUOTE)('"')
                      PsiElement())(')')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                IF_COMMAND
                  PsiElement(if)('if')
                  PsiWhiteSpace(' ')
                  COMPOUND_LIST
                    CONDITIONAL_COMMAND
                      PsiElement([)('[')
                      PsiWhiteSpace(' ')
                      LITERAL_CONDITION
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          VARIABLE
                            PsiElement(var)('$entryFound')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiWhiteSpace(' ')
                      PsiElement(])(']')
                    PsiElement(;)(';')
                  PsiWhiteSpace(' ')
                  THEN_CLAUSE
                    PsiElement(then)('then')
                    COMPOUND_LIST
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('            ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('reportError')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement(STRING_CONTENT)('An entry with addr ')
                          VARIABLE
                            PsiElement(var)('$addr')
                          PsiElement(STRING_CONTENT)(' is already present in ')
                          VARIABLE
                            PsiElement(var)('$usrcff')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('            ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('return')
                        PsiWhiteSpace(' ')
                        NUMBER
                          PsiElement(int)('1')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('        ')
                  PsiElement(fi)('fi')
                PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          PsiComment(Comment)('# Add new entry.')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('printf')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              VARIABLE
                PsiElement(var)('$addConfEntry')
              PsiElement(STRING_CONTENT)('\n')
              PsiElement(CLOSE_QUOTE)('"')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              REDIRECTION
                PsiElement(>>)('>>')
                PsiWhiteSpace(' ')
                STRING
                  PsiElement(OPEN_QUOTE)('"')
                  VARIABLE
                    PsiElement(var)('$usrcff')
                  PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('reportInfo')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement(STRING_CONTENT)('Successfully added entry ')
              VARIABLE
                PsiElement(var)('$*')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('return')
            PsiWhiteSpace(' ')
            NUMBER
              PsiElement(int)('0')
          PsiElement(\n)('\n')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    ASSIGNMENT_COMMAND
      LITERAL
        PsiElement(word)('type')
      PsiElement(=)('=')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement($)('$')
        SHELL_PARAMETER_EXPANSION
          PsiElement({)('{')
          PsiElement(word)('entry')
          PsiElement(param_separator)('%')
          PsiElement(word)('[[:space:]]*')
          PsiElement(})('}')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)('-')
        PsiElement(word)('word')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)('=')
        PsiElement(word)('word')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)('?')
        PsiElement(word)('word')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)('+')
        PsiElement(word)('word')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(param_separator)('@')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    ASSIGNMENT_COMMAND
      LITERAL
        PsiElement(word)('line')
      PsiElement(=)('=')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement($)('$')
        SHELL_PARAMETER_EXPANSION
          PsiElement({)('{')
          PsiElement(word)('line')
          PsiElement(param_separator)('%')
          STRING
            PsiElement(RAW_STRING)('$'\r'')
          PsiElement(})('}')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    GENERIC_COMMAND_DIRECTIVE
      PsiElement($)('$')
      SHELL_PARAMETER_EXPANSION
        PsiElement({)('{')
        PsiElement(word)('parameter')
        PsiElement(param_separator)(':-')
        PsiElement(word)('abc')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    ASSIGNMENT_COMMAND
      LITERAL
        PsiElement(word)('line')
      PsiElement(=)('=')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement($)('$')
        SHELL_PARAMETER_EXPANSION
          PsiElement({)('{')
          PsiElement(word)('line')
          PsiElement(param_separator)('%')
          PsiElement(word)(''\r'')
          PsiElement(})('}')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    ASSIGNMENT_COMMAND
      LITERAL
        PsiElement(word)('line')
      PsiElement(=)('=')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement($)('$')
        SHELL_PARAMETER_EXPANSION
          PsiElement({)('{')
          PsiElement(word)('line')
          PsiElement(param_separator)('%')
          STRING
            PsiElement(RAW_STRING)('$'\r'')
          PsiElement(})('}')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    ASSIGNMENT_COMMAND
      LITERAL
        PsiElement(word)('line')
      PsiElement(=)('=')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement($)('$')
        SHELL_PARAMETER_EXPANSION
          PsiElement({)('{')
          PsiElement(word)('line')
          PsiElement(param_separator)('%')
          STRING
            PsiElement(OPEN_QUOTE)('"')
            PsiElement(STRING_CONTENT)('\r')
            PsiElement(CLOSE_QUOTE)('"')
          PsiElement(})('}')
        PsiElement(CLOSE_QUOTE)('"')