@Override
  protected LocalQuickFix @NotNull [] buildFixes(Object... infos) {
    final List<LocalQuickFix> fixes = new SmartList<>();
    final PsiClass aClass = (PsiClass)infos[0];
    if (!aClass.hasModifierProperty(PsiModifier.FINAL)) {
      final PsiMethod[] superMethods = aClass.findMethodsByName(HardcodedMethodConstants.CLONE, true);
      boolean generateTryCatch = true;
      boolean createFix = true;
      for (PsiMethod method : superMethods) {
        if (CloneUtils.isClone(method)) {
          if (method.hasModifierProperty(PsiModifier.FINAL)) {
            createFix = false;
          }
          generateTryCatch &= MethodUtils.hasInThrows(method, "java.lang.CloneNotSupportedException");
        }
      }
      if (createFix) {
        fixes.add(new CreateCloneMethodFix(generateTryCatch));
      }
    }
    final boolean cloneCalled = (boolean)infos[1];
    if (CloneUtils.isDirectlyCloneable(aClass) && !cloneCalled) {
      fixes.add(RemoveCloneableFix.create(null));
    }
    return fixes.toArray(LocalQuickFix.EMPTY_ARRAY);
  }
@Override
  protected LocalQuickFix @NotNull [] buildFixes(Object... infos)