@Override
  protected boolean preprocessUsages(@NotNull final Ref<UsageInfo[]> refUsages) {
    final MultiMap<PsiElement, @DialogMessage String> conflicts = new MultiMap<>();
    myDelegate.checkSourceClassConflicts(myPushDownData, conflicts);
    final UsageInfo[] usagesIn = refUsages.get();
    if (usagesIn.length == 0) {
      mySubClassData = myDelegate.preprocessNoInheritorsFound(myPushDownData.getSourceClass(), getCommandName());
      if (mySubClassData == NewSubClassData.ABORT_REFACTORING) {
        return false;
      }
    }
    Runnable runnable = () -> ApplicationManager.getApplication().runReadAction(() -> {
      if (mySubClassData != null) {
        myDelegate.checkTargetClassConflicts(null, myPushDownData, conflicts, mySubClassData);
      }
      else {
        for (UsageInfo usage : usagesIn) {
          final PsiElement element = usage.getElement();
          if (element != null) {
            final PushDownDelegate delegate = PushDownDelegate.findDelegateForTarget(myPushDownData.getSourceClass(), element);
            if (delegate != null) {
              delegate.checkTargetClassConflicts(element, myPushDownData, conflicts, null);
            }
            else {
              conflicts.putValue(element, RefactoringBundle.message("dialog.message.not.supported.source.target.pair.detected"));
            }
          }
        }
      }
    });

    if (!ProgressManager.getInstance().runProcessWithProgressSynchronously(runnable, RefactoringBundle.message("detecting.possible.conflicts"), true, myProject)) {
      return false;
    }

    return showConflicts(conflicts, usagesIn);
  }
@Override
  protected boolean preprocessUsages(@NotNull final Ref<UsageInfo[]> refUsages)