PsiType (@NotNull PsiTypeParameter typeParameter) { final PsiClassType[] extendsTypes = typeParameter.getExtendsListTypes(); if (extendsTypes.length > 0) { // First bound return RecursionManager.doPreventingRecursion(extendsTypes[0], true, () -> substitute(extendsTypes[0])); } // Object return PsiType.getJavaLangObject(typeParameter.getManager(), typeParameter.getResolveScope()); }