SHELL_SCRIPT
  PsiComment(shebang)('#!/bin/bash')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('tee')
      PsiWhiteSpace(' ')
      STRING
        PsiElement(RAW_STRING)(''/lib/systemd/system/add-localhost.service'')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        HEREDOC
          PsiElement(HEREDOC_MARKER_TAG)('<<')
          PsiElement(HEREDOC_MARKER_START)('EOF')
          PsiElement(\n)('\n')
          PsiElement(HEREDOC_CONTENT)('[Unit]\nDescription=Adds hostname to /etc/hosts\nAfter=network.target\n\n[Service]\nType=oneshot\nExecStart=-/etc/add-localhost.sh\n\n[Install]\nWantedBy=default.target\n')
          PsiElement(HEREDOC_MARKER_END)('EOF')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('mkdir')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('-p')
      PsiWhiteSpace(' ')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('/etc/systemd/system/')
        PsiElement($)('$')
        SHELL_PARAMETER_EXPANSION
          PsiElement({)('{')
          PsiElement(word)('MAIN_SERVICE')
          PsiElement(})('}')
        PsiElement(STRING_CONTENT)('.service.d')
        PsiElement(CLOSE_QUOTE)('"')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('tee')
      PsiWhiteSpace(' ')
      STRING
        PsiElement(OPEN_QUOTE)('"')
        PsiElement(STRING_CONTENT)('/etc/systemd/system/')
        PsiElement($)('$')
        SHELL_PARAMETER_EXPANSION
          PsiElement({)('{')
          PsiElement(word)('MAIN_SERVICE')
          PsiElement(})('}')
        PsiElement(STRING_CONTENT)('.service.d/add-localhost.conf')
        PsiElement(CLOSE_QUOTE)('"')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        HEREDOC
          PsiElement(HEREDOC_MARKER_TAG)('<<')
          PsiElement(HEREDOC_MARKER_START)(''EOF'')
          PsiElement(\n)('\n')
          PsiElement(HEREDOC_CONTENT)('[Unit]\nAfter=add-localhost.service\n')
          PsiElement(HEREDOC_MARKER_END)('EOF')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('systemctl')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('daemon-reload')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('systemctl')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('enable')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('add-localhost.service')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('tee')
      PsiWhiteSpace(' ')
      STRING
        PsiElement(RAW_STRING)(''/etc/add-localhost.sh'')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        HEREDOC
          PsiElement(HEREDOC_MARKER_TAG)('<<')
          PsiElement(HEREDOC_MARKER_START)(''EOF'')
          PsiElement(\n)('\n')
          PsiElement(HEREDOC_CONTENT)('#!/bin/bash\necho "========================================"\necho "$(date)"\n\nsed -ie '/127.0.0.1 ip\-/d' /etc/hosts\necho "127.0.0.1 $(hostname -s)" >> /etc/hosts;\n\n')
          PsiElement(HEREDOC_MARKER_END)('EOF')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('chmod')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('+x')
      PsiWhiteSpace(' ')
      STRING
        PsiElement(RAW_STRING)(''/etc/add-localhost.sh'')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    ASSIGNMENT_COMMAND
      LITERAL
        PsiElement(word)('ACCOUNT')
      PsiElement(=)('=')
      NUMBER
        PsiElement(int)('1000')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('tee')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('aa.prop')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        HEREDOC
          PsiElement(HEREDOC_MARKER_TAG)('<<')
          PsiElement(HEREDOC_MARKER_START)('EOF')
          PsiElement(\n)('\n')
          PsiElement(HEREDOC_CONTENT)('teamcity_agent_user="$((ACCOUNT+100))"\nteamcity_agent_user="$ACCOUNT"\nteamcity_agent_path="/opt/buildAgent"\n')
          PsiElement(HEREDOC_MARKER_END)('EOF')
  PsiElement(\n)('\n')
  PsiComment(Comment)('# teamcity_agent_user="${ACCOUNT+100}" // todo: move me back when ready')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('tee')
      PsiWhiteSpace(' ')
      LITERAL
        PsiElement(word)('empty.prop')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        HEREDOC
          PsiElement(HEREDOC_MARKER_TAG)('<<')
          PsiElement(HEREDOC_MARKER_START)('EOF')
          PsiElement(\n)('\n')
          PsiElement(HEREDOC_MARKER_END)('EOF')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiComment(Comment)('# To overwrite an existing file (or write to a new file) that you own, substituting variable references inside the heredoc:')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('cat')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        HEREDOC
          PsiElement(HEREDOC_MARKER_TAG)('<<')
          PsiWhiteSpace(' ')
          PsiElement(HEREDOC_MARKER_START)('EOF')
          PsiWhiteSpace(' ')
          COMMANDS_LIST
            GENERIC_COMMAND_DIRECTIVE
              REDIRECTION
                PsiElement(>)('>')
                PsiWhiteSpace(' ')
                PsiElement(word)('/path/to/your/file')
          PsiElement(\n)('\n')
          PsiElement(HEREDOC_CONTENT)('This line will write to the file.\n${THIS} will also write to the file, with the variable contents substituted.\n')
          PsiElement(HEREDOC_MARKER_END)('EOF')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiComment(Comment)('# To append an existing file (or write to a new file) that you own, substituting variable references inside the heredoc:')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('cat')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        HEREDOC
          PsiElement(HEREDOC_MARKER_TAG)('<<')
          PsiWhiteSpace(' ')
          PsiElement(HEREDOC_MARKER_START)('FOE')
          PsiWhiteSpace(' ')
          COMMANDS_LIST
            GENERIC_COMMAND_DIRECTIVE
              REDIRECTION
                PsiElement(>>)('>>')
                PsiWhiteSpace(' ')
                PsiElement(word)('/path/to/your/file')
          PsiElement(\n)('\n')
          PsiElement(HEREDOC_CONTENT)('This line will write to the file.\n${THIS} will also write to the file, with the variable contents substituted.\n')
          PsiElement(HEREDOC_MARKER_END)('FOE')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiComment(Comment)('# To overwrite an existing file (or write to a new file) that you own, with the literal contents of the heredoc:')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('cat')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        HEREDOC
          PsiElement(HEREDOC_MARKER_TAG)('<<')
          PsiWhiteSpace(' ')
          PsiElement(HEREDOC_MARKER_START)(''END_OF_FILE'')
          PsiWhiteSpace(' ')
          COMMANDS_LIST
            GENERIC_COMMAND_DIRECTIVE
              REDIRECTION
                PsiElement(>)('>')
                PsiWhiteSpace(' ')
                PsiElement(word)('/path/to/your/file')
          PsiElement(\n)('\n')
          PsiElement(HEREDOC_CONTENT)('This line will write to the file.\n${THIS} will also write to the file, without the variable contents substituted.\n')
          PsiElement(HEREDOC_MARKER_END)('END_OF_FILE')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiComment(Comment)('# To append an existing file (or write to a new file) that you own, with the literal contents of the heredoc:')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('cat')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        HEREDOC
          PsiElement(HEREDOC_MARKER_TAG)('<<')
          PsiWhiteSpace(' ')
          PsiElement(HEREDOC_MARKER_START)(''eof'')
          PsiWhiteSpace(' ')
          COMMANDS_LIST
            GENERIC_COMMAND_DIRECTIVE
              REDIRECTION
                PsiElement(>>)('>>')
                PsiWhiteSpace(' ')
                PsiElement(word)('/path/to/your/file')
          PsiElement(\n)('\n')
          PsiElement(HEREDOC_CONTENT)('This line will write to the file.\n${THIS} will also write to the file, without the variable contents substituted.\n')
          PsiElement(HEREDOC_MARKER_END)('eof')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiComment(Comment)('# To overwrite an existing file (or write to a new file) owned by root, substituting variable references inside the heredoc:')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('cat')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        HEREDOC
          PsiElement(HEREDOC_MARKER_TAG)('<<')
          PsiWhiteSpace(' ')
          PsiElement(HEREDOC_MARKER_START)('until_it_ends')
          PsiWhiteSpace(' ')
          PsiElement(|)('|')
          PsiWhiteSpace(' ')
          COMMANDS_LIST
            SIMPLE_COMMAND
              GENERIC_COMMAND_DIRECTIVE
                LITERAL
                  PsiElement(word)('sudo')
              PsiWhiteSpace(' ')
              LITERAL
                PsiElement(word)('tee')
              PsiWhiteSpace(' ')
              LITERAL
                PsiElement(word)('/path/to/your/file')
          PsiElement(\n)('\n')
          PsiElement(HEREDOC_CONTENT)('This line will write to the file.\n${THIS} will also write to the file, with the variable contents substituted.\n')
          PsiElement(HEREDOC_MARKER_END)('until_it_ends')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiComment(Comment)('# To append an existing file (or write to a new file) owned by user=foo, with the literal contents of the heredoc:')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('cat')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        HEREDOC
          PsiElement(HEREDOC_MARKER_TAG)('<<')
          PsiWhiteSpace(' ')
          PsiElement(HEREDOC_MARKER_START)(''Screw_you_Foo'')
          PsiWhiteSpace(' ')
          PsiElement(|)('|')
          PsiWhiteSpace(' ')
          COMMANDS_LIST
            SIMPLE_COMMAND
              GENERIC_COMMAND_DIRECTIVE
                LITERAL
                  PsiElement(word)('sudo')
              PsiWhiteSpace(' ')
              LITERAL
                PsiElement(word)('-u')
              PsiWhiteSpace(' ')
              LITERAL
                PsiElement(word)('foo')
              PsiWhiteSpace(' ')
              LITERAL
                PsiElement(word)('tee')
              PsiWhiteSpace(' ')
              LITERAL
                PsiElement(word)('-a')
              PsiWhiteSpace(' ')
              LITERAL
                PsiElement(word)('/path/to/your/file')
          PsiElement(\n)('\n')
          PsiElement(HEREDOC_CONTENT)('This line will write to the file.\n${THIS} will also write to the file, without the variable contents substituted.\n')
          PsiElement(HEREDOC_MARKER_END)('Screw_you_Foo')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    IF_COMMAND
      PsiElement(if)('if')
      PsiWhiteSpace(' ')
      COMPOUND_LIST
        GENERIC_COMMAND_DIRECTIVE
          LITERAL
            PsiElement(word)('true')
        PsiWhiteSpace(' ')
        PsiElement(;)(';')
      PsiWhiteSpace(' ')
      THEN_CLAUSE
        PsiElement(then)('then')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('    ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('cat')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND_ELEMENT
              HEREDOC
                PsiElement(HEREDOC_MARKER_TAG)('<<-')
                PsiWhiteSpace(' ')
                PsiElement(HEREDOC_MARKER_START)('EOF')
                PsiWhiteSpace(' ')
                COMMANDS_LIST
                  GENERIC_COMMAND_DIRECTIVE
                    REDIRECTION
                      PsiElement(>)('>')
                      PsiWhiteSpace(' ')
                      PsiElement(word)('/tmp/yourfilehere')
                PsiElement(\n)('\n')
                PsiElement(HEREDOC_CONTENT)('    The leading tab is ignored.\n')
                PsiElement(HEREDOC_MARKER_END)('EOF')
          PsiElement(\n)('\n')
      PsiElement(fi)('fi')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('cat')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        HEREDOC
          PsiElement(HEREDOC_MARKER_TAG)('<<')
          PsiWhiteSpace(' ')
          PsiElement(HEREDOC_MARKER_START)('EOF')
          PsiWhiteSpace(' ')
          PsiElement(|)('|')
          PsiWhiteSpace(' ')
          COMMANDS_LIST
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('fmt')
            PsiWhiteSpace(' ')
            PsiElement(|)('|')
            PsiWhiteSpace(' ')
            SIMPLE_COMMAND
              GENERIC_COMMAND_DIRECTIVE
                LITERAL
                  PsiElement(word)('mail')
              PsiWhiteSpace(' ')
              LITERAL
                PsiElement(word)('-s')
              PsiWhiteSpace(' ')
              STRING
                PsiElement(OPEN_QUOTE)('"')
                PsiElement(STRING_CONTENT)('Warning: ')
                VARIABLE
                  PsiElement(var)('$account')
                PsiElement(STRING_CONTENT)(' Exceeds Quota')
                PsiElement(CLOSE_QUOTE)('"')
              PsiWhiteSpace(' ')
              VARIABLE
                PsiElement(var)('$account')
          PsiElement(\n)('\n')
          PsiElement(HEREDOC_CONTENT)('Your disk usage is ${usage}MB but you have only been allocated\n${MAXDISKUSAGE}MB.\n')
          PsiElement(HEREDOC_MARKER_END)('EOF')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('cat')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        HEREDOC
          PsiElement(HEREDOC_MARKER_TAG)('<<')
          PsiWhiteSpace(' ')
          PsiElement(HEREDOC_MARKER_START)('EOF')
          PsiWhiteSpace(' ')
          COMMANDS_LIST
            GENERIC_COMMAND_DIRECTIVE
              REDIRECTION
                PsiElement(>)('>')
                PsiWhiteSpace(' ')
                PsiElement(word)('exp')
            PsiWhiteSpace(' ')
            PsiElement(||)('||')
            PsiWhiteSpace(' ')
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('framework_failure_')
          PsiElement(\n)('\n')
          PsiElement(HEREDOC_CONTENT)('  text example\n')
          PsiElement(HEREDOC_MARKER_END)('EOF')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('cat')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        HEREDOC
          PsiElement(HEREDOC_MARKER_TAG)('<<')
          PsiElement(HEREDOC_MARKER_START)('EO\\F')
          PsiElement(\n)('\n')
          PsiElement(HEREDOC_CONTENT)('ginstall: creating directory 'sub3'\n')
          PsiElement(HEREDOC_MARKER_END)('EO\F')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiWhiteSpace('\t')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('cat')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        HEREDOC
          PsiElement(HEREDOC_MARKER_TAG)('<<-')
          PsiElement(HEREDOC_MARKER_START)('\EOF')
          PsiElement(\n)('\n')
          PsiElement(HEREDOC_CONTENT)('\t\t#\n\t\t# THIS FILE IS AUTOGENERATED;\n\t\t#\n\t\techo "Example"\n\t')
          PsiElement(HEREDOC_MARKER_END)('EOF')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('cat')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        HEREDOC
          PsiElement(HEREDOC_MARKER_TAG)('<<-')
          PsiWhiteSpace(' ')
          PsiElement(HEREDOC_MARKER_START)(''DONE'')
          PsiWhiteSpace(' ')
          PsiElement(|)('|')
          PsiElement(\n)('\n')
          PsiElement(HEREDOC_CONTENT)('echo\n')
          PsiElement(HEREDOC_MARKER_END)('DONE')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('cat')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        REDIRECTION
          PsiElement(>>)('>>')
          PsiWhiteSpace(' ')
          PsiElement(word)('WORKSPACE')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        HEREDOC
          PsiElement(HEREDOC_MARKER_TAG)('<<')
          PsiElement(HEREDOC_MARKER_START)(''EOF'')
          PsiWhiteSpace(' ')
          PsiElement(||)('||')
          PsiWhiteSpace(' ')
          COMMANDS_LIST
            SIMPLE_COMMAND
              GENERIC_COMMAND_DIRECTIVE
                LITERAL
                  PsiElement(word)('fail')
              PsiWhiteSpace(' ')
              STRING
                PsiElement(OPEN_QUOTE)('"')
                PsiElement(STRING_CONTENT)('Couldn't cat')
                PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiElement(HEREDOC_CONTENT)('android_sdk_repository(\n    name = "androidsdk",\n    path = "/fake/path",\n    api_level = 23,\n    build_tools_version="23.0.0"\n)\n')
          PsiElement(HEREDOC_MARKER_END)('EOF')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('dist/build/shellcheck/shellcheck')
      PsiWhiteSpace(' ')
      SIMPLE_COMMAND_ELEMENT
        HEREDOC
          PsiElement(HEREDOC_MARKER_TAG)('<<')
          PsiWhiteSpace(' ')
          PsiElement(HEREDOC_MARKER_START)(''EOF'')
          PsiWhiteSpace(' ')
          PsiElement(||)('||')
          PsiWhiteSpace(' ')
          COMMANDS_LIST
            SIMPLE_COMMAND
              GENERIC_COMMAND_DIRECTIVE
                LITERAL
                  PsiElement(word)('die')
              PsiWhiteSpace(' ')
              STRING
                PsiElement(OPEN_QUOTE)('"')
                PsiElement(STRING_CONTENT)('execution failed')
                PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiElement(HEREDOC_CONTENT)('#!/bin/sh\necho "Hello World"\n')
          PsiElement(HEREDOC_MARKER_END)('EOF')