TypeMigrationUsageInfo[] () { final LinkedList<Pair<TypeMigrationUsageInfo, PsiType>> declarations = getTypeEvaluator().getMigratedDeclarations(); final TypeMigrationUsageInfo[] usages = new TypeMigrationUsageInfo[declarations.size() + myConversions.size() + myNewExpressionTypeChange.size() + myClassTypeArgumentsChange.size()]; int j = 0; for (PsiElement element : myConversions.keySet()) { final Object conv = myConversions.get(element); usages[j++] = new TypeMigrationUsageInfo(element) { @Override public String getTooltipText() { if (conv instanceof String conversion) { //todo return JavaBundle.message("type.migration.replaced.notification", conversion.replaceAll("\\$", element.getText())); } else { return JavaBundle.message("type.migration.replaced.notification", conv.toString()); } } @Override public boolean isExcluded() { if (conv instanceof TypeConversionDescriptorBase) return ((TypeConversionDescriptorBase)conv).getRoot().isExcluded(); return super.isExcluded(); } @Override public TypeMigrationUsageInfo getOwnerRoot() { return conv instanceof TypeConversionDescriptorBase ? ((TypeConversionDescriptorBase)conv).getRoot() : null; } }; } for (Pair<TypeMigrationUsageInfo, PsiType> p : declarations) { final TypeMigrationUsageInfo element = p.getFirst(); usages[j++] = element; } for (TypeMigrationUsageInfo info : myClassTypeArgumentsChange.keySet()) { usages[j++] = info; } for (TypeMigrationUsageInfo expr : myNewExpressionTypeChange.keySet()) { usages[j++] = expr; } return sortMigratedUsages(usages); }