SafeDeleteProcessor (@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); }