void () { PsiClassType listOfExtendsBase = (PsiClassType)myJavaFacade.getElementFactory().createTypeFromText("test.List<? extends usages.Base>", null); PsiClassType.ClassResolveResult classResolveResult = listOfExtendsBase.resolveGenerics(); PsiClass listClass = classResolveResult.getElement(); assertNotNull(listClass); PsiTypeParameter listTypeParameter = PsiUtil.typeParametersIterator(listClass).next(); PsiType listParameterTypeValue = classResolveResult.getSubstitutor().substitute(listTypeParameter); assertTrue(listParameterTypeValue instanceof PsiWildcardType); assertTrue(((PsiWildcardType)listParameterTypeValue).isExtends()); assertEquals("usages.Base", ((PsiWildcardType)listParameterTypeValue).getBound().getCanonicalText()); PsiClassType listOfIntermediate = (PsiClassType)myJavaFacade.getElementFactory().createTypeFromText("test.List<usages.Intermediate>", null); assertNotNull(listOfIntermediate.resolve()); assertTrue(listOfExtendsBase.isAssignableFrom(listOfIntermediate)); }