boolean (@NotNull PsiType left, @NotNull PsiWildcardType rightWildcardType) { if (rightWildcardType.isSuper()) { final PsiClass aClass = PsiUtil.resolveClassInType(rightWildcardType.getSuperBound()); if (aClass instanceof PsiTypeParameter) { final PsiClassType[] types = aClass.getExtendsListTypes(); for (PsiClassType type : types) { if (isAssignable(left, type)) return true; } } } return isAssignable(left, rightWildcardType.getExtendsBound()); }