void () { doTest(""" import j.u.@A C; import @A j.u.D; class C<@A T extends @A C> implements @A I<@A T> { @TA T<@A T1, @A ? extends @A T2> f; @TA T m(@A C this, @TA int p) throws @A E { o.<@A1 C>m(); new <T> @A2 C(); C.@A3 B v = (@A4 C)v.new @A5 C(); m(@A6 C::m); @A7 T @A8[] @A9[] a = new @A7 T @A8[0] @A9[0]; } int @A [] v() @A [] { } }""", """ PsiJavaFileStub [] IMPORT_LIST:PsiImportListStub IMPORT_STATEMENT:PsiImportStatementStub[j.u.C] IMPORT_STATEMENT:PsiImportStatementStub[j.u.D] CLASS:PsiClassStub[name=C fqn=C] MODIFIER_LIST:PsiModifierListStub[mask=0] TYPE_PARAMETER_LIST:PsiTypeParameterListStub TYPE_PARAMETER:PsiTypeParameter[T] ANNOTATION:PsiAnnotationStub[@A] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl EXTENDS_BOUND_LIST:PsiRefListStub[EXTENDS_BOUNDS_LIST:@A C] ANNOTATION:PsiAnnotationStub[@A] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl EXTENDS_LIST:PsiRefListStub[EXTENDS_LIST:] IMPLEMENTS_LIST:PsiRefListStub[IMPLEMENTS_LIST:@A I<@A T>] ANNOTATION:PsiAnnotationStub[@A] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl ANNOTATION:PsiAnnotationStub[@A] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl FIELD:PsiFieldStub[f:T<T1,? extends T2>] MODIFIER_LIST:PsiModifierListStub[mask=0] ANNOTATION:PsiAnnotationStub[@TA] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl ANNOTATION:PsiAnnotationStub[@A] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl ANNOTATION:PsiAnnotationStub[@A] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl ANNOTATION:PsiAnnotationStub[@A] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl METHOD:PsiMethodStub[m:T] MODIFIER_LIST:PsiModifierListStub[mask=0] ANNOTATION:PsiAnnotationStub[@TA] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl TYPE_PARAMETER_LIST:PsiTypeParameterListStub PARAMETER_LIST:PsiParameterListStub PARAMETER:PsiParameterStub[p:int] MODIFIER_LIST:PsiModifierListStub[mask=0] ANNOTATION:PsiAnnotationStub[@TA] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl THROWS_LIST:PsiRefListStub[THROWS_LIST:@A E] ANNOTATION:PsiAnnotationStub[@A] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl ANNOTATION:PsiAnnotationStub[@A1] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl ANNOTATION:PsiAnnotationStub[@A2] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl ANNOTATION:PsiAnnotationStub[@A3] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl ANNOTATION:PsiAnnotationStub[@A4] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl ANNOTATION:PsiAnnotationStub[@A5] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl METHOD_REF_EXPRESSION:FunctionalExpressionStub ANNOTATION:PsiAnnotationStub[@A6] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl ANNOTATION:PsiAnnotationStub[@A7] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl ANNOTATION:PsiAnnotationStub[@A8] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl ANNOTATION:PsiAnnotationStub[@A9] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl ANNOTATION:PsiAnnotationStub[@A7] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl ANNOTATION:PsiAnnotationStub[@A8] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl ANNOTATION:PsiAnnotationStub[@A9] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl METHOD:PsiMethodStub[v:int[][]] MODIFIER_LIST:PsiModifierListStub[mask=0] TYPE_PARAMETER_LIST:PsiTypeParameterListStub ANNOTATION:PsiAnnotationStub[@A] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl PARAMETER_LIST:PsiParameterListStub ANNOTATION:PsiAnnotationStub[@A] ANNOTATION_PARAMETER_LIST:PsiAnnotationParameterListStubImpl THROWS_LIST:PsiRefListStub[THROWS_LIST:] """); }