Groovy script
  PsiElement(new line)('\n')
  Method
    Modifiers
      PsiElement(def)('def')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('foo')
    PsiElement(()('(')
    Parameter list
      <empty list>
    PsiElement())(')')
    Throw clause
      <empty list>
    PsiWhiteSpace(' ')
    Open block
      PsiElement({)('{')
      PsiWhiteSpace('\n  ')
      Variable definitions
        Modifiers
          PsiElement(def)('def')
        PsiWhiteSpace(' ')
        Variable
          PsiElement(identifier)('cl')
          PsiWhiteSpace(' ')
          PsiElement(=)('=')
          PsiWhiteSpace(' ')
          Closable block
            PsiElement({)('{')
            PsiWhiteSpace('\n    ')
            Parameter list
              <empty list>
            Synchronized statement
              PsiElement(synchronized)('synchronized')
              PsiWhiteSpace(' ')
              PsiElement(()('(')
              Method call
                Reference expression
                  PsiElement(identifier)('x')
                PsiWhiteSpace(' ')
                Arguments
                  <empty list>
                Closable block
                  PsiElement({)('{')
                  PsiWhiteSpace('\n      ')
                  PsiComment(line comment)('//')
                  PsiElement(new line)('\n    ')
                  Parameter list
                    <empty list>
                  PsiElement(})('}')
              PsiErrorElement:')' expected
                <empty list>
            PsiWhiteSpace('\n  ')
            PsiElement(})('}')
      PsiElement(new line)('\n')
      PsiElement(})('}')
---
Groovy script
  PsiElement(new line)('\n')
  Method
    Modifiers
      PsiElement(def)('def')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('foo')
    PsiElement(()('(')
    Parameter list
      <empty list>
    PsiElement())(')')
    Throw clause
      <empty list>
    PsiWhiteSpace(' ')
    Open block
      PsiElement({)('{')
      PsiWhiteSpace('\n  ')
      Variable definitions
        Modifiers
          PsiElement(def)('def')
        PsiWhiteSpace(' ')
        Variable
          PsiElement(identifier)('cl')
          PsiWhiteSpace(' ')
          PsiElement(=)('=')
          PsiWhiteSpace(' ')
          Closable block
            PsiElement({)('{')
            PsiWhiteSpace('\n    ')
            Parameter list
              <empty list>
            Synchronized statement
              PsiElement(synchronized)('synchronized')
              PsiWhiteSpace(' ')
              PsiElement(()('(')
              Reference expression
                PsiElement(identifier)('x')
              PsiErrorElement:')' expected
                <empty list>
            PsiElement(;)(';')
            PsiWhiteSpace(' ')
            Closable block
              PsiElement({)('{')
              PsiWhiteSpace('\n      ')
              PsiComment(line comment)('//')
              PsiElement(new line)('\n    ')
              Parameter list
                <empty list>
              PsiElement(})('}')
            PsiWhiteSpace('\n  ')
            PsiElement(})('}')
      PsiElement(new line)('\n')
      PsiElement(})('}')