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    ')
      Variable definitions
        Modifiers
          <empty list>
        Type element
          Reference element
            PsiElement(identifier)('String')
        PsiWhiteSpace(' ')
        Variable
          PsiElement(identifier)('home')
      PsiElement(new line)('\n    ')
      Method call
        Reference expression
          Reference expression
            PsiElement(identifier)('simplePlugins')
          PsiElement(.)('.')
          PsiElement(identifier)('each')
        PsiWhiteSpace(' ')
        Arguments
          <empty list>
        Closable block
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          Parameter list
            <empty list>
          Call expression
            Reference expression
              PsiElement(identifier)('layoutPlugin')
            PsiWhiteSpace(' ')
            Command arguments
              Reference expression
                PsiElement(identifier)('it')
          PsiElement(new line)('\n    ')
          PsiElement(})('}')
      PsiElement(new line)('\n\n')
      PsiElement(})('}')
  PsiElement(new line)('\n')
  PsiErrorElement:';', <statement> or new line expected, got '}'
    PsiElement(})('}')
---
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    ')
      Method call
        Reference expression
          Parenthesized expression
            PsiElement(()('(')
            Reference expression
              Call expression
                Reference expression
                  PsiElement(identifier)('String')
                PsiWhiteSpace(' ')
                Command arguments
                  Reference expression
                    PsiElement(identifier)('home')
              PsiElement(new line)('\n    ')
              PsiElement(identifier)('simplePlugins')
            PsiErrorElement:')' expected, got '.'
              <empty list>
          PsiElement(.)('.')
          PsiElement(identifier)('each')
        PsiWhiteSpace(' ')
        Arguments
          <empty list>
        Closable block
          PsiElement({)('{')
          PsiWhiteSpace('\n        ')
          Parameter list
            <empty list>
          Call expression
            Reference expression
              PsiElement(identifier)('layoutPlugin')
            PsiWhiteSpace(' ')
            Command arguments
              Reference expression
                PsiElement(identifier)('it')
          PsiElement(new line)('\n    ')
          PsiElement(})('}')
      PsiElement(new line)('\n\n')
      PsiElement(})('}')
  PsiElement(new line)('\n')
  PsiErrorElement:';', <statement> or new line expected, got '}'
    PsiElement(})('}')