PsiJavaFile:TypeAnno.java
  PsiJavaToken:LBRACE('{')
  PsiWhiteSpace(' ')
  PsiClass:C
    PsiModifierList:
      <empty list>
    PsiKeyword:class('class')
    PsiWhiteSpace(' ')
    PsiIdentifier:C('C')
    PsiTypeParameterList
      PsiJavaToken:LT('<')
      PsiTypeParameter:T
        PsiAnnotation
          PsiJavaToken:AT('@')
          PsiJavaCodeReferenceElement:D
            PsiIdentifier:D('D')
            PsiReferenceParameterList
              <empty list>
          PsiAnnotationParameterList
            <empty list>
        PsiWhiteSpace(' ')
        PsiIdentifier:T('T')
        PsiWhiteSpace(' ')
        PsiElement(EXTENDS_BOUND_LIST)
          PsiKeyword:extends('extends')
          PsiWhiteSpace(' ')
          PsiJavaCodeReferenceElement:@F Object
            PsiAnnotation
              PsiJavaToken:AT('@')
              PsiJavaCodeReferenceElement:F
                PsiIdentifier:F('F')
                PsiReferenceParameterList
                  <empty list>
              PsiAnnotationParameterList
                <empty list>
            PsiWhiteSpace(' ')
            PsiIdentifier:Object('Object')
            PsiReferenceParameterList
              <empty list>
      PsiJavaToken:GT('>')
    PsiWhiteSpace(' ')
    PsiReferenceList
      PsiKeyword:extends('extends')
      PsiWhiteSpace(' ')
      PsiJavaCodeReferenceElement:@F Object
        PsiAnnotation
          PsiJavaToken:AT('@')
          PsiJavaCodeReferenceElement:F
            PsiIdentifier:F('F')
            PsiReferenceParameterList
              <empty list>
          PsiAnnotationParameterList
            <empty list>
        PsiWhiteSpace(' ')
        PsiIdentifier:Object('Object')
        PsiReferenceParameterList
          <empty list>
    PsiReferenceList
      <empty list>
    PsiWhiteSpace(' ')
    PsiJavaToken:LBRACE('{')
    PsiWhiteSpace('\n  ')
    PsiMethod:method
      PsiModifierList:@F
        PsiAnnotation
          PsiJavaToken:AT('@')
          PsiJavaCodeReferenceElement:F
            PsiIdentifier:F('F')
            PsiReferenceParameterList
              <empty list>
          PsiAnnotationParameterList
            <empty list>
      PsiTypeParameterList
        <empty list>
      PsiWhiteSpace(' ')
      PsiTypeElement:int @F[]
        PsiTypeElement:int
          PsiKeyword:int('int')
        PsiWhiteSpace(' ')
        PsiAnnotation
          PsiJavaToken:AT('@')
          PsiJavaCodeReferenceElement:F
            PsiIdentifier:F('F')
            PsiReferenceParameterList
              <empty list>
          PsiAnnotationParameterList
            <empty list>
        PsiJavaToken:LBRACKET('[')
        PsiJavaToken:RBRACKET(']')
      PsiWhiteSpace(' ')
      PsiIdentifier:method('method')
      PsiParameterList:()
        PsiJavaToken:LPARENTH('(')
        PsiJavaToken:RPARENTH(')')
      PsiWhiteSpace(' ')
      PsiReferenceList
        PsiKeyword:throws('throws')
        PsiWhiteSpace(' ')
        PsiJavaCodeReferenceElement:@F Exception
          PsiAnnotation
            PsiJavaToken:AT('@')
            PsiJavaCodeReferenceElement:F
              PsiIdentifier:F('F')
              PsiReferenceParameterList
                <empty list>
            PsiAnnotationParameterList
              <empty list>
          PsiWhiteSpace(' ')
          PsiIdentifier:Exception('Exception')
          PsiReferenceParameterList
            <empty list>
      PsiWhiteSpace(' ')
      PsiCodeBlock
        PsiJavaToken:LBRACE('{')
        PsiWhiteSpace('\n    ')
        PsiExpressionStatement
          PsiAssignmentExpression:a = this instanceof @F C
            PsiReferenceExpression:a
              PsiReferenceParameterList
                <empty list>
              PsiIdentifier:a('a')
            PsiWhiteSpace(' ')
            PsiJavaToken:EQ('=')
            PsiWhiteSpace(' ')
            PsiInstanceofExpression:this instanceof @F C
              PsiThisExpression:this
                PsiReferenceParameterList
                  <empty list>
                PsiKeyword:this('this')
              PsiWhiteSpace(' ')
              PsiKeyword:instanceof('instanceof')
              PsiWhiteSpace(' ')
              PsiTypeElement:@F C
                PsiAnnotation
                  PsiJavaToken:AT('@')
                  PsiJavaCodeReferenceElement:F
                    PsiIdentifier:F('F')
                    PsiReferenceParameterList
                      <empty list>
                  PsiAnnotationParameterList
                    <empty list>
                PsiWhiteSpace(' ')
                PsiJavaCodeReferenceElement:C
                  PsiIdentifier:C('C')
                  PsiReferenceParameterList
                    <empty list>
          PsiJavaToken:SEMICOLON(';')
        PsiWhiteSpace('\n    ')
        PsiDeclarationStatement
          PsiLocalVariable:c
            PsiModifierList:
              <empty list>
            PsiTypeElement:C<@F @G C>
              PsiJavaCodeReferenceElement:C<@F @G C>
                PsiIdentifier:C('C')
                PsiReferenceParameterList
                  PsiJavaToken:LT('<')
                  PsiTypeElement:@F @G C
                    PsiAnnotation
                      PsiJavaToken:AT('@')
                      PsiJavaCodeReferenceElement:F
                        PsiIdentifier:F('F')
                        PsiReferenceParameterList
                          <empty list>
                      PsiAnnotationParameterList
                        <empty list>
                    PsiWhiteSpace(' ')
                    PsiAnnotation
                      PsiJavaToken:AT('@')
                      PsiJavaCodeReferenceElement:G
                        PsiIdentifier:G('G')
                        PsiReferenceParameterList
                          <empty list>
                      PsiAnnotationParameterList
                        <empty list>
                    PsiWhiteSpace(' ')
                    PsiJavaCodeReferenceElement:C
                      PsiIdentifier:C('C')
                      PsiReferenceParameterList
                        <empty list>
                  PsiJavaToken:GT('>')
            PsiWhiteSpace(' ')
            PsiIdentifier:c('c')
            PsiWhiteSpace(' ')
            PsiJavaToken:EQ('=')
            PsiWhiteSpace(' ')
            PsiNewExpression:new @Q C<@F C>()
              PsiKeyword:new('new')
              PsiReferenceParameterList
                <empty list>
              PsiWhiteSpace(' ')
              PsiJavaCodeReferenceElement:@Q C<@F C>
                PsiAnnotation
                  PsiJavaToken:AT('@')
                  PsiJavaCodeReferenceElement:Q
                    PsiIdentifier:Q('Q')
                    PsiReferenceParameterList
                      <empty list>
                  PsiAnnotationParameterList
                    <empty list>
                PsiWhiteSpace(' ')
                PsiIdentifier:C('C')
                PsiReferenceParameterList
                  PsiJavaToken:LT('<')
                  PsiTypeElement:@F C
                    PsiAnnotation
                      PsiJavaToken:AT('@')
                      PsiJavaCodeReferenceElement:F
                        PsiIdentifier:F('F')
                        PsiReferenceParameterList
                          <empty list>
                      PsiAnnotationParameterList
                        <empty list>
                    PsiWhiteSpace(' ')
                    PsiJavaCodeReferenceElement:C
                      PsiIdentifier:C('C')
                      PsiReferenceParameterList
                        <empty list>
                  PsiJavaToken:GT('>')
              PsiExpressionList
                PsiJavaToken:LPARENTH('(')
                PsiJavaToken:RPARENTH(')')
            PsiJavaToken:SEMICOLON(';')
        PsiWhiteSpace('\n    ')
        PsiExpressionStatement
          PsiAssignmentExpression:c = (@F Object)c
            PsiReferenceExpression:c
              PsiReferenceParameterList
                <empty list>
              PsiIdentifier:c('c')
            PsiWhiteSpace(' ')
            PsiJavaToken:EQ('=')
            PsiWhiteSpace(' ')
            PsiTypeCastExpression:(@F Object)c
              PsiJavaToken:LPARENTH('(')
              PsiTypeElement:@F Object
                PsiAnnotation
                  PsiJavaToken:AT('@')
                  PsiJavaCodeReferenceElement:F
                    PsiIdentifier:F('F')
                    PsiReferenceParameterList
                      <empty list>
                  PsiAnnotationParameterList
                    <empty list>
                PsiWhiteSpace(' ')
                PsiJavaCodeReferenceElement:Object
                  PsiIdentifier:Object('Object')
                  PsiReferenceParameterList
                    <empty list>
              PsiJavaToken:RPARENTH(')')
              PsiReferenceExpression:c
                PsiReferenceParameterList
                  <empty list>
                PsiIdentifier:c('c')
          PsiJavaToken:SEMICOLON(';')
        PsiWhiteSpace('\n    ')
        PsiDeclarationStatement
          PsiLocalVariable:c
            PsiModifierList:
              <empty list>
            PsiTypeElement:Class
              PsiJavaCodeReferenceElement:Class
                PsiIdentifier:Class('Class')
                PsiReferenceParameterList
                  <empty list>
            PsiWhiteSpace(' ')
            PsiIdentifier:c('c')
            PsiWhiteSpace(' ')
            PsiJavaToken:EQ('=')
            PsiWhiteSpace(' ')
            PsiClassObjectAccessExpression:@TA String.class
              PsiTypeElement:@TA String
                PsiAnnotation
                  PsiJavaToken:AT('@')
                  PsiJavaCodeReferenceElement:TA
                    PsiIdentifier:TA('TA')
                    PsiReferenceParameterList
                      <empty list>
                  PsiAnnotationParameterList
                    <empty list>
                PsiWhiteSpace(' ')
                PsiJavaCodeReferenceElement:String
                  PsiIdentifier:String('String')
                  PsiReferenceParameterList
                    <empty list>
              PsiJavaToken:DOT('.')
              PsiKeyword:class('class')
            PsiJavaToken:SEMICOLON(';')
        PsiWhiteSpace('\n    ')
        PsiExpressionStatement
          PsiPostfixExpression:@F C.field++
            PsiReferenceExpression:@F C.field
              PsiReferenceExpression:@F C
                PsiReferenceParameterList
                  <empty list>
                PsiAnnotation
                  PsiJavaToken:AT('@')
                  PsiJavaCodeReferenceElement:F
                    PsiIdentifier:F('F')
                    PsiReferenceParameterList
                      <empty list>
                  PsiAnnotationParameterList
                    <empty list>
                PsiWhiteSpace(' ')
                PsiIdentifier:C('C')
              PsiJavaToken:DOT('.')
              PsiReferenceParameterList
                <empty list>
              PsiIdentifier:field('field')
            PsiJavaToken:PLUSPLUS('++')
          PsiJavaToken:SEMICOLON(';')
        PsiWhiteSpace('\n  ')
        PsiJavaToken:RBRACE('}')
    PsiWhiteSpace('\n')
    PsiJavaToken:RBRACE('}')
  PsiWhiteSpace(' ')
  PsiJavaToken:RBRACE('}')