@Contract("_, _, _, _, _, _ -> new")
  public static @NotNull SafeDeleteProcessor createInstance(@NotNull Project project, @Nullable Runnable prepareSuccessfulCallBack,
                                                            PsiElement @NotNull [] elementsToDelete, boolean isSearchInComments, boolean isSearchNonJava,
                                                            boolean askForAccessors) {
    ArrayList<PsiElement> elements = new ArrayList<>(Arrays.asList(elementsToDelete));
    Set<PsiElement> elementsToDeleteSet = ContainerUtil.newHashSet(elementsToDelete);

    for (PsiElement psiElement : elementsToDelete) {
      for(SafeDeleteProcessorDelegate delegate: SafeDeleteProcessorDelegate.EP_NAME.getExtensionList()) {
        if (delegate.handlesElement(psiElement)) {
          Collection<PsiElement> addedElements = delegate.getAdditionalElementsToDelete(psiElement, elementsToDeleteSet, askForAccessors);
          if (addedElements != null) {
            elements.addAll(addedElements);
          }
          break;
        }
      }
    }

    return new SafeDeleteProcessor(project, prepareSuccessfulCallBack,
                                   PsiUtilCore.toPsiElementArray(elements),
                                   isSearchInComments, isSearchNonJava);
  }
@Contract("_, _, _, _, _, _ -> new")
  public static @NotNull SafeDeleteProcessor createInstance(@NotNull Project project, @Nullable Runnable prepareSuccessfulCallBack,
                                                            PsiElement @NotNull [] elementsToDelete, boolean isSearchInComments, boolean isSearchNonJava,
                                                            boolean askForAccessors)