public static PsiMethod @NotNull [] checkSuperMethods(@NotNull PsiMethod method,
                                                        @NlsSafe @Nullable String actionString,
                                                        @NotNull Collection<? extends PsiElement> ignore) {
    ThreadingAssertions.assertEventDispatchThread();
    PsiMethod[] methodTargetCandidates = getTargetMethodCandidates(method, ignore);
    if (methodTargetCandidates.length == 1 && methodTargetCandidates[0] == method) return methodTargetCandidates;

    Set<String> superClasses = new HashSet<>();
    boolean superAbstract = false;
    boolean parentInterface = false;
    for (final PsiMethod superMethod : methodTargetCandidates) {
      final PsiClass containingClass = superMethod.getContainingClass();
      superClasses.add(containingClass.getQualifiedName());
      final boolean isInterface = containingClass.isInterface();
      superAbstract |= isInterface || superMethod.hasModifierProperty(PsiModifier.ABSTRACT);
      parentInterface |= isInterface;
    }

    int shouldIncludeBase = showDialog(
      method.getProject(),
      DescriptiveNameUtil.getDescriptiveName(method),
      actionString,
      superAbstract,
      parentInterface,
      method.getContainingClass().isInterface(),
      ArrayUtilRt.toStringArray(superClasses));
    return switch (shouldIncludeBase) {
      case Messages.YES -> methodTargetCandidates;
      case Messages.NO -> new PsiMethod[]{method};
      default -> PsiMethod.EMPTY_ARRAY;
    };
  }
public static PsiMethod @NotNull [] checkSuperMethods(@NotNull PsiMethod method,
                                                        @NlsSafe @Nullable String actionString,
                                                        @NotNull Collection<? extends PsiElement> ignore)