void stat() {
    def status = [:]
    try {} catch (Exception e){}
    return status
}
-----
Groovy script
  Method
    Modifiers
      <empty list>
    Built in type
      PsiElement(void)('void')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('stat')
    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)('status')
          PsiWhiteSpace(' ')
          PsiElement(=)('=')
          PsiWhiteSpace(' ')
          Generalized list
            PsiElement([)('[')
            PsiElement(:)(':')
            PsiElement(])(']')
      PsiElement(new line)('\n    ')
      Try statement
        PsiElement(try)('try')
        PsiWhiteSpace(' ')
        Open block
          PsiElement({)('{')
          PsiElement(})('}')
        PsiWhiteSpace(' ')
        Catch clause
          PsiElement(catch)('catch')
          PsiWhiteSpace(' ')
          PsiElement(()('(')
          Parameter
            Modifiers
              <empty list>
            Type element
              Reference element
                PsiElement(identifier)('Exception')
            PsiWhiteSpace(' ')
            PsiElement(identifier)('e')
          PsiElement())(')')
          Open block
            PsiElement({)('{')
            PsiElement(})('}')
      PsiElement(new line)('\n    ')
      RETURN statement
        PsiElement(return)('return')
        PsiWhiteSpace(' ')
        Reference expression
          PsiElement(identifier)('status')
      PsiElement(new line)('\n')
      PsiElement(})('}')