PsiType (final PsiSubstitutor substitutor, final PsiType type, @NotNull PsiTypeParameterListOwner owner, PsiModifierList modifierList) { PsiType substitutedType = PsiUtil.isRawSubstitutor(owner, substitutor) ? TypeConversionUtil.erasure(type) : GenericsUtil.eliminateWildcards(substitutor.substitute(type), false, true); return substitutedType != null ? AnnotationTargetUtil.keepStrictlyTypeUseAnnotations(modifierList, substitutedType) : null; }