PsiJavaFile:Pines.java
  PsiImportList
    <empty list>
  PsiClass:A
    PsiModifierList:
      <empty list>
    PsiKeyword:class('class')
    PsiWhiteSpace(' ')
    PsiIdentifier:A('A')
    PsiTypeParameterList
      PsiJavaToken:LT('<')
      PsiTypeParameter:T
        PsiIdentifier:T('T')
        PsiWhiteSpace(' ')
        PsiElement(EXTENDS_BOUND_LIST)
          PsiKeyword:extends('extends')
          PsiWhiteSpace(' ')
          PsiJavaCodeReferenceElement:List<String>
            PsiIdentifier:List('List')
            PsiReferenceParameterList
              PsiJavaToken:LT('<')
              PsiTypeElement:String
                PsiJavaCodeReferenceElement:String
                  PsiIdentifier:String('String')
                  PsiReferenceParameterList
                    <empty list>
              PsiJavaToken:GT('>')
      PsiJavaToken:GT('>')
    PsiWhiteSpace(' ')
    PsiReferenceList
      PsiKeyword:extends('extends')
      PsiWhiteSpace(' ')
      PsiJavaCodeReferenceElement:List<List<Integer>>
        PsiIdentifier:List('List')
        PsiReferenceParameterList
          PsiJavaToken:LT('<')
          PsiTypeElement:List<Integer>
            PsiJavaCodeReferenceElement:List<Integer>
              PsiIdentifier:List('List')
              PsiReferenceParameterList
                PsiJavaToken:LT('<')
                PsiTypeElement:Integer
                  PsiJavaCodeReferenceElement:Integer
                    PsiIdentifier:Integer('Integer')
                    PsiReferenceParameterList
                      <empty list>
                PsiJavaToken:GT('>')
          PsiJavaToken:GT('>')
    PsiReferenceList
      <empty list>
    PsiWhiteSpace(' ')
    PsiJavaToken:LBRACE('{')
    PsiWhiteSpace('\n    ')
    PsiMethod:method
      PsiModifierList:
        <empty list>
      PsiTypeParameterList
        <empty list>
      PsiTypeElement:int
        PsiKeyword:int('int')
      PsiWhiteSpace(' ')
      PsiIdentifier:method('method')
      PsiParameterList:(T x)
        PsiJavaToken:LPARENTH('(')
        PsiParameter:x
          PsiModifierList:
            <empty list>
          PsiTypeElement:T
            PsiJavaCodeReferenceElement:T
              PsiIdentifier:T('T')
              PsiReferenceParameterList
                <empty list>
          PsiWhiteSpace(' ')
          PsiIdentifier:x('x')
        PsiJavaToken:RPARENTH(')')
      PsiReferenceList
        <empty list>
      PsiWhiteSpace('  ')
      PsiCodeBlock
        PsiJavaToken:LBRACE('{')
        PsiWhiteSpace('\n        ')
        PsiReturnStatement
          PsiKeyword:return('return')
          PsiWhiteSpace(' ')
          PsiBinaryExpression:x.size() >> 2
            PsiMethodCallExpression:x.size()
              PsiReferenceExpression:x.size
                PsiReferenceExpression:x
                  PsiReferenceParameterList
                    <empty list>
                  PsiIdentifier:x('x')
                PsiJavaToken:DOT('.')
                PsiReferenceParameterList
                  <empty list>
                PsiIdentifier:size('size')
              PsiExpressionList
                PsiJavaToken:LPARENTH('(')
                PsiJavaToken:RPARENTH(')')
            PsiWhiteSpace(' ')
            PsiJavaToken:GTGT('>>')
            PsiWhiteSpace(' ')
            PsiLiteralExpression:2
              PsiJavaToken:INTEGER_LITERAL('2')
          PsiJavaToken:SEMICOLON(';')
        PsiWhiteSpace('\n    ')
        PsiJavaToken:RBRACE('}')
    PsiWhiteSpace('\n')
    PsiJavaToken:RBRACE('}')