Groovy script
  PsiElement(new line)('\n')
  Class definition
    Modifiers
      <empty list>
    PsiElement(class)('class')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('a')
    Extends clause
      <empty list>
    Implements clause
      <empty list>
    Permits clause
      <empty list>
    PsiWhiteSpace(' ')
    Type definition body
      PsiElement({)('{')
      PsiWhiteSpace('\n  ')
      Method
        Modifiers
          PsiElement(def)('def')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('foo')
        Parameter list
          PsiElement(()('(')
          PsiElement())(')')
        Throw clause
          <empty list>
        PsiWhiteSpace(' ')
        Open block
          PsiElement({)('{')
          PsiWhiteSpace('\n    ')
          Method call
            Reference expression
              PsiElement(identifier)('bar')
            Arguments
              PsiElement(()('(')
              Call expression
                Literal
                  PsiElement(double quoted string)('""')
                Command arguments
                  Reference expression
                    PsiElement(identifier)('aaa')
              PsiErrorElement:')' or ',' expected, got '"'
                <empty list>
              Compound Gstring
                PsiElement(Gstring begin)('"')
                GrStringContentImpl(STRING_CONTENT)
                  PsiElement(Gstring content)(')')
                PsiErrorElement:Gstring end expected
                  <empty list>
          PsiElement(new line)('\n  ')
          PsiElement(})('}')
      PsiElement(new line)('\n\n  ')
      Method
        Modifiers
          PsiElement(def)('def')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('bar')
        Parameter list
          PsiElement(()('(')
          PsiElement())(')')
        Throw clause
          <empty list>
        PsiWhiteSpace(' ')
        Open block
          PsiElement({)('{')
          PsiWhiteSpace('\n    ')
          Method call
            Reference expression
              PsiElement(identifier)('zoo')
            Arguments
              PsiElement(()('(')
              PsiElement())(')')
          PsiElement(new line)('\n  ')
          PsiElement(})('}')
      PsiElement(new line)('\n')
      PsiElement(})('}')
  PsiElement(new line)('\n')
---
Groovy script
  PsiElement(new line)('\n')
  Class definition
    Modifiers
      <empty list>
    PsiElement(class)('class')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('a')
    Extends clause
      <empty list>
    Implements clause
      <empty list>
    Permits clause
      <empty list>
    PsiWhiteSpace(' ')
    Type definition body
      PsiElement({)('{')
      PsiWhiteSpace('\n  ')
      Method
        Modifiers
          PsiElement(def)('def')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('foo')
        Parameter list
          PsiElement(()('(')
          PsiElement())(')')
        Throw clause
          <empty list>
        PsiWhiteSpace(' ')
        Open block
          PsiElement({)('{')
          PsiWhiteSpace('\n    ')
          Method call
            Reference expression
              PsiElement(identifier)('bar')
            Arguments
              PsiElement(()('(')
              Literal
                PsiElement(double quoted string)('"aaa"')
              PsiElement())(')')
          PsiElement(new line)('\n  ')
          PsiElement(})('}')
      PsiElement(new line)('\n\n  ')
      Method
        Modifiers
          PsiElement(def)('def')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('bar')
        Parameter list
          PsiElement(()('(')
          PsiElement())(')')
        Throw clause
          <empty list>
        PsiWhiteSpace(' ')
        Open block
          PsiElement({)('{')
          PsiWhiteSpace('\n    ')
          Method call
            Reference expression
              PsiElement(identifier)('zoo')
            Arguments
              PsiElement(()('(')
              PsiElement())(')')
          PsiElement(new line)('\n  ')
          PsiElement(})('}')
      PsiElement(new line)('\n')
      PsiElement(})('}')
  PsiElement(new line)('\n')