SHELL_SCRIPT
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(word)('wait_file')
      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)('file')
                PsiElement(=)('=')
                STRING
                  PsiElement(OPEN_QUOTE)('"')
                  VARIABLE
                    PsiElement(var)('$1')
                  PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiWhiteSpace('  ')
          UNTIL_COMMAND
            PsiElement(until)('until')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              TEST_COMMAND
                PsiElement(test)('test')
                PsiWhiteSpace(' ')
                SIMPLE_COMMAND_ELEMENT
                  PsiElement($)('$')
                  ARITHMETIC_EXPANSION
                    PsiElement(()('(')
                    PsiElement(()('(')
                    POST_EXPRESSION
                      LITERAL_EXPRESSION
                        PsiElement(word)('wait_seconds')
                      PsiElement(--)('--')
                    PsiElement())(')')
                    PsiElement())(')')
                PsiWhiteSpace(' ')
                LITERAL
                  PsiElement(word)('-eq')
                PsiWhiteSpace(' ')
                NUMBER
                  PsiElement(int)('0')
                PsiWhiteSpace(' ')
                LITERAL
                  PsiElement(word)('-o')
                PsiWhiteSpace(' ')
                LITERAL
                  PsiElement(word)('-f')
                PsiWhiteSpace(' ')
                STRING
                  PsiElement(OPEN_QUOTE)('"')
                  VARIABLE
                    PsiElement(var)('$file')
                  PsiElement(CLOSE_QUOTE)('"')
              PsiWhiteSpace(' ')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            DO_BLOCK
              PsiElement(do)('do')
              PsiWhiteSpace(' ')
              COMPOUND_LIST
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('sleep')
                  PsiWhiteSpace(' ')
                  NUMBER
                    PsiElement(int)('1')
                PsiElement(;)(';')
              PsiWhiteSpace(' ')
              PsiElement(done)('done')
          PsiElement(\n)('\n')
          PsiComment(Comment)('#  ((++wait_seconds))')
          PsiElement(\n)('\n')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('wait_file')
      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)('file')
                PsiElement(=)('=')
                STRING
                  PsiElement(OPEN_QUOTE)('"')
                  VARIABLE
                    PsiElement(var)('$1')
                  PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiWhiteSpace('  ')
          UNTIL_COMMAND
            PsiElement(until)('until')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              TEST_COMMAND
                PsiElement(test)('test')
                PsiWhiteSpace(' ')
                SIMPLE_COMMAND_ELEMENT
                  PsiElement($)('$')
                  ARITHMETIC_EXPANSION
                    PsiElement(()('(')
                    PsiElement(()('(')
                    POST_EXPRESSION
                      LITERAL_EXPRESSION
                        PsiElement(word)('wait_seconds')
                      PsiElement(--)('--')
                    PsiElement())(')')
                    PsiElement())(')')
                PsiWhiteSpace(' ')
                LITERAL
                  PsiElement(word)('-eq')
                PsiWhiteSpace(' ')
                NUMBER
                  PsiElement(int)('0')
                PsiWhiteSpace(' ')
                LITERAL
                  PsiElement(word)('-o')
                PsiWhiteSpace(' ')
                LITERAL
                  PsiElement(word)('-f')
                PsiWhiteSpace(' ')
                STRING
                  PsiElement(OPEN_QUOTE)('"')
                  VARIABLE
                    PsiElement(var)('$file')
                  PsiElement(CLOSE_QUOTE)('"')
              PsiWhiteSpace(' ')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            DO_BLOCK
              PsiElement(do)('do')
              PsiWhiteSpace(' ')
              COMPOUND_LIST
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('sleep')
                  PsiWhiteSpace(' ')
                  NUMBER
                    PsiElement(int)('1')
                PsiElement(;)(';')
              PsiWhiteSpace(' ')
              PsiElement(done)('done')
          PsiElement(\n)('\n')
          PsiComment(Comment)('#  ((++wait_seconds))')
          PsiElement(\n)('\n')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('wait_file')
      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)('file')
                PsiElement(=)('=')
                STRING
                  PsiElement(OPEN_QUOTE)('"')
                  VARIABLE
                    PsiElement(var)('$1')
                  PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
          PsiWhiteSpace('  ')
          UNTIL_COMMAND
            PsiElement(until)('until')
            PsiWhiteSpace(' ')
            COMPOUND_LIST
              TEST_COMMAND
                PsiElement(test)('test')
                PsiWhiteSpace(' ')
                SIMPLE_COMMAND_ELEMENT
                  PsiElement($)('$')
                  ARITHMETIC_EXPANSION
                    PsiElement(()('(')
                    PsiElement(()('(')
                    POST_EXPRESSION
                      LITERAL_EXPRESSION
                        PsiElement(word)('wait_seconds')
                      PsiElement(--)('--')
                    PsiElement())(')')
                    PsiElement())(')')
                PsiWhiteSpace(' ')
                LITERAL
                  PsiElement(word)('-eq')
                PsiWhiteSpace(' ')
                NUMBER
                  PsiElement(int)('0')
                PsiWhiteSpace(' ')
                LITERAL
                  PsiElement(word)('-o')
                PsiWhiteSpace(' ')
                LITERAL
                  PsiElement(word)('-f')
                PsiWhiteSpace(' ')
                STRING
                  PsiElement(OPEN_QUOTE)('"')
                  VARIABLE
                    PsiElement(var)('$file')
                  PsiElement(CLOSE_QUOTE)('"')
              PsiWhiteSpace(' ')
              PsiElement(;)(';')
            PsiWhiteSpace(' ')
            DO_BLOCK
              PsiElement(do)('do')
              PsiWhiteSpace(' ')
              COMPOUND_LIST
                SIMPLE_COMMAND
                  GENERIC_COMMAND_DIRECTIVE
                    LITERAL
                      PsiElement(word)('sleep')
                  PsiWhiteSpace(' ')
                  NUMBER
                    PsiElement(int)('1')
                PsiElement(;)(';')
              PsiWhiteSpace(' ')
              PsiElement(done)('done')
          PsiElement(\n)('\n')
          PsiComment(Comment)('#  ((++wait_seconds))')
          PsiElement(\n)('\n')
        PsiElement(})('}')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(word)('varr')
      PsiElement(()('(')
      PsiWhiteSpace('     ')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      BLOCK
        PsiElement({)('{')
        PsiWhiteSpace(' ')
        COMPOUND_LIST
          GENERIC_COMMAND_DIRECTIVE
            STRING
              PsiElement(RAW_STRING)('''')
          PsiElement(\n)('\n')
        PsiElement(})('}')
    PsiWhiteSpace(' ')
    PsiElement(|)('|')
    PsiWhiteSpace(' ')
    SIMPLE_COMMAND
      GENERIC_COMMAND_DIRECTIVE
        LITERAL
          PsiElement(word)('echo')
      PsiWhiteSpace(' ')
      NUMBER
        PsiElement(int)('1')
  PsiWhiteSpace(' ')
  PsiComment(Comment)('# what a wonderful language')
  PsiElement(\n)('\n')
  PsiElement(\n)('\n')
  PsiComment(Comment)('# Fix for IDEA-261684')
  PsiElement(\n)('\n')
  COMMANDS_LIST
    FUNCTION_DEFINITION
      PsiElement(function)('function')
      PsiWhiteSpace(' ')
      PsiElement(word)('func_parentheses')
      PsiElement(()('(')
      PsiElement())(')')
      PsiWhiteSpace(' ')
      PARENTHESES_BLOCK
        PsiElement(()('(')
        COMPOUND_LIST
          PsiElement(\n)('\n')
          PsiWhiteSpace('  ')
          SIMPLE_COMMAND
            GENERIC_COMMAND_DIRECTIVE
              LITERAL
                PsiElement(word)('echo')
            PsiWhiteSpace(' ')
            STRING
              PsiElement(OPEN_QUOTE)('"')
              PsiElement(STRING_CONTENT)('foo bar')
              PsiElement(CLOSE_QUOTE)('"')
          PsiElement(\n)('\n')
        PsiElement())(')')