Groovy script
  PsiElement(new line)('\n  ')
  Method
    Modifiers
      PsiElement(def)('def')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('foo')
    PsiElement(()('(')
    Parameter list
      <empty list>
    PsiElement())(')')
    PsiWhiteSpace(' ')
    Throw clause
      <empty list>
    Open block
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      Switch statement
        PsiElement(switch)('switch')
        PsiElement(()('(')
        Reference expression
          PsiElement(identifier)('x')
        PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement({)('{')
        PsiWhiteSpace('\n      ')
        Case section
          Case label
            PsiElement(case)('case')
            PsiWhiteSpace(' ')
            Literal
              PsiElement(Integer)('2')
            PsiElement(:)(':')
          PsiElement(new line)('\n        ')
          RETURN statement
            PsiElement(return)('return')
        PsiWhiteSpace(' ')
        PsiElement(new line)('\n      ')
        Case section
          Case label
            PsiElement(case)('case')
            PsiWhiteSpace(' ')
            Literal
              PsiElement(Integer)('3')
            PsiElement(:)(':')
          PsiElement(new line)('\n        ')
          RETURN statement
            PsiElement(return)('return')
            PsiWhiteSpace(' ')
            Literal
              PsiElement(false)('false')
        PsiElement(new line)('\n      ')
        Case section
          Case label
            PsiElement(case)('case')
            PsiWhiteSpace(' ')
            Literal
              PsiElement(Integer)('4')
            PsiElement(:)(':')
          PsiElement(new line)('\n        ')
          RETURN statement
            PsiElement(return)('return')
            PsiWhiteSpace(' ')
            Literal
              PsiElement(false)('false')
        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')
    PsiElement(()('(')
    Parameter list
      <empty list>
    PsiElement())(')')
    PsiWhiteSpace(' ')
    Throw clause
      <empty list>
    Open block
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      Switch statement
        PsiElement(switch)('switch')
        PsiElement(()('(')
        Reference expression
          PsiElement(identifier)('x')
        PsiElement())(')')
        PsiWhiteSpace(' ')
        PsiElement({)('{')
        PsiWhiteSpace('\n      ')
        Case section
          Case label
            PsiElement(case)('case')
            PsiWhiteSpace(' ')
            Literal
              PsiElement(Integer)('2')
            PsiElement(:)(':')
          PsiElement(new line)('\n        ')
          RETURN statement
            PsiElement(return)('return')
            PsiWhiteSpace(' ')
            Reference expression
              Reference expression
                PsiElement(identifier)('foo')
              PsiElement(.)('.')
              PsiElement(new line)('\n      ')
              PsiElement(case)('case')
          PsiErrorElement:';', '}' or new line expected
            <empty list>
          PsiWhiteSpace(' ')
          Literal
            PsiElement(Integer)('3')
          PsiErrorElement:';', '}' or new line expected
            <empty list>
          PsiElement(:)(':')
          PsiErrorElement:Wrong statement
            <empty list>
          PsiElement(new line)('\n        ')
          RETURN statement
            PsiElement(return)('return')
            PsiWhiteSpace(' ')
            Literal
              PsiElement(false)('false')
        PsiElement(new line)('\n      ')
        Case section
          Case label
            PsiElement(case)('case')
            PsiWhiteSpace(' ')
            Literal
              PsiElement(Integer)('4')
            PsiElement(:)(':')
          PsiElement(new line)('\n        ')
          RETURN statement
            PsiElement(return)('return')
            PsiWhiteSpace(' ')
            Literal
              PsiElement(false)('false')
        PsiElement(new line)('\n    ')
        PsiElement(})('}')
      PsiElement(new line)('\n  ')
      PsiElement(})('}')
  PsiElement(new line)('\n')