Boolean (@NotNull PsiClassType classType) { final InferenceVariable inferenceVariable = fun.fun(classType); if (inferenceVariable != null) { if (dependencies != null) { dependencies.add(inferenceVariable); return true; } return false; } PsiClassType.ClassResolveResult result = classType.resolveGenerics(); PsiClass aClass = result.getElement(); if (aClass != null) { PsiSubstitutor substitutor = result.getSubstitutor(); for (PsiTypeParameter typeParameter : PsiUtil.typeParametersIterable(aClass)) { PsiType psiType = substitutor.substitute(typeParameter); if (psiType != null && !psiType.accept(this)) return false; } } return true; }