protected synchronized String a (Object param)
-----
Groovy script
  Method
    Modifiers
      PsiElement(protected)('protected')
      PsiWhiteSpace(' ')
      PsiElement(synchronized)('synchronized')
    PsiWhiteSpace(' ')
    Type element
      Reference element
        PsiElement(identifier)('String')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('a')
    PsiWhiteSpace(' ')
    PsiElement(()('(')
    Parameter list
      Parameter
        Modifiers
          <empty list>
        Type element
          Reference element
            PsiElement(identifier)('Object')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('param')
    PsiElement())(')')
    Throw clause
      <empty list>