void (Set<? extends UsageInfo> usages) { if (PsiUtil.isLanguageLevel5OrHigher(myChangeInfo.getMethod())) { List<UsageInfo> covariantOverriderInfos = new ArrayList<>(); for (UsageInfo usageInfo : usages) { if (usageInfo instanceof OverriderUsageInfo info) { PsiMethod overrider = Objects.requireNonNull(info.getOverridingMethod()); PsiMethod baseMethod = info.getBaseMethod(); PsiSubstitutor substitutor = calculateSubstitutor(overrider, baseMethod); PsiType type; try { type = substitutor.substitute(getChangeInfo().newReturnType.getType(myChangeInfo.getMethod(), myManager)); } catch (IncorrectOperationException e) { LOG.error(e); return; } final PsiType overriderType = overrider.getReturnType(); if (overriderType != null && !type.equals(overriderType) && type.isAssignableFrom(overriderType)) { covariantOverriderInfos.add(usageInfo); } } } if (!covariantOverriderInfos.isEmpty()) { if (ApplicationManager.getApplication().isUnitTestMode() || !isProcessCovariantOverriders()) { for (UsageInfo usageInfo : covariantOverriderInfos) { usages.remove(usageInfo); } } } } }