@Override
  protected LocalQuickFix @NotNull [] buildFixes(Object... infos) {
    final PsiElement element = (PsiElement)infos[0];
    @SuppressWarnings("unchecked") final Collection<PsiClass> weakerClasses = (Collection<PsiClass>)infos[1];
    final PsiClass originalClass = (PsiClass)infos[2];
    final boolean onTheFly = (boolean)infos[3];
    final List<LocalQuickFix> fixes = new SmartList<>();

    if (element instanceof PsiVariable && !doNotWeakenInferredVariableType) {
      PsiTypeElement typeElement = ((PsiVariable)element).getTypeElement();
      if (typeElement != null && typeElement.isInferredType()) {
        final String optionText = InspectionGadgetsBundle.message("inspection.type.may.be.weakened.do.not.weaken.inferred.variable.type");
        fixes.add(LocalQuickFix.from(new UpdateInspectionOptionFix(this, "doNotWeakenInferredVariableType", optionText, true)));
      }
    }
    for (PsiClass weakestClass : weakerClasses) {
      final String className = getClassName(weakestClass);
      if (className == null) {
        continue;
      }
      fixes.add(new TypeMayBeWeakenedFix(className));
      List<String> candidates = getInheritors(originalClass, weakestClass);
      candidates.removeAll(myStopClassSet);
      if (!candidates.isEmpty() && (onTheFly || candidates.size() == 1)) {
        fixes.add(new AddStopWordQuickfix(candidates)); // not this class name, but all superclass names excluding this
      }
    }
    return fixes.toArray(LocalQuickFix.EMPTY_ARRAY);
  }
@Override
  protected LocalQuickFix @NotNull [] buildFixes(Object... infos)