PsiType (PsiExpression expression, PsiType type) { if (!(type instanceof PsiClassType classType)) { return type; } if (!classType.isRaw()) { return classType; } PsiClass psiClass = classType.resolve(); if (psiClass == null) return classType; if (!(expression.getType() instanceof PsiClassType expressionType)) return classType; PsiClassType result = GenericsUtil.getExpectedGenericType(expression, psiClass, expressionType); if (result.isRaw()) { PsiClass aClass = result.resolve(); if (aClass != null) { int length = aClass.getTypeParameters().length; PsiWildcardType wildcard = PsiWildcardType.createUnbounded(aClass.getManager()); PsiType[] arguments = new PsiType[length]; Arrays.fill(arguments, wildcard); return JavaPsiFacade.getElementFactory(aClass.getProject()).createType(aClass, arguments); } } return result; }