Groovy script
  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\n  ')
      Method
        Modifiers
          <empty list>
        Built in type
          PsiElement(void)('void')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('foo')
        Parameter list
          PsiElement(()('(')
          PsiElement())(')')
        Throw clause
          <empty list>
        PsiWhiteSpace(' ')
        Open block
          PsiElement({)('{')
          PsiWhiteSpace('\n    ')
          Method call
            Reference expression
              PsiElement(identifier)('id0')
            Arguments
              PsiElement(()('(')
              Method call
                Reference expression
                  PsiElement(identifier)('id1')
                Arguments
                  <empty list>
                Closable block
                  PsiElement({)('{')
                  Parameter list
                    <empty list>
                  Reference expression
                    PsiElement(identifier)('id2')
                  PsiElement(new line)('\n  ')
                  PsiElement(})('}')
                PsiElement(new line)('\n\n   ')
                Closable block
                  PsiElement({)('{')
                  PsiWhiteSpace('\n    ')
                  Parameter list
                    <empty list>
                  Method call
                    Reference expression
                      PsiElement(identifier)('id3')
                    Arguments
                      PsiElement(()('(')
                      PsiErrorElement:')' expected, got '}'
                        <empty list>
                  PsiElement(})('}')
              PsiErrorElement:')' or ',' expected
                <empty list>
          PsiElement(new line)('\n  ')
          PsiElement(})('}')
      PsiElement(new line)('\n\n  ')
      Method
        Modifiers
          <empty list>
        Built in type
          PsiElement(void)('void')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('bar')
        Parameter list
          PsiElement(()('(')
          PsiElement())(')')
        Throw clause
          <empty list>
        PsiWhiteSpace(' ')
        Open block
          PsiElement({)('{')
          PsiElement(})('}')
      PsiElement(new line)('\n')
      PsiElement(})('}')
  PsiElement(new line)('\n')
---
Groovy script
  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\n  ')
      Method
        Modifiers
          <empty list>
        Built in type
          PsiElement(void)('void')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('foo')
        Parameter list
          PsiElement(()('(')
          PsiElement())(')')
        Throw clause
          <empty list>
        PsiWhiteSpace(' ')
        Open block
          PsiElement({)('{')
          PsiWhiteSpace('\n    ')
          Method call
            Reference expression
              PsiElement(identifier)('id0')
            Arguments
              PsiElement(()('(')
              Method call
                Reference expression
                  PsiElement(identifier)('id1')
                Arguments
                  <empty list>
                Closable block
                  PsiElement({)('{')
                  Parameter list
                    <empty list>
                  Reference expression
                    PsiElement(identifier)('id2')
                  PsiElement(new line)('\n  ')
                  PsiElement(})('}')
              PsiErrorElement:')' or ',' expected
                <empty list>
          PsiElement(new line)('\n\n  \n  ')
          PsiElement(})('}')
      PsiElement(new line)('\n\n  ')
      Method
        Modifiers
          <empty list>
        Built in type
          PsiElement(void)('void')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('bar')
        Parameter list
          PsiElement(()('(')
          PsiElement())(')')
        Throw clause
          <empty list>
        PsiWhiteSpace(' ')
        Open block
          PsiElement({)('{')
          PsiElement(})('}')
      PsiElement(new line)('\n')
      PsiElement(})('}')
  PsiElement(new line)('\n')