class A {
    public <T> foo b() {

    }
}
-----
Groovy script
  Class definition
    Modifiers
      <empty list>
    PsiElement(class)('class')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('A')
    Extends clause
      <empty list>
    Implements clause
      <empty list>
    PsiWhiteSpace(' ')
    Type definition body
      PsiElement({)('{')
      PsiWhiteSpace('\n    ')
      Method
        Modifiers
          PsiElement(public)('public')
        PsiWhiteSpace(' ')
        Type parameter list
          PsiElement(<)('<')
          Type parameter
            PsiElement(identifier)('T')
            Type extends bounds list
              <empty list>
          PsiElement(>)('>')
        PsiWhiteSpace(' ')
        Type element
          Reference element
            PsiElement(identifier)('foo')
        PsiWhiteSpace(' ')
        PsiElement(identifier)('b')
        PsiElement(()('(')
        Parameter list
          <empty list>
        PsiElement())(')')
        Throw clause
          <empty list>
        PsiWhiteSpace(' ')
        Open block
          PsiElement({)('{')
          PsiWhiteSpace('\n\n    ')
          PsiElement(})('}')
      PsiElement(new line)('\n')
      PsiElement(})('}')