Groovy script
  PsiElement(new line)('\n')
  Method
    Modifiers
      PsiElement(def)('def')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('foo')
    Parameter list
      PsiElement(()('(')
      PsiElement())(')')
    Throw clause
      <empty list>
    PsiWhiteSpace(' ')
    Open block
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      Switch statement
        PsiElement(switch)('switch')
        PsiWhiteSpace(' ')
        PsiElement(()('(')
        Reference expression
          PsiElement(identifier)('word')
        PsiErrorElement:')' expected, got 'w'
          <empty list>
      PsiWhiteSpace(' ')
      Call expression
        Reference expression
          PsiElement(identifier)('w')
        PsiWhiteSpace(' ')
        Command arguments
          Reference expression
            PsiElement(identifier)('w')
      PsiErrorElement:',' expected, got ')'
        PsiElement())(')')
      PsiWhiteSpace(' ')
      Block statement
        Open block
          PsiElement({)('{')
          PsiWhiteSpace('\n      ')
          PsiErrorElement:';', <statement> or new line expected, got 'case'
            PsiElement(case)('case')
          PsiWhiteSpace(' ')
          Literal
            PsiElement(Integer)('2')
          PsiErrorElement:':' unexpected
            PsiElement(:)(':')
          PsiElement(new line)('\n        ')
          Variable definitions
            Modifiers
              PsiElement(def)('def')
            PsiWhiteSpace(' ')
            Variable
              PsiElement(identifier)('x')
              PsiWhiteSpace(' ')
              PsiElement(=)('=')
              PsiWhiteSpace(' ')
              Parenthesized expression
                PsiElement(()('(')
                Reference expression
                  PsiElement(identifier)('y')
                PsiElement())(')')
          PsiElement(new line)('\n    ')
          PsiElement(})('}')
      PsiElement(new line)('\n  ')
      PsiElement(})('}')
  PsiElement(new line)('\n')
---
Groovy script
  PsiElement(new line)('\n')
  Method
    Modifiers
      PsiElement(def)('def')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('foo')
    Parameter list
      PsiElement(()('(')
      PsiElement())(')')
    Throw clause
      <empty list>
    PsiWhiteSpace(' ')
    Open block
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      Switch statement
        PsiElement(switch)('switch')
        PsiWhiteSpace(' ')
        PsiElement(()('(')
        Reference expression
          PsiElement(identifier)('word')
        PsiErrorElement:')' expected, got 'w'
          <empty list>
      PsiWhiteSpace(' ')
      Call expression
        Reference expression
          PsiElement(identifier)('w')
        PsiWhiteSpace(' ')
        Command arguments
          Method call
            Reference expression
              PsiElement(identifier)('w')
            PsiWhiteSpace(' ')
            Arguments
              <empty list>
            Closable block
              PsiElement({)('{')
              PsiWhiteSpace('\n      ')
              Parameter list
                <empty list>
              PsiErrorElement:'->', ';', <statement>, identifier or new line expected, got 'case'
                PsiElement(case)('case')
              PsiWhiteSpace(' ')
              Literal
                PsiElement(Integer)('2')
              PsiErrorElement:':' unexpected
                PsiElement(:)(':')
              PsiElement(new line)('\n        ')
              Variable definitions
                Modifiers
                  PsiElement(def)('def')
                PsiWhiteSpace(' ')
                Variable
                  PsiElement(identifier)('x')
                  PsiWhiteSpace(' ')
                  PsiElement(=)('=')
                  PsiWhiteSpace(' ')
                  Parenthesized expression
                    PsiElement(()('(')
                    Reference expression
                      PsiElement(identifier)('y')
                    PsiElement())(')')
              PsiElement(new line)('\n    ')
              PsiElement(})('}')
      PsiElement(new line)('\n  ')
      PsiElement(})('}')
  PsiElement(new line)('\n')