SHELL_SCRIPT
  PsiComment(shebang)('#!/usr/bin/env bash')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiComment(Comment)('#')
  PsiElement(\n)('\n')
  PsiComment(Comment)('# Install JDK for Linux and Mac OS')
  PsiElement(\n)('\n')
  PsiComment(Comment)('#')
  PsiElement(\n)('\n')
  PsiComment(Comment)('# This script determines the most recent early-access build number,')
  PsiElement(\n)('\n')
  PsiComment(Comment)('# downloads the JDK archive to the user home directory and extracts')
  PsiElement(\n)('\n')
  PsiComment(Comment)('# it there.')
  PsiElement(\n)('\n')
  PsiComment(Comment)('#')
  PsiElement(\n)('\n')
  PsiComment(Comment)('# Exported environment variables (when sourcing this script)')
  PsiElement(\n)('\n')
  PsiComment(Comment)('#')
  PsiElement(\n)('\n')
  PsiComment(Comment)('#   JAVA_HOME is set to the extracted JDK directory')
  PsiElement(\n)('\n')
  PsiComment(Comment)('#   PATH is prepended with ${JAVA_HOME}/bin')
  PsiElement(\n)('\n')
  PsiComment(Comment)('#')
  PsiElement(\n)('\n')
  PsiComment(Comment)('# (C) 2019 Christian Stein')
  PsiElement(\n)('\n')
  PsiComment(Comment)('#')
  PsiElement(\n)('\n')
  PsiComment(Comment)('# https://github.com/sormuras/bach/blob/master/install-jdk.sh')
  PsiElement(\n)('\n')
  PsiComment(Comment)('#')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('set')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('-o')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('errexit')
  PsiElement(\n)('\n')
  PsiComment(Comment)('#set -o nounset # https://github.com/travis-ci/travis-ci/issues/5434')
  PsiElement(\n)('\n')
  PsiComment(Comment)('#set -o xtrace')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('initialize')
      PsiElement(()('(')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('readonly')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              ASSIGNMENT_COMMAND
                LITERAL
                  PsiElement(word)('script_name')
                PsiElement(=)('=')
                STRING
                  PsiElement(OPEN_QUOTE)('"')
                  PsiElement($)('$')
                  SUBSHELL_COMMAND
                    PsiElement(()('(')
                    COMPOUND_LIST
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('basename')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('BASH_SOURCE')
                            ARRAY_EXPRESSION
                              PsiElement([)('[')
                              LITERAL_EXPRESSION
                                NUMBER
                                  PsiElement(int)('0')
                              PsiElement(])(']')
                            PsiElement(})('}')
                          PsiElement(CLOSE_QUOTE)('"')
                    PsiElement())(')')
                  PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('readonly')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              ASSIGNMENT_COMMAND
                LITERAL
                  PsiElement(word)('script_version')
                PsiElement(=)('=')
                STRING
                  PsiElement(RAW_STRING)(''2019-10-16'')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          ASSIGNMENT_COMMAND
            LITERAL
              PsiElement(word)('dry')
            PsiElement(=)('=')
            LITERAL
              PsiElement(word)('false')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          ASSIGNMENT_COMMAND
            LITERAL
              PsiElement(word)('silent')
            PsiElement(=)('=')
            LITERAL
              PsiElement(word)('false')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          ASSIGNMENT_COMMAND
            LITERAL
              PsiElement(word)('verbose')
            PsiElement(=)('=')
            LITERAL
              PsiElement(word)('false')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          ASSIGNMENT_COMMAND
            LITERAL
              PsiElement(word)('emit_java_home')
            PsiElement(=)('=')
            LITERAL
              PsiElement(word)('false')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          ASSIGNMENT_COMMAND
            LITERAL
              PsiElement(word)('feature')
            PsiElement(=)('=')
            STRING
              PsiElement(RAW_STRING)(''ea'')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          ASSIGNMENT_COMMAND
            LITERAL
              PsiElement(word)('license')
            PsiElement(=)('=')
            STRING
              PsiElement(RAW_STRING)(''GPL'')
          PsiWhiteSpace(' ')
          PsiComment(Comment)('# Force GPLv2+CE')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          ASSIGNMENT_COMMAND
            LITERAL
              PsiElement(word)('os')
            PsiElement(=)('=')
            STRING
              PsiElement(RAW_STRING)(''?'')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          ASSIGNMENT_COMMAND
            LITERAL
              PsiElement(word)('url')
            PsiElement(=)('=')
            STRING
              PsiElement(RAW_STRING)(''?'')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          ASSIGNMENT_COMMAND
            LITERAL
              PsiElement(word)('workspace')
            PsiElement(=)('=')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement($)('$')
              SHELL_PARAMETER_EXPANSION
                PsiElement({)('{')
                PsiElement(word)('HOME')
                PsiElement(})('}')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          ASSIGNMENT_COMMAND
            LITERAL
              PsiElement(word)('target')
            PsiElement(=)('=')
            STRING
              PsiElement(RAW_STRING)(''?'')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          ASSIGNMENT_COMMAND
            LITERAL
              PsiElement(word)('cacerts')
            PsiElement(=)('=')
            LITERAL
              PsiElement(word)('false')
          PsiElement(\n)('\n')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('usage')
      PsiElement(()('(')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('cat')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              HEREDOC
                PsiElement(HEREDOC_MARKER_TAG)('<<')
                PsiWhiteSpace(' ')
                PsiElement(HEREDOC_MARKER_START)('EOF')
                PsiElement(\n)('\n')
                PsiElement(HEREDOC_CONTENT)('Usage: ${script_name} [OPTION]...\nDownload and extract latest-and-greatest JDK from https://jdk.java.net\nVersion: ${script_version}\nOptions:\n  -h|--help                 Displays this help\n  -d|--dry-run              Activates dry-run mode\n  -s|--silent               Displays no output\n  -e|--emit-java-home       Print value of "JAVA_HOME" to stdout (ignores silent mode)\n  -v|--verbose              Displays verbose output\n  -f|--feature 11|12|...|ea JDK feature release number, defaults to "ea"\n  -o|--os linux-x64|osx-x64 Operating system identifier\n  -u|--url "https://..."    Use custom JDK archive (provided as .tar.gz file)\n  -w|--workspace PATH       Working directory defaults to \${HOME} [${HOME}]\n  -t|--target PATH          Target directory, defaults to first component of the tarball\n  -c|--cacerts              Link system CA certificates (currently only Debian/Ubuntu is supported)\n')
                PsiElement(HEREDOC_MARKER_END)('EOF')
          PsiElement(\n)('\n')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('script_exit')
      PsiElement(()('(')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([[)('[[')
                PsiWhiteSpace(' ')
                LITERAL_CONDITION
                  VARIABLE
                    PsiElement(var)('$#')
                PsiWhiteSpace(' ')
                LITERAL_CONDITION
                  PsiElement(word)('-eq')
                PsiWhiteSpace(' ')
                LITERAL_CONDITION
                  NUMBER
                    PsiElement(int)('1')
                PsiWhiteSpace(' ')
                PsiElement(]])(']]')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            THEN_CLAUSE
              PsiElement(then)('then')
              COMPOUND_LIST
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('printf')
                  PsiWhiteSpace(' ')
                  STRING
                    PsiElement(RAW_STRING)(''%s\n'')
                  PsiWhiteSpace(' ')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    VARIABLE
                      PsiElement(var)('$1')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('exit')
                  PsiWhiteSpace(' ')
                  NUMBER
                    PsiElement(int)('0')
                PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([[)('[[')
                PsiWhiteSpace(' ')
                LITERAL_CONDITION
                  VARIABLE
                    PsiElement(var)('$#')
                PsiWhiteSpace(' ')
                LITERAL_CONDITION
                  PsiElement(word)('-eq')
                PsiWhiteSpace(' ')
                LOGICAL_AND_CONDITION
                  LITERAL_CONDITION
                    NUMBER
                      PsiElement(int)('2')
                  PsiWhiteSpace(' ')
                  PsiElement(&&)('&&')
                  PsiWhiteSpace(' ')
                  REGEX_CONDITION
                    LITERAL_CONDITION
                      VARIABLE
                        PsiElement(var)('$2')
                    PsiWhiteSpace(' ')
                    PsiElement(=~)('=~')
                    PsiWhiteSpace(' ')
                    REGEX_PATTERN
                      PsiElement(word)('^[0-9]+$')
                PsiWhiteSpace(' ')
                PsiElement(]])(']]')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            THEN_CLAUSE
              PsiElement(then)('then')
              COMPOUND_LIST
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('printf')
                  PsiWhiteSpace(' ')
                  STRING
                    PsiElement(RAW_STRING)(''%b\n'')
                  PsiWhiteSpace(' ')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    VARIABLE
                      PsiElement(var)('$1')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('exit')
                  PsiWhiteSpace(' ')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    VARIABLE
                      PsiElement(var)('$2')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('script_exit')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(RAW_STRING)(''Invalid arguments passed to script_exit()!'')
            PsiWhiteSpace(' ')
            NUMBER
              PsiElement(int)('2')
          PsiElement(\n)('\n')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('say')
      PsiElement(()('(')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([[)('[[')
                PsiWhiteSpace(' ')
                EQUALITY_CONDITION
                  LITERAL_CONDITION
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('silent')
                      PsiElement(})('}')
                  PsiWhiteSpace(' ')
                  PsiElement(!=)('!=')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    PsiElement(word)('true')
                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)('"')
                    VARIABLE
                      PsiElement(var)('$@')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('verbose')
      PsiElement(()('(')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([[)('[[')
                PsiWhiteSpace(' ')
                EQUALITY_CONDITION
                  LITERAL_CONDITION
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('verbose')
                      PsiElement(})('}')
                  PsiWhiteSpace(' ')
                  PsiElement(==)('==')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    PsiElement(word)('true')
                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)('"')
                    VARIABLE
                      PsiElement(var)('$@')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('parse_options')
      PsiElement(()('(')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('local')
            PsiWhiteSpace(' ')
            LITERAL
              PsiElement(word)('option')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          WHILE_COMMAND
            PsiElement(while)('while')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([[)('[[')
                PsiWhiteSpace(' ')
                LITERAL_CONDITION
                  VARIABLE
                    PsiElement(var)('$#')
                PsiWhiteSpace(' ')
                LITERAL_CONDITION
                  PsiElement(word)('-gt')
                PsiWhiteSpace(' ')
                LITERAL_CONDITION
                  NUMBER
                    PsiElement(int)('0')
                PsiWhiteSpace(' ')
                PsiElement(]])(']]')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            DO_BLOCK
              PsiElement(do)('do')
              COMPOUND_LIST
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                ASSIGNMENT_COMMAND
                  LITERAL
                    PsiElement(word)('option')
                  PsiElement(=)('=')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    VARIABLE
                      PsiElement(var)('$1')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                GENERIC_COMMAND_DIRECTIVE
                  LITERAL
                    PsiElement(word)('shift')
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                CASE_COMMAND
                  PsiElement(case)('case')
                  PsiWhiteSpace(' ')
                  PsiElement($)('$')
                  SHELL_PARAMETER_EXPANSION
                    PsiElement({)('{')
                    PsiElement(word)('option')
                    PsiElement(})('}')
                  PsiWhiteSpace(' ')
                  PsiElement(in)('in')
                  CASE_CLAUSE
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('            ')
                    PATTERN
                      PsiElement(word)('-h')
                      PsiElement(|)('|')
                      PsiElement(word)('-H')
                      PsiElement(|)('|')
                      PsiElement(word)('--help')
                    PsiElement())(')')
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('                ')
                    COMPOUND_LIST
                      GENERIC_COMMAND_DIRECTIVE
                        LITERAL
                          PsiElement(word)('usage')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('                ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('exit')
                        PsiWhiteSpace(' ')
                        NUMBER
                          PsiElement(int)('0')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('                ')
                  PsiElement(;;)(';;')
                  CASE_CLAUSE
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('            ')
                    PATTERN
                      PsiElement(word)('-v')
                      PsiElement(|)('|')
                      PsiElement(word)('-V')
                      PsiElement(|)('|')
                      PsiElement(word)('--verbose')
                    PsiElement())(')')
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('                ')
                    COMPOUND_LIST
                      ASSIGNMENT_COMMAND
                        LITERAL
                          PsiElement(word)('verbose')
                        PsiElement(=)('=')
                        LITERAL
                          PsiElement(word)('true')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('                ')
                  PsiElement(;;)(';;')
                  CASE_CLAUSE
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('            ')
                    PATTERN
                      PsiElement(word)('-s')
                      PsiElement(|)('|')
                      PsiElement(word)('-S')
                      PsiElement(|)('|')
                      PsiElement(word)('--silent')
                    PsiElement())(')')
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('                ')
                    COMPOUND_LIST
                      ASSIGNMENT_COMMAND
                        LITERAL
                          PsiElement(word)('silent')
                        PsiElement(=)('=')
                        LITERAL
                          PsiElement(word)('true')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('                ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('verbose')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement(STRING_CONTENT)('Silent mode activated')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('                ')
                  PsiElement(;;)(';;')
                  CASE_CLAUSE
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('            ')
                    PATTERN
                      PsiElement(word)('-d')
                      PsiElement(|)('|')
                      PsiElement(word)('-D')
                      PsiElement(|)('|')
                      PsiElement(word)('--dry-run')
                    PsiElement())(')')
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('                ')
                    COMPOUND_LIST
                      ASSIGNMENT_COMMAND
                        LITERAL
                          PsiElement(word)('dry')
                        PsiElement(=)('=')
                        LITERAL
                          PsiElement(word)('true')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('                ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('verbose')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement(STRING_CONTENT)('Dry-run mode activated')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('                ')
                  PsiElement(;;)(';;')
                  CASE_CLAUSE
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('            ')
                    PATTERN
                      PsiElement(word)('-e')
                      PsiElement(|)('|')
                      PsiElement(word)('-E')
                      PsiElement(|)('|')
                      PsiElement(word)('--emit-java-home')
                    PsiElement())(')')
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('                ')
                    COMPOUND_LIST
                      ASSIGNMENT_COMMAND
                        LITERAL
                          PsiElement(word)('emit_java_home')
                        PsiElement(=)('=')
                        LITERAL
                          PsiElement(word)('true')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('                ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('verbose')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement(STRING_CONTENT)('Emitting JAVA_HOME')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('                ')
                  PsiElement(;;)(';;')
                  CASE_CLAUSE
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('            ')
                    PATTERN
                      PsiElement(word)('-f')
                      PsiElement(|)('|')
                      PsiElement(word)('-F')
                      PsiElement(|)('|')
                      PsiElement(word)('--feature')
                    PsiElement())(')')
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('                ')
                    COMPOUND_LIST
                      ASSIGNMENT_COMMAND
                        LITERAL
                          PsiElement(word)('feature')
                        PsiElement(=)('=')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          VARIABLE
                            PsiElement(var)('$1')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('                ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('verbose')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement(STRING_CONTENT)('feature=')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('feature')
                            PsiElement(})('}')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('                ')
                      GENERIC_COMMAND_DIRECTIVE
                        LITERAL
                          PsiElement(word)('shift')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('                ')
                  PsiElement(;;)(';;')
                  CASE_CLAUSE
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('            ')
                    PATTERN
                      PsiElement(word)('-l')
                      PsiElement(|)('|')
                      PsiElement(word)('-L')
                      PsiElement(|)('|')
                      PsiElement(word)('--license')
                    PsiElement())(')')
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('                ')
                    PsiComment(Comment)('# license="$1"')
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('                ')
                    COMPOUND_LIST
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('say')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement(STRING_CONTENT)('Ignoring license option: ')
                          VARIABLE
                            PsiElement(var)('$1')
                          PsiElement(STRING_CONTENT)(' -- using GPLv2+CE by default')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('                ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('verbose')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement(STRING_CONTENT)('license=')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('license')
                            PsiElement(})('}')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('                ')
                      GENERIC_COMMAND_DIRECTIVE
                        LITERAL
                          PsiElement(word)('shift')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('                ')
                  PsiElement(;;)(';;')
                  CASE_CLAUSE
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('            ')
                    PATTERN
                      PsiElement(word)('-o')
                      PsiElement(|)('|')
                      PsiElement(word)('-O')
                      PsiElement(|)('|')
                      PsiElement(word)('--os')
                    PsiElement())(')')
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('                ')
                    COMPOUND_LIST
                      ASSIGNMENT_COMMAND
                        LITERAL
                          PsiElement(word)('os')
                        PsiElement(=)('=')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          VARIABLE
                            PsiElement(var)('$1')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('                ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('verbose')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement(STRING_CONTENT)('os=')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('os')
                            PsiElement(})('}')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('                ')
                      GENERIC_COMMAND_DIRECTIVE
                        LITERAL
                          PsiElement(word)('shift')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('                ')
                  PsiElement(;;)(';;')
                  CASE_CLAUSE
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('            ')
                    PATTERN
                      PsiElement(word)('-u')
                      PsiElement(|)('|')
                      PsiElement(word)('-U')
                      PsiElement(|)('|')
                      PsiElement(word)('--url')
                    PsiElement())(')')
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('                ')
                    COMPOUND_LIST
                      ASSIGNMENT_COMMAND
                        LITERAL
                          PsiElement(word)('url')
                        PsiElement(=)('=')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          VARIABLE
                            PsiElement(var)('$1')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('                ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('verbose')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement(STRING_CONTENT)('url=')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('url')
                            PsiElement(})('}')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('                ')
                      GENERIC_COMMAND_DIRECTIVE
                        LITERAL
                          PsiElement(word)('shift')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('                ')
                  PsiElement(;;)(';;')
                  CASE_CLAUSE
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('            ')
                    PATTERN
                      PsiElement(word)('-w')
                      PsiElement(|)('|')
                      PsiElement(word)('-W')
                      PsiElement(|)('|')
                      PsiElement(word)('--workspace')
                    PsiElement())(')')
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('                ')
                    COMPOUND_LIST
                      ASSIGNMENT_COMMAND
                        LITERAL
                          PsiElement(word)('workspace')
                        PsiElement(=)('=')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          VARIABLE
                            PsiElement(var)('$1')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('                ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('verbose')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement(STRING_CONTENT)('workspace=')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('workspace')
                            PsiElement(})('}')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('                ')
                      GENERIC_COMMAND_DIRECTIVE
                        LITERAL
                          PsiElement(word)('shift')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('                ')
                  PsiElement(;;)(';;')
                  CASE_CLAUSE
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('            ')
                    PATTERN
                      PsiElement(word)('-t')
                      PsiElement(|)('|')
                      PsiElement(word)('-T')
                      PsiElement(|)('|')
                      PsiElement(word)('--target')
                    PsiElement())(')')
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('                ')
                    COMPOUND_LIST
                      ASSIGNMENT_COMMAND
                        LITERAL
                          PsiElement(word)('target')
                        PsiElement(=)('=')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          VARIABLE
                            PsiElement(var)('$1')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('                ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('verbose')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement(STRING_CONTENT)('target=')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('target')
                            PsiElement(})('}')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('                ')
                      GENERIC_COMMAND_DIRECTIVE
                        LITERAL
                          PsiElement(word)('shift')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('                ')
                  PsiElement(;;)(';;')
                  CASE_CLAUSE
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('            ')
                    PATTERN
                      PsiElement(word)('-c')
                      PsiElement(|)('|')
                      PsiElement(word)('-C')
                      PsiElement(|)('|')
                      PsiElement(word)('--cacerts')
                    PsiElement())(')')
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('                ')
                    COMPOUND_LIST
                      ASSIGNMENT_COMMAND
                        LITERAL
                          PsiElement(word)('cacerts')
                        PsiElement(=)('=')
                        LITERAL
                          PsiElement(word)('true')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('                ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('verbose')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement(STRING_CONTENT)('Linking system CA certificates')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('                ')
                  PsiElement(;;)(';;')
                  CASE_CLAUSE
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('            ')
                    PATTERN
                      PsiElement(word)('*')
                    PsiElement())(')')
                    PsiElement(\n)('\n')
                    PsiWhiteSpace('                ')
                    COMPOUND_LIST
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('script_exit')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement(STRING_CONTENT)('Invalid argument was provided: ')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('option')
                            PsiElement(})('}')
                          PsiElement(CLOSE_QUOTE)('"')
                        PsiWhiteSpace(' ')
                        NUMBER
                          PsiElement(int)('2')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('                ')
                  PsiElement(;;)(';;')
                  PsiElement(\n)('\n')
                  PsiWhiteSpace('        ')
                  PsiElement(esac)('esac')
                PsiElement(\n)('\n')
              PsiWhiteSpace('    ')
              PsiElement(done)('done')
          PsiElement(\n)('\n')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('determine_latest_jdk')
      PsiElement(()('(')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('local')
            PsiWhiteSpace(' ')
            LITERAL
              PsiElement(word)('number')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('local')
            PsiWhiteSpace(' ')
            LITERAL
              PsiElement(word)('curl_result')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('local')
            PsiWhiteSpace(' ')
            LITERAL
              PsiElement(word)('url')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          ASSIGNMENT_COMMAND
            LITERAL
              PsiElement(word)('number')
            PsiElement(=)('=')
            NUMBER
              PsiElement(int)('14')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('verbose')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement(STRING_CONTENT)('Determine latest JDK feature release number, starting with ')
              PsiElement($)('$')
              SHELL_PARAMETER_EXPANSION
                PsiElement({)('{')
                PsiElement(word)('number')
                PsiElement(})('}')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          WHILE_COMMAND
            PsiElement(while)('while')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([[)('[[')
                PsiWhiteSpace(' ')
                EQUALITY_CONDITION
                  LITERAL_CONDITION
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('number')
                      PsiElement(})('}')
                  PsiWhiteSpace(' ')
                  PsiElement(!=)('!=')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    NUMBER
                      PsiElement(int)('99')
                PsiWhiteSpace(' ')
                PsiElement(]])(']]')
              PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            DO_BLOCK
              PsiElement(do)('do')
              COMPOUND_LIST
                PsiElement(\n)('\n')
                PsiWhiteSpace('      ')
                ASSIGNMENT_COMMAND
                  LITERAL
                    PsiElement(word)('url')
                  PsiElement(=)('=')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    PsiElement(STRING_CONTENT)('https://jdk.java.net/')
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('number')
                      PsiElement(})('}')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
                PsiWhiteSpace('      ')
                ASSIGNMENT_COMMAND
                  LITERAL
                    PsiElement(word)('curl_result')
                  PsiElement(=)('=')
                  PsiElement($)('$')
                  SUBSHELL_COMMAND
                    PsiElement(()('(')
                    COMPOUND_LIST
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('curl')
                        PsiWhiteSpace(' ')
                        LITERAL
                          PsiElement(word)('-o')
                        PsiWhiteSpace(' ')
                        LITERAL
                          PsiElement(word)('/dev/null')
                        PsiWhiteSpace(' ')
                        LITERAL
                          PsiElement(word)('--silent')
                        PsiWhiteSpace(' ')
                        LITERAL
                          PsiElement(word)('--head')
                        PsiWhiteSpace(' ')
                        LITERAL
                          PsiElement(word)('--write-out')
                        PsiWhiteSpace(' ')
                        LITERAL
                          PsiElement(word)('%')
                        SIMPLE_COMMAND_ELEMENT
                          BRACE_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('http_code')
                            PsiElement(})('}')
                        PsiWhiteSpace(' ')
                        SIMPLE_COMMAND_ELEMENT
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('url')
                            PsiElement(})('}')
                    PsiElement())(')')
                PsiElement(\n)('\n')
                PsiWhiteSpace('      ')
                IF_COMMAND
                  PsiElement(if)('if')
                  PsiWhiteSpace(' ')
                  COMPOUND_LIST
                    CONDITIONAL_COMMAND
                      PsiElement([[)('[[')
                      PsiWhiteSpace(' ')
                      LITERAL_CONDITION
                        PsiElement($)('$')
                        SHELL_PARAMETER_EXPANSION
                          PsiElement({)('{')
                          PsiElement(word)('curl_result')
                          PsiElement(})('}')
                      PsiWhiteSpace(' ')
                      LITERAL_CONDITION
                        PsiElement(word)('-ge')
                      PsiWhiteSpace(' ')
                      LITERAL_CONDITION
                        NUMBER
                          PsiElement(int)('400')
                      PsiWhiteSpace(' ')
                      PsiElement(]])(']]')
                    PsiElement(;)(';')
                  PsiWhiteSpace(' ')
                  THEN_CLAUSE
                    PsiElement(then)('then')
                    COMPOUND_LIST
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('        ')
                      GENERIC_COMMAND_DIRECTIVE
                        LITERAL
                          PsiElement(word)('break')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('      ')
                  PsiElement(fi)('fi')
                PsiElement(\n)('\n')
                PsiWhiteSpace('      ')
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('verbose')
                  PsiWhiteSpace(' ')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    PsiElement(STRING_CONTENT)('  Found ')
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('url')
                      PsiElement(})('}')
                    PsiElement(STRING_CONTENT)(' [')
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('curl_result')
                      PsiElement(})('}')
                    PsiElement(STRING_CONTENT)(']')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
                PsiWhiteSpace('      ')
                ASSIGNMENT_COMMAND
                  LITERAL
                    PsiElement(word)('latest_jdk')
                  PsiElement(=)('=')
                  PsiElement($)('$')
                  SHELL_PARAMETER_EXPANSION
                    PsiElement({)('{')
                    PsiElement(word)('number')
                    PsiElement(})('}')
                PsiElement(\n)('\n')
                PsiWhiteSpace('      ')
                SIMPLE_COMMAND
                  ASSIGNMENT_COMMAND
                    LITERAL
                      PsiElement(word)('number')
                    PsiElement(=)('=')
                  SIMPLE_COMMAND_ELEMENT
                    OLD_ARITHMETIC_EXPANSION
                      PsiElement(ARITH_SQUARE_LEFT)('$[')
                      ADD_EXPRESSION
                        LITERAL_EXPRESSION
                          VARIABLE
                            PsiElement(var)('$number')
                        PsiWhiteSpace(' ')
                        PsiElement(+)('+')
                        LITERAL_EXPRESSION
                          NUMBER
                            PsiElement(int)('1')
                      PsiElement(ARITH_SQUARE_RIGHT)(']')
                PsiElement(\n)('\n')
              PsiWhiteSpace('    ')
              PsiElement(done)('done')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('verbose')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement(STRING_CONTENT)('Latest JDK feature release number is: ')
              PsiElement($)('$')
              SHELL_PARAMETER_EXPANSION
                PsiElement({)('{')
                PsiElement(word)('latest_jdk')
                PsiElement(})('}')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('perform_sanity_checks')
      PsiElement(()('(')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              PIPELINE_COMMAND_LIST
                CONDITIONAL_COMMAND
                  PsiElement([[)('[[')
                  PsiWhiteSpace(' ')
                  EQUALITY_CONDITION
                    LITERAL_CONDITION
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('feature')
                        PsiElement(})('}')
                    PsiWhiteSpace(' ')
                    PsiElement(==)('==')
                    PsiWhiteSpace(' ')
                    LITERAL_CONDITION
                      STRING
                        PsiElement(RAW_STRING)(''?'')
                  PsiWhiteSpace(' ')
                  PsiElement(]])(']]')
                PsiWhiteSpace(' ')
                PsiElement(||)('||')
                PsiWhiteSpace(' ')
                CONDITIONAL_COMMAND
                  PsiElement([[)('[[')
                  PsiWhiteSpace(' ')
                  EQUALITY_CONDITION
                    LITERAL_CONDITION
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('feature')
                        PsiElement(})('}')
                    PsiWhiteSpace(' ')
                    PsiElement(==)('==')
                    PsiWhiteSpace(' ')
                    LITERAL_CONDITION
                      STRING
                        PsiElement(RAW_STRING)(''ea'')
                  PsiWhiteSpace(' ')
                  PsiElement(]])(']]')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            THEN_CLAUSE
              PsiElement(then)('then')
              COMPOUND_LIST
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                ASSIGNMENT_COMMAND
                  LITERAL
                    PsiElement(word)('feature')
                  PsiElement(=)('=')
                  PsiElement($)('$')
                  SHELL_PARAMETER_EXPANSION
                    PsiElement({)('{')
                    PsiElement(word)('latest_jdk')
                    PsiElement(})('}')
                PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              PIPELINE_COMMAND_LIST
                CONDITIONAL_COMMAND
                  PsiElement([[)('[[')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('feature')
                      PsiElement(})('}')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    PsiElement(word)('-lt')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    NUMBER
                      PsiElement(int)('9')
                  PsiWhiteSpace(' ')
                  PsiElement(]])(']]')
                PsiWhiteSpace(' ')
                PsiElement(||)('||')
                PsiWhiteSpace(' ')
                CONDITIONAL_COMMAND
                  PsiElement([[)('[[')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('feature')
                      PsiElement(})('}')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    PsiElement(word)('-gt')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('latest_jdk')
                      PsiElement(})('}')
                  PsiWhiteSpace(' ')
                  PsiElement(]])(']]')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            THEN_CLAUSE
              PsiElement(then)('then')
              COMPOUND_LIST
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('script_exit')
                  PsiWhiteSpace(' ')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    PsiElement(STRING_CONTENT)('Expected feature release number in range of 9 to ')
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('latest_jdk')
                      PsiElement(})('}')
                    PsiElement(STRING_CONTENT)(', but got: ')
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('feature')
                      PsiElement(})('}')
                    PsiElement(CLOSE_QUOTE)('"')
                  PsiWhiteSpace(' ')
                  NUMBER
                    PsiElement(int)('3')
                PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([[)('[[')
                PsiWhiteSpace(' ')
                LITERAL_CONDITION
                  PsiElement(word)('-d')
                PsiWhiteSpace(' ')
                LITERAL_CONDITION
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    VARIABLE
                      PsiElement(var)('$target')
                    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)('script_exit')
                  PsiWhiteSpace(' ')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    PsiElement(STRING_CONTENT)('Target directory must not exist, but it does: ')
                    PsiElement($)('$')
                    SUBSHELL_COMMAND
                      PsiElement(()('(')
                      COMPOUND_LIST
                        SIMPLE_COMMAND
                          GENERIC_COMMAND_DIRECTIVE
                            LITERAL
                              PsiElement(word)('du')
                          PsiWhiteSpace(' ')
                          LITERAL
                            PsiElement(word)('-hs')
                          PsiWhiteSpace(' ')
                          STRING
                            PsiElement(RAW_STRING)(''${target}'')
                      PsiElement())(')')
                    PsiElement(CLOSE_QUOTE)('"')
                  PsiWhiteSpace(' ')
                  NUMBER
                    PsiElement(int)('3')
                PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('determine_url')
      PsiElement(()('(')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('local')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              ASSIGNMENT_COMMAND
                LITERAL
                  PsiElement(word)('JAVA_NET')
                PsiElement(=)('=')
                STRING
                  PsiElement(OPEN_QUOTE)('"')
                  PsiElement(STRING_CONTENT)('https://jdk.java.net/')
                  PsiElement($)('$')
                  SHELL_PARAMETER_EXPANSION
                    PsiElement({)('{')
                    PsiElement(word)('feature')
                    PsiElement(})('}')
                  PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('local')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              ASSIGNMENT_COMMAND
                LITERAL
                  PsiElement(word)('DOWNLOAD')
                PsiElement(=)('=')
                STRING
                  PsiElement(RAW_STRING)(''https://download.java.net/java'')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          PsiComment(Comment)('# An official GA build or an archived feature? Use predefined URL')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          CASE_COMMAND
            PsiElement(case)('case')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement($)('$')
              SHELL_PARAMETER_EXPANSION
                PsiElement({)('{')
                PsiElement(word)('feature')
                PsiElement(})('}')
              PsiElement(CLOSE_QUOTE)('"')
            PsiWhiteSpace(' ')
            PsiElement(in)('in')
            CASE_CLAUSE
              PsiElement(\n)('\n')
              PsiWhiteSpace('        ')
              PATTERN
                PsiElement(word)('9')
              PsiElement())(')')
              PsiWhiteSpace(' ')
              COMPOUND_LIST
                PIPELINE_COMMAND_LIST
                  ASSIGNMENT_COMMAND
                    LITERAL
                      PsiElement(word)('url')
                    PsiElement(=)('=')
                    STRING
                      PsiElement(OPEN_QUOTE)('"')
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('DOWNLOAD')
                        PsiElement(})('}')
                      PsiElement(STRING_CONTENT)('/GA/jdk9/9.0.4/binaries/openjdk-9.0.4_')
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('os')
                        PsiElement(})('}')
                      PsiElement(STRING_CONTENT)('_bin.tar.gz')
                      PsiElement(CLOSE_QUOTE)('"')
                  PsiElement(;)(';')
                  PsiWhiteSpace(' ')
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('return')
            PsiElement(;;)(';;')
            CASE_CLAUSE
              PsiElement(\n)('\n')
              PsiWhiteSpace('       ')
              PATTERN
                PsiElement(word)('10')
              PsiElement())(')')
              PsiWhiteSpace(' ')
              COMPOUND_LIST
                PIPELINE_COMMAND_LIST
                  ASSIGNMENT_COMMAND
                    LITERAL
                      PsiElement(word)('url')
                    PsiElement(=)('=')
                    STRING
                      PsiElement(OPEN_QUOTE)('"')
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('DOWNLOAD')
                        PsiElement(})('}')
                      PsiElement(STRING_CONTENT)('/GA/jdk10/10.0.2/19aef61b38124481863b1413dce1855f/13/openjdk-10.0.2_')
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('os')
                        PsiElement(})('}')
                      PsiElement(STRING_CONTENT)('_bin.tar.gz')
                      PsiElement(CLOSE_QUOTE)('"')
                  PsiElement(;)(';')
                  PsiWhiteSpace(' ')
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('return')
            PsiElement(;;)(';;')
            CASE_CLAUSE
              PsiElement(\n)('\n')
              PsiWhiteSpace('       ')
              PATTERN
                PsiElement(word)('11')
              PsiElement())(')')
              PsiWhiteSpace(' ')
              COMPOUND_LIST
                PIPELINE_COMMAND_LIST
                  ASSIGNMENT_COMMAND
                    LITERAL
                      PsiElement(word)('url')
                    PsiElement(=)('=')
                    STRING
                      PsiElement(OPEN_QUOTE)('"')
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('DOWNLOAD')
                        PsiElement(})('}')
                      PsiElement(STRING_CONTENT)('/GA/jdk11/9/GPL/openjdk-11.0.2_')
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('os')
                        PsiElement(})('}')
                      PsiElement(STRING_CONTENT)('_bin.tar.gz')
                      PsiElement(CLOSE_QUOTE)('"')
                  PsiElement(;)(';')
                  PsiWhiteSpace(' ')
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('return')
            PsiElement(;;)(';;')
            CASE_CLAUSE
              PsiElement(\n)('\n')
              PsiWhiteSpace('       ')
              PATTERN
                PsiElement(word)('12')
              PsiElement())(')')
              PsiWhiteSpace(' ')
              COMPOUND_LIST
                PIPELINE_COMMAND_LIST
                  ASSIGNMENT_COMMAND
                    LITERAL
                      PsiElement(word)('url')
                    PsiElement(=)('=')
                    STRING
                      PsiElement(OPEN_QUOTE)('"')
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('DOWNLOAD')
                        PsiElement(})('}')
                      PsiElement(STRING_CONTENT)('/GA/jdk12.0.2/e482c34c86bd4bf8b56c0b35558996b9/10/GPL/openjdk-12.0.2_')
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('os')
                        PsiElement(})('}')
                      PsiElement(STRING_CONTENT)('_bin.tar.gz')
                      PsiElement(CLOSE_QUOTE)('"')
                  PsiElement(;)(';')
                  PsiWhiteSpace(' ')
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('return')
            PsiElement(;;)(';;')
            CASE_CLAUSE
              PsiElement(\n)('\n')
              PsiWhiteSpace('       ')
              PATTERN
                PsiElement(word)('13')
              PsiElement())(')')
              PsiWhiteSpace(' ')
              COMPOUND_LIST
                PIPELINE_COMMAND_LIST
                  ASSIGNMENT_COMMAND
                    LITERAL
                      PsiElement(word)('url')
                    PsiElement(=)('=')
                    STRING
                      PsiElement(OPEN_QUOTE)('"')
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('DOWNLOAD')
                        PsiElement(})('}')
                      PsiElement(STRING_CONTENT)('/GA/jdk13.0.1/cec27d702aa74d5a8630c65ae61e4305/9/GPL/openjdk-13.0.1_')
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('os')
                        PsiElement(})('}')
                      PsiElement(STRING_CONTENT)('_bin.tar.gz')
                      PsiElement(CLOSE_QUOTE)('"')
                  PsiElement(;)(';')
                  PsiWhiteSpace(' ')
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('return')
            PsiElement(;;)(';;')
            PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            PsiElement(esac)('esac')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          PsiComment(Comment)('# EA or RC build? Grab URL from HTML source of jdk.java.net/${feature}')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('local')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              ASSIGNMENT_COMMAND
                LITERAL
                  PsiElement(word)('candidates')
                PsiElement(=)('=')
                PsiElement($)('$')
                SUBSHELL_COMMAND
                  PsiElement(()('(')
                  COMPOUND_LIST
                    PIPELINE_COMMAND_LIST
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('wget')
                        PsiWhiteSpace(' ')
                        LITERAL
                          PsiElement(word)('--quiet')
                        PsiWhiteSpace(' ')
                        LITERAL
                          PsiElement(word)('--output-document')
                        PsiWhiteSpace(' ')
                        LITERAL
                          PsiElement(word)('-')
                        PsiWhiteSpace(' ')
                        SIMPLE_COMMAND_ELEMENT
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('JAVA_NET')
                            PsiElement(})('}')
                      PsiWhiteSpace(' ')
                      PsiElement(|)('|')
                      PsiWhiteSpace(' ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('grep')
                        PsiWhiteSpace(' ')
                        LITERAL
                          PsiElement(word)('-Eo')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(RAW_STRING)(''href[[:space:]]*=[[:space:]]*"[^\"]+"'')
                      PsiWhiteSpace(' ')
                      PsiElement(|)('|')
                      PsiWhiteSpace(' ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('grep')
                        PsiWhiteSpace(' ')
                        LITERAL
                          PsiElement(word)('-Eo')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(RAW_STRING)(''(http|https)://[^"]+'')
                  PsiElement())(')')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          ASSIGNMENT_COMMAND
            LITERAL
              PsiElement(word)('url')
            PsiElement(=)('=')
            PsiElement($)('$')
            SUBSHELL_COMMAND
              PsiElement(()('(')
              COMPOUND_LIST
                PIPELINE_COMMAND_LIST
                  SIMPLE_COMMAND
                    GENERIC_COMMAND_DIRECTIVE
                      LITERAL
                        PsiElement(word)('echo')
                    PsiWhiteSpace(' ')
                    STRING
                      PsiElement(OPEN_QUOTE)('"')
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('candidates')
                        PsiElement(})('}')
                      PsiElement(CLOSE_QUOTE)('"')
                  PsiWhiteSpace(' ')
                  PsiElement(|)('|')
                  PsiWhiteSpace(' ')
                  SIMPLE_COMMAND
                    GENERIC_COMMAND_DIRECTIVE
                      LITERAL
                        PsiElement(word)('grep')
                    PsiWhiteSpace(' ')
                    LITERAL
                      PsiElement(word)('-Eo')
                    PsiWhiteSpace(' ')
                    STRING
                      PsiElement(OPEN_QUOTE)('"')
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('DOWNLOAD')
                        PsiElement(})('}')
                      PsiElement(STRING_CONTENT)('/.+/jdk')
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('feature')
                        PsiElement(})('}')
                      PsiElement(STRING_CONTENT)('/.*')
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('license')
                        PsiElement(})('}')
                      PsiElement(STRING_CONTENT)('/.*jdk-')
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('feature')
                        PsiElement(})('}')
                      PsiElement(STRING_CONTENT)('.+')
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('os')
                        PsiElement(})('}')
                      PsiElement(STRING_CONTENT)('_bin(.tar.gz|.zip)$')
                      PsiElement(CLOSE_QUOTE)('"')
                  PsiWhiteSpace(' ')
                  PsiElement(||)('||')
                  PsiWhiteSpace(' ')
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('true')
              PsiElement())(')')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([[)('[[')
                PsiWhiteSpace(' ')
                LITERAL_CONDITION
                  PsiElement(word)('-z')
                PsiWhiteSpace(' ')
                LITERAL_CONDITION
                  PsiElement($)('$')
                  SHELL_PARAMETER_EXPANSION
                    PsiElement({)('{')
                    PsiElement(word)('url')
                    PsiElement(})('}')
                PsiWhiteSpace(' ')
                PsiElement(]])(']]')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            THEN_CLAUSE
              PsiElement(then)('then')
              COMPOUND_LIST
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('script_exit')
                  PsiWhiteSpace(' ')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    PsiElement(STRING_CONTENT)('Couldn't determine a download url for ')
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('feature')
                      PsiElement(})('}')
                    PsiElement(STRING_CONTENT)('-')
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('license')
                      PsiElement(})('}')
                    PsiElement(STRING_CONTENT)(' on ')
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('os')
                      PsiElement(})('}')
                    PsiElement(CLOSE_QUOTE)('"')
                  PsiWhiteSpace(' ')
                  NUMBER
                    PsiElement(int)('1')
                PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('prepare_variables')
      PsiElement(()('(')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([[)('[[')
                PsiWhiteSpace(' ')
                EQUALITY_CONDITION
                  LITERAL_CONDITION
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('os')
                      PsiElement(})('}')
                  PsiWhiteSpace(' ')
                  PsiElement(==)('==')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    STRING
                      PsiElement(RAW_STRING)(''?'')
                PsiWhiteSpace(' ')
                PsiElement(]])(']]')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            THEN_CLAUSE
              PsiElement(then)('then')
              COMPOUND_LIST
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                IF_COMMAND
                  PsiElement(if)('if')
                  PsiWhiteSpace(' ')
                  COMPOUND_LIST
                    CONDITIONAL_COMMAND
                      PsiElement([[)('[[')
                      PsiWhiteSpace(' ')
                      EQUALITY_CONDITION
                        LITERAL_CONDITION
                          STRING
                            PsiElement(OPEN_QUOTE)('"')
                            VARIABLE
                              PsiElement(var)('$OSTYPE')
                            PsiElement(CLOSE_QUOTE)('"')
                        PsiWhiteSpace(' ')
                        PsiElement(==)('==')
                        PsiWhiteSpace(' ')
                        LITERAL_CONDITION
                          STRING
                            PsiElement(OPEN_QUOTE)('"')
                            PsiElement(STRING_CONTENT)('darwin')
                            PsiElement(CLOSE_QUOTE)('"')
                      LITERAL_CONDITION
                        PsiElement(word)('*')
                      PsiWhiteSpace(' ')
                      PsiElement(]])(']]')
                    PsiElement(;)(';')
                  PsiWhiteSpace(' ')
                  THEN_CLAUSE
                    PsiElement(then)('then')
                    COMPOUND_LIST
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('          ')
                      ASSIGNMENT_COMMAND
                        LITERAL
                          PsiElement(word)('os')
                        PsiElement(=)('=')
                        STRING
                          PsiElement(RAW_STRING)(''osx-x64'')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('        ')
                  ELSE_CLAUSE
                    PsiElement(else)('else')
                    COMPOUND_LIST
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('          ')
                      ASSIGNMENT_COMMAND
                        LITERAL
                          PsiElement(word)('os')
                        PsiElement(=)('=')
                        STRING
                          PsiElement(RAW_STRING)(''linux-x64'')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('        ')
                  PsiElement(fi)('fi')
                PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([[)('[[')
                PsiWhiteSpace(' ')
                EQUALITY_CONDITION
                  LITERAL_CONDITION
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('url')
                      PsiElement(})('}')
                  PsiWhiteSpace(' ')
                  PsiElement(==)('==')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    STRING
                      PsiElement(RAW_STRING)(''?'')
                PsiWhiteSpace(' ')
                PsiElement(]])(']]')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            THEN_CLAUSE
              PsiElement(then)('then')
              COMPOUND_LIST
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                GENERIC_COMMAND_DIRECTIVE
                  LITERAL
                    PsiElement(word)('determine_latest_jdk')
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                GENERIC_COMMAND_DIRECTIVE
                  LITERAL
                    PsiElement(word)('perform_sanity_checks')
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                GENERIC_COMMAND_DIRECTIVE
                  LITERAL
                    PsiElement(word)('determine_url')
                PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            ELSE_CLAUSE
              PsiElement(else)('else')
              COMPOUND_LIST
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                ASSIGNMENT_COMMAND
                  LITERAL
                    PsiElement(word)('feature')
                  PsiElement(=)('=')
                  STRING
                    PsiElement(RAW_STRING)(''<overridden by custom url>'')
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                ASSIGNMENT_COMMAND
                  LITERAL
                    PsiElement(word)('license')
                  PsiElement(=)('=')
                  STRING
                    PsiElement(RAW_STRING)(''<overridden by custom url>'')
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                ASSIGNMENT_COMMAND
                  LITERAL
                    PsiElement(word)('os')
                  PsiElement(=)('=')
                  STRING
                    PsiElement(RAW_STRING)(''<overridden by custom url>'')
                PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          ASSIGNMENT_COMMAND
            LITERAL
              PsiElement(word)('status')
            PsiElement(=)('=')
            PsiElement($)('$')
            SUBSHELL_COMMAND
              PsiElement(()('(')
              COMPOUND_LIST
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('curl')
                  PsiWhiteSpace(' ')
                  LITERAL
                    PsiElement(word)('-o')
                  PsiWhiteSpace(' ')
                  LITERAL
                    PsiElement(word)('/dev/null')
                  PsiWhiteSpace(' ')
                  LITERAL
                    PsiElement(word)('--silent')
                  PsiWhiteSpace(' ')
                  LITERAL
                    PsiElement(word)('--head')
                  PsiWhiteSpace(' ')
                  LITERAL
                    PsiElement(word)('--write-out')
                  PsiWhiteSpace(' ')
                  LITERAL
                    PsiElement(word)('%')
                  SIMPLE_COMMAND_ELEMENT
                    BRACE_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('http_code')
                      PsiElement(})('}')
                  PsiWhiteSpace(' ')
                  SIMPLE_COMMAND_ELEMENT
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('url')
                      PsiElement(})('}')
              PsiElement())(')')
          PsiElement(\n)('\n')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('print_variables')
      PsiElement(()('(')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('cat')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              HEREDOC
                PsiElement(HEREDOC_MARKER_TAG)('<<')
                PsiWhiteSpace(' ')
                PsiElement(HEREDOC_MARKER_START)('EOF')
                PsiElement(\n)('\n')
                PsiElement(HEREDOC_CONTENT)('Variables:\n  feature = ${feature}\n       os = ${os}\n      url = ${url}\n   status = ${status}\n')
                PsiElement(HEREDOC_MARKER_END)('EOF')
          PsiElement(\n)('\n')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('download_and_extract_and_set_target')
      PsiElement(()('(')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          PIPELINE_COMMAND_LIST
            SIMPLE_COMMAND
              GENERIC_COMMAND_DIRECTIVE
                LITERAL
                  PsiElement(word)('local')
              PsiWhiteSpace(' ')
              SIMPLE_COMMAND_ELEMENT
                ASSIGNMENT_COMMAND
                  LITERAL
                    PsiElement(word)('quiet')
                  PsiElement(=)('=')
                  STRING
                    PsiElement(RAW_STRING)(''--quiet'')
            PsiElement(;)(';')
            PsiWhiteSpace(' ')
            IF_COMMAND
              PsiElement(if)('if')
              PsiWhiteSpace(' ')
              COMPOUND_LIST
                CONDITIONAL_COMMAND
                  PsiElement([[)('[[')
                  PsiWhiteSpace(' ')
                  EQUALITY_CONDITION
                    LITERAL_CONDITION
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('verbose')
                        PsiElement(})('}')
                    PsiWhiteSpace(' ')
                    PsiElement(==)('==')
                    PsiWhiteSpace(' ')
                    LITERAL_CONDITION
                      PsiElement(word)('true')
                  PsiWhiteSpace(' ')
                  PsiElement(]])(']]')
                PsiElement(;)(';')
              PsiWhiteSpace(' ')
              THEN_CLAUSE
                PsiElement(then)('then')
                PsiWhiteSpace(' ')
                COMPOUND_LIST
                  ASSIGNMENT_COMMAND
                    LITERAL
                      PsiElement(word)('quiet')
                    PsiElement(=)('=')
                    STRING
                      PsiElement(RAW_STRING)('''')
                  PsiElement(;)(';')
              PsiWhiteSpace(' ')
              PsiElement(fi)('fi')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('local')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              ASSIGNMENT_COMMAND
                LITERAL
                  PsiElement(word)('local')
                PsiElement(=)('=')
                STRING
                  PsiElement(OPEN_QUOTE)('"')
                  PsiElement(STRING_CONTENT)('--directory-prefix ')
                  PsiElement($)('$')
                  SHELL_PARAMETER_EXPANSION
                    PsiElement({)('{')
                    PsiElement(word)('workspace')
                    PsiElement(})('}')
                  PsiElement(STRING_CONTENT)(' --output-document=jdk.tar.gz')
                  PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('local')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              ASSIGNMENT_COMMAND
                LITERAL
                  PsiElement(word)('remote')
                PsiElement(=)('=')
                STRING
                  PsiElement(RAW_STRING)(''--timestamping --continue'')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('local')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              ASSIGNMENT_COMMAND
                LITERAL
                  PsiElement(word)('wget_options')
                PsiElement(=)('=')
                STRING
                  PsiElement(OPEN_QUOTE)('"')
                  PsiElement($)('$')
                  SHELL_PARAMETER_EXPANSION
                    PsiElement({)('{')
                    PsiElement(word)('quiet')
                    PsiElement(})('}')
                  PsiElement(STRING_CONTENT)(' ')
                  PsiElement($)('$')
                  SHELL_PARAMETER_EXPANSION
                    PsiElement({)('{')
                    PsiElement(word)('local')
                    PsiElement(})('}')
                  PsiElement(STRING_CONTENT)(' ')
                  PsiElement($)('$')
                  SHELL_PARAMETER_EXPANSION
                    PsiElement({)('{')
                    PsiElement(word)('remote')
                    PsiElement(})('}')
                  PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('local')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              ASSIGNMENT_COMMAND
                LITERAL
                  PsiElement(word)('tar_options')
                PsiElement(=)('=')
                STRING
                  PsiElement(OPEN_QUOTE)('"')
                  PsiElement(STRING_CONTENT)('--file jdk.tar.gz')
                  PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('say')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement(STRING_CONTENT)('Downloading JDK from ')
              PsiElement($)('$')
              SHELL_PARAMETER_EXPANSION
                PsiElement({)('{')
                PsiElement(word)('url')
                PsiElement(})('}')
              PsiElement(STRING_CONTENT)('...')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('verbose')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement(STRING_CONTENT)('Using wget options: ')
              PsiElement($)('$')
              SHELL_PARAMETER_EXPANSION
                PsiElement({)('{')
                PsiElement(word)('wget_options')
                PsiElement(})('}')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('wget')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              PsiElement($)('$')
              SHELL_PARAMETER_EXPANSION
                PsiElement({)('{')
                PsiElement(word)('wget_options')
                PsiElement(})('}')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              PsiElement($)('$')
              SHELL_PARAMETER_EXPANSION
                PsiElement({)('{')
                PsiElement(word)('url')
                PsiElement(})('}')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([[)('[[')
                PsiWhiteSpace(' ')
                EQUALITY_CONDITION
                  LITERAL_CONDITION
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('os')
                      PsiElement(})('}')
                  PsiWhiteSpace(' ')
                  PsiElement(==)('==')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    STRING
                      PsiElement(RAW_STRING)(''windows-x64'')
                PsiWhiteSpace(' ')
                PsiElement(]])(']]')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            THEN_CLAUSE
              PsiElement(then)('then')
              COMPOUND_LIST
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('script_exit')
                  PsiWhiteSpace(' ')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    PsiElement(STRING_CONTENT)('Extracting archives on Windows isn't supported, yet')
                    PsiElement(CLOSE_QUOTE)('"')
                  PsiWhiteSpace(' ')
                  NUMBER
                    PsiElement(int)('4')
                PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('verbose')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement(STRING_CONTENT)('Using tar options: ')
              PsiElement($)('$')
              SHELL_PARAMETER_EXPANSION
                PsiElement({)('{')
                PsiElement(word)('tar_options')
                PsiElement(})('}')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([[)('[[')
                PsiWhiteSpace(' ')
                EQUALITY_CONDITION
                  LITERAL_CONDITION
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('target')
                      PsiElement(})('}')
                  PsiWhiteSpace(' ')
                  PsiElement(==)('==')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    STRING
                      PsiElement(RAW_STRING)(''?'')
                PsiWhiteSpace(' ')
                PsiElement(]])(']]')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            THEN_CLAUSE
              PsiElement(then)('then')
              COMPOUND_LIST
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('tar')
                  PsiWhiteSpace(' ')
                  LITERAL
                    PsiElement(word)('--extract')
                  PsiWhiteSpace(' ')
                  SIMPLE_COMMAND_ELEMENT
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('tar_options')
                      PsiElement(})('}')
                  PsiWhiteSpace(' ')
                  LITERAL
                    PsiElement(word)('-C')
                  PsiWhiteSpace(' ')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('workspace')
                      PsiElement(})('}')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                IF_COMMAND
                  PsiElement(if)('if')
                  PsiWhiteSpace(' ')
                  COMPOUND_LIST
                    CONDITIONAL_COMMAND
                      PsiElement([[)('[[')
                      PsiWhiteSpace(' ')
                      EQUALITY_CONDITION
                        LITERAL_CONDITION
                          STRING
                            PsiElement(OPEN_QUOTE)('"')
                            VARIABLE
                              PsiElement(var)('$OSTYPE')
                            PsiElement(CLOSE_QUOTE)('"')
                        PsiWhiteSpace(' ')
                        PsiElement(!=)('!=')
                        PsiWhiteSpace(' ')
                        LITERAL_CONDITION
                          STRING
                            PsiElement(OPEN_QUOTE)('"')
                            PsiElement(STRING_CONTENT)('darwin')
                            PsiElement(CLOSE_QUOTE)('"')
                      LITERAL_CONDITION
                        PsiElement(word)('*')
                      PsiWhiteSpace(' ')
                      PsiElement(]])(']]')
                    PsiElement(;)(';')
                  PsiWhiteSpace(' ')
                  THEN_CLAUSE
                    PsiElement(then)('then')
                    COMPOUND_LIST
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('            ')
                      ASSIGNMENT_COMMAND
                        LITERAL
                          PsiElement(word)('target')
                        PsiElement(=)('=')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('workspace')
                            PsiElement(})('}')
                          PsiElement(CLOSE_QUOTE)('"')
                        LITERAL
                          PsiElement(word)('/')
                        PsiElement($)('$')
                        SUBSHELL_COMMAND
                          PsiElement(()('(')
                          COMPOUND_LIST
                            PIPELINE_COMMAND_LIST
                              SIMPLE_COMMAND
                                GENERIC_COMMAND_DIRECTIVE
                                  LITERAL
                                    PsiElement(word)('tar')
                                PsiWhiteSpace(' ')
                                LITERAL
                                  PsiElement(word)('--list')
                                PsiWhiteSpace(' ')
                                SIMPLE_COMMAND_ELEMENT
                                  PsiElement($)('$')
                                  SHELL_PARAMETER_EXPANSION
                                    PsiElement({)('{')
                                    PsiElement(word)('tar_options')
                                    PsiElement(})('}')
                              PsiWhiteSpace(' ')
                              PsiElement(|)('|')
                              PsiWhiteSpace(' ')
                              SIMPLE_COMMAND
                                GENERIC_COMMAND_DIRECTIVE
                                  LITERAL
                                    PsiElement(word)('grep')
                                PsiWhiteSpace(' ')
                                STRING
                                  PsiElement(RAW_STRING)(''bin/javac'')
                              PsiWhiteSpace(' ')
                              PsiElement(|)('|')
                              PsiWhiteSpace(' ')
                              SIMPLE_COMMAND
                                GENERIC_COMMAND_DIRECTIVE
                                  LITERAL
                                    PsiElement(word)('tr')
                                PsiWhiteSpace(' ')
                                STRING
                                  PsiElement(RAW_STRING)(''/'')
                                PsiWhiteSpace(' ')
                                STRING
                                  PsiElement(RAW_STRING)(''\n'')
                              PsiWhiteSpace(' ')
                              PsiElement(|)('|')
                              PsiWhiteSpace(' ')
                              SIMPLE_COMMAND
                                GENERIC_COMMAND_DIRECTIVE
                                  LITERAL
                                    PsiElement(word)('tail')
                                PsiWhiteSpace(' ')
                                LITERAL
                                  PsiElement(word)('-3')
                              PsiWhiteSpace(' ')
                              PsiElement(|)('|')
                              PsiWhiteSpace(' ')
                              SIMPLE_COMMAND
                                GENERIC_COMMAND_DIRECTIVE
                                  LITERAL
                                    PsiElement(word)('head')
                                PsiWhiteSpace(' ')
                                LITERAL
                                  PsiElement(word)('-1')
                          PsiElement())(')')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('        ')
                  ELSE_CLAUSE
                    PsiElement(else)('else')
                    COMPOUND_LIST
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('            ')
                      ASSIGNMENT_COMMAND
                        LITERAL
                          PsiElement(word)('target')
                        PsiElement(=)('=')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('workspace')
                            PsiElement(})('}')
                          PsiElement(CLOSE_QUOTE)('"')
                        LITERAL
                          PsiElement(word)('/')
                        PsiElement($)('$')
                        SUBSHELL_COMMAND
                          PsiElement(()('(')
                          COMPOUND_LIST
                            PIPELINE_COMMAND_LIST
                              SIMPLE_COMMAND
                                GENERIC_COMMAND_DIRECTIVE
                                  LITERAL
                                    PsiElement(word)('tar')
                                PsiWhiteSpace(' ')
                                LITERAL
                                  PsiElement(word)('--list')
                                PsiWhiteSpace(' ')
                                SIMPLE_COMMAND_ELEMENT
                                  PsiElement($)('$')
                                  SHELL_PARAMETER_EXPANSION
                                    PsiElement({)('{')
                                    PsiElement(word)('tar_options')
                                    PsiElement(})('}')
                              PsiWhiteSpace(' ')
                              PsiElement(|)('|')
                              PsiWhiteSpace(' ')
                              SIMPLE_COMMAND
                                GENERIC_COMMAND_DIRECTIVE
                                  LITERAL
                                    PsiElement(word)('head')
                                PsiWhiteSpace(' ')
                                LITERAL
                                  PsiElement(word)('-2')
                              PsiWhiteSpace(' ')
                              PsiElement(|)('|')
                              PsiWhiteSpace(' ')
                              SIMPLE_COMMAND
                                GENERIC_COMMAND_DIRECTIVE
                                  LITERAL
                                    PsiElement(word)('tail')
                                PsiWhiteSpace(' ')
                                LITERAL
                                  PsiElement(word)('-1')
                              PsiWhiteSpace(' ')
                              PsiElement(|)('|')
                              PsiWhiteSpace(' ')
                              SIMPLE_COMMAND
                                GENERIC_COMMAND_DIRECTIVE
                                  LITERAL
                                    PsiElement(word)('cut')
                                PsiWhiteSpace(' ')
                                LITERAL
                                  PsiElement(word)('-f')
                                PsiWhiteSpace(' ')
                                NUMBER
                                  PsiElement(int)('2')
                                PsiWhiteSpace(' ')
                                LITERAL
                                  PsiElement(word)('-d')
                                PsiWhiteSpace(' ')
                                STRING
                                  PsiElement(RAW_STRING)(''/'')
                                PsiWhiteSpace(' ')
                                LITERAL
                                  PsiElement(word)('-')
                          PsiElement())(')')
                        LITERAL
                          PsiElement(word)('/Contents/Home')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('        ')
                  PsiElement(fi)('fi')
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('verbose')
                  PsiWhiteSpace(' ')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    PsiElement(STRING_CONTENT)('Set target to: ')
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('target')
                      PsiElement(})('}')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            ELSE_CLAUSE
              PsiElement(else)('else')
              COMPOUND_LIST
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('echo')
                  PsiWhiteSpace(' ')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    PsiElement(STRING_CONTENT)('Using custom target: ')
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('target')
                      PsiElement(})('}')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                IF_COMMAND
                  PsiElement(if)('if')
                  PsiWhiteSpace(' ')
                  COMPOUND_LIST
                    CONDITIONAL_COMMAND
                      PsiElement([[)('[[')
                      PsiWhiteSpace(' ')
                      EQUALITY_CONDITION
                        LITERAL_CONDITION
                          STRING
                            PsiElement(OPEN_QUOTE)('"')
                            VARIABLE
                              PsiElement(var)('$OSTYPE')
                            PsiElement(CLOSE_QUOTE)('"')
                        PsiWhiteSpace(' ')
                        PsiElement(!=)('!=')
                        PsiWhiteSpace(' ')
                        LITERAL_CONDITION
                          STRING
                            PsiElement(OPEN_QUOTE)('"')
                            PsiElement(STRING_CONTENT)('darwin')
                            PsiElement(CLOSE_QUOTE)('"')
                      LITERAL_CONDITION
                        PsiElement(word)('*')
                      PsiWhiteSpace(' ')
                      PsiElement(]])(']]')
                    PsiElement(;)(';')
                  PsiWhiteSpace(' ')
                  THEN_CLAUSE
                    PsiElement(then)('then')
                    COMPOUND_LIST
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('            ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('mkdir')
                        PsiWhiteSpace(' ')
                        LITERAL
                          PsiElement(word)('--parents')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('target')
                            PsiElement(})('}')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('            ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('tar')
                        PsiWhiteSpace(' ')
                        LITERAL
                          PsiElement(word)('--extract')
                        PsiWhiteSpace(' ')
                        SIMPLE_COMMAND_ELEMENT
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('tar_options')
                            PsiElement(})('}')
                        PsiWhiteSpace(' ')
                        LITERAL
                          PsiElement(word)('-C')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('target')
                            PsiElement(})('}')
                          PsiElement(CLOSE_QUOTE)('"')
                        PsiWhiteSpace(' ')
                        SIMPLE_COMMAND_ELEMENT
                          ASSIGNMENT_COMMAND
                            LITERAL
                              PsiElement(word)('--strip-components')
                            PsiElement(=)('=')
                            NUMBER
                              PsiElement(int)('1')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('        ')
                  ELSE_CLAUSE
                    PsiElement(else)('else')
                    COMPOUND_LIST
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('            ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('mkdir')
                        PsiWhiteSpace(' ')
                        LITERAL
                          PsiElement(word)('-p')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('target')
                            PsiElement(})('}')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('            ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('tar')
                        PsiWhiteSpace(' ')
                        LITERAL
                          PsiElement(word)('--extract')
                        PsiWhiteSpace(' ')
                        SIMPLE_COMMAND_ELEMENT
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('tar_options')
                            PsiElement(})('}')
                        PsiWhiteSpace(' ')
                        LITERAL
                          PsiElement(word)('-C')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('target')
                            PsiElement(})('}')
                          PsiElement(CLOSE_QUOTE)('"')
                        PsiWhiteSpace(' ')
                        SIMPLE_COMMAND_ELEMENT
                          ASSIGNMENT_COMMAND
                            LITERAL
                              PsiElement(word)('--strip-components')
                            PsiElement(=)('=')
                            NUMBER
                              PsiElement(int)('4')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('        ')
                  PsiElement(fi)('fi')
                PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([[)('[[')
                PsiWhiteSpace(' ')
                EQUALITY_CONDITION
                  LITERAL_CONDITION
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('verbose')
                      PsiElement(})('}')
                  PsiWhiteSpace(' ')
                  PsiElement(==)('==')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    PsiElement(word)('true')
                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)('Content of target directory:')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('ls')
                  PsiWhiteSpace(' ')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('target')
                      PsiElement(})('}')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('echo')
                  PsiWhiteSpace(' ')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    PsiElement(STRING_CONTENT)('Content of release file:')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                PIPELINE_COMMAND_LIST
                  CONDITIONAL_COMMAND
                    PsiElement([[)('[[')
                    PsiWhiteSpace(' ')
                    LOGICAL_BITWISE_CONDITION
                      PsiElement(!)('!')
                      PsiWhiteSpace(' ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('-f')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('target')
                            PsiElement(})('}')
                          PsiElement(STRING_CONTENT)('/release')
                          PsiElement(CLOSE_QUOTE)('"')
                    PsiWhiteSpace(' ')
                    PsiElement(]])(']]')
                  PsiWhiteSpace(' ')
                  PsiElement(||)('||')
                  PsiWhiteSpace(' ')
                  SIMPLE_COMMAND
                    GENERIC_COMMAND_DIRECTIVE
                      LITERAL
                        PsiElement(word)('cat')
                    PsiWhiteSpace(' ')
                    STRING
                      PsiElement(OPEN_QUOTE)('"')
                      PsiElement($)('$')
                      SHELL_PARAMETER_EXPANSION
                        PsiElement({)('{')
                        PsiElement(word)('target')
                        PsiElement(})('}')
                      PsiElement(STRING_CONTENT)('/release')
                      PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          PsiComment(Comment)('# Link to system certificates')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          PsiComment(Comment)('# https://openjdk.org/jeps/319')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          PsiComment(Comment)('# https://bugs.openjdk.org/browse/JDK-8196141')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([[)('[[')
                PsiWhiteSpace(' ')
                EQUALITY_CONDITION
                  LITERAL_CONDITION
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('cacerts')
                      PsiElement(})('}')
                  PsiWhiteSpace(' ')
                  PsiElement(==)('==')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    PsiElement(word)('true')
                PsiWhiteSpace(' ')
                PsiElement(]])(']]')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            THEN_CLAUSE
              PsiElement(then)('then')
              COMPOUND_LIST
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('local')
                  PsiWhiteSpace(' ')
                  SIMPLE_COMMAND_ELEMENT
                    ASSIGNMENT_COMMAND
                      LITERAL
                        PsiElement(word)('directory')
                      PsiElement(=)('=')
                      STRING
                        PsiElement(OPEN_QUOTE)('"')
                        PsiElement($)('$')
                        SHELL_PARAMETER_EXPANSION
                          PsiElement({)('{')
                          PsiElement(word)('target')
                          PsiElement(})('}')
                        PsiElement(STRING_CONTENT)('/lib/security/cacerts')
                        PsiElement(CLOSE_QUOTE)('"')
                PsiElement(\n)('\n')
                PsiWhiteSpace('        ')
                IF_COMMAND
                  PsiElement(if)('if')
                  PsiWhiteSpace(' ')
                  COMPOUND_LIST
                    CONDITIONAL_COMMAND
                      PsiElement([[)('[[')
                      PsiWhiteSpace(' ')
                      LITERAL_CONDITION
                        PsiElement(word)('-f')
                      PsiWhiteSpace(' ')
                      LITERAL_CONDITION
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('directory')
                            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)('mv')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('directory')
                            PsiElement(})('}')
                          PsiElement(CLOSE_QUOTE)('"')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('directory')
                            PsiElement(})('}')
                          PsiElement(STRING_CONTENT)('.jdk')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('            ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('ln')
                        PsiWhiteSpace(' ')
                        LITERAL
                          PsiElement(word)('-s')
                        PsiWhiteSpace(' ')
                        LITERAL
                          PsiElement(word)('/etc/ssl/certs/java/cacerts')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('directory')
                            PsiElement(})('}')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('        ')
                  ELSE_CLAUSE
                    PsiElement(else)('else')
                    COMPOUND_LIST
                      PsiElement(\n)('\n')
                      PsiWhiteSpace('            ')
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('verbose')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement(STRING_CONTENT)('Directory ')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('directory')
                            PsiElement(})('}')
                          PsiElement(STRING_CONTENT)(' doesn't exist, didn't link system CA certificates.')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(\n)('\n')
                  PsiWhiteSpace('        ')
                  PsiElement(fi)('fi')
                PsiElement(\n)('\n')
            PsiWhiteSpace('    ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('main')
      PsiElement(()('(')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          GENERIC_COMMAND_DIRECTIVE
            LITERAL
              PsiElement(word)('initialize')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('parse_options')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              VARIABLE
                PsiElement(var)('$@')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('say')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              VARIABLE
                PsiElement(var)('$script_name')
              PsiElement(STRING_CONTENT)(' ')
              VARIABLE
                PsiElement(var)('$script_version')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          GENERIC_COMMAND_DIRECTIVE
            LITERAL
              PsiElement(word)('prepare_variables')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([[)('[[')
                PsiWhiteSpace(' ')
                EQUALITY_CONDITION
                  LITERAL_CONDITION
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('silent')
                      PsiElement(})('}')
                  PsiWhiteSpace(' ')
                  PsiElement(==)('==')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    PsiElement(word)('false')
                PsiWhiteSpace(' ')
                PsiElement(]])(']]')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            THEN_CLAUSE
              PsiElement(then)('then')
              PsiWhiteSpace(' ')
              COMPOUND_LIST
                GENERIC_COMMAND_DIRECTIVE
                  LITERAL
                    PsiElement(word)('print_variables')
                PsiElement(;)(';')
            PsiWhiteSpace(' ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([[)('[[')
                PsiWhiteSpace(' ')
                EQUALITY_CONDITION
                  LITERAL_CONDITION
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('dry')
                      PsiElement(})('}')
                  PsiWhiteSpace(' ')
                  PsiElement(==)('==')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    PsiElement(word)('true')
                PsiWhiteSpace(' ')
                PsiElement(]])(']]')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            THEN_CLAUSE
              PsiElement(then)('then')
              PsiWhiteSpace(' ')
              COMPOUND_LIST
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('exit')
                  PsiWhiteSpace(' ')
                  NUMBER
                    PsiElement(int)('0')
                PsiElement(;)(';')
            PsiWhiteSpace(' ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          GENERIC_COMMAND_DIRECTIVE
            LITERAL
              PsiElement(word)('download_and_extract_and_set_target')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('export')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              ASSIGNMENT_COMMAND
                LITERAL
                  PsiElement(word)('JAVA_HOME')
                PsiElement(=)('=')
                PsiElement($)('$')
                SUBSHELL_COMMAND
                  PsiElement(()('(')
                  COMPOUND_LIST
                    PIPELINE_COMMAND_LIST
                      SIMPLE_COMMAND
                        GENERIC_COMMAND_DIRECTIVE
                          LITERAL
                            PsiElement(word)('cd')
                        PsiWhiteSpace(' ')
                        STRING
                          PsiElement(OPEN_QUOTE)('"')
                          PsiElement($)('$')
                          SHELL_PARAMETER_EXPANSION
                            PsiElement({)('{')
                            PsiElement(word)('target')
                            PsiElement(})('}')
                          PsiElement(CLOSE_QUOTE)('"')
                      PsiElement(;)(';')
                      PsiWhiteSpace(' ')
                      GENERIC_COMMAND_DIRECTIVE
                        LITERAL
                          PsiElement(word)('pwd')
                  PsiElement())(')')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('export')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              ASSIGNMENT_COMMAND
                LITERAL
                  PsiElement(word)('PATH')
                PsiElement(=)('=')
                PsiElement($)('$')
                SHELL_PARAMETER_EXPANSION
                  PsiElement({)('{')
                  PsiElement(word)('JAVA_HOME')
                  PsiElement(})('}')
                LITERAL
                  PsiElement(word)('/bin:')
                VARIABLE
                  PsiElement(var)('$PATH')
          PsiElement(\n)('\n')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([[)('[[')
                PsiWhiteSpace(' ')
                EQUALITY_CONDITION
                  LITERAL_CONDITION
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('silent')
                      PsiElement(})('}')
                  PsiWhiteSpace(' ')
                  PsiElement(==)('==')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    PsiElement(word)('false')
                PsiWhiteSpace(' ')
                PsiElement(]])(']]')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            THEN_CLAUSE
              PsiElement(then)('then')
              PsiWhiteSpace(' ')
              COMPOUND_LIST
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('java')
                  PsiWhiteSpace(' ')
                  LITERAL
                    PsiElement(word)('-Xmx100m')
                  PsiWhiteSpace(' ')
                  LITERAL
                    PsiElement(word)('-version')
                PsiElement(;)(';')
            PsiWhiteSpace(' ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          IF_COMMAND
            PsiElement(if)('if')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              CONDITIONAL_COMMAND
                PsiElement([[)('[[')
                PsiWhiteSpace(' ')
                EQUALITY_CONDITION
                  LITERAL_CONDITION
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('emit_java_home')
                      PsiElement(})('}')
                  PsiWhiteSpace(' ')
                  PsiElement(==)('==')
                  PsiWhiteSpace(' ')
                  LITERAL_CONDITION
                    PsiElement(word)('true')
                PsiWhiteSpace(' ')
                PsiElement(]])(']]')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            THEN_CLAUSE
              PsiElement(then)('then')
              PsiWhiteSpace(' ')
              COMPOUND_LIST
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('echo')
                  PsiWhiteSpace(' ')
                  STRING
                    PsiElement(OPEN_QUOTE)('"')
                    PsiElement($)('$')
                    SHELL_PARAMETER_EXPANSION
                      PsiElement({)('{')
                      PsiElement(word)('JAVA_HOME')
                      PsiElement(})('}')
                    PsiElement(CLOSE_QUOTE)('"')
                PsiElement(;)(';')
            PsiWhiteSpace(' ')
            PsiElement(fi)('fi')
          PsiElement(\n)('\n')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('main')
      PsiWhiteSpace(' ')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        VARIABLE
          PsiElement(var)('$@')
        PsiElement(CLOSE_QUOTE)('"')