PsiType (PsiClass iterableClass, PsiExpression value, TypeView typeView) { final Project project = iterableClass.getProject(); final PsiClass itClass = JavaPsiFacade.getInstance(project).findClass("java.lang.Iterable", GlobalSearchScope.allScope(project)); if (itClass == null) return null; if (!InheritanceUtil.isInheritorOrSelf(iterableClass, itClass, true)) { findConversionOrFail(value, value, typeView.getTypePair()); return null; } final PsiSubstitutor aSubstitutor = TypeConversionUtil.getSuperClassSubstitutor(itClass, iterableClass, PsiSubstitutor.EMPTY); return aSubstitutor.substitute(itClass.getTypeParameters()[0]); }