@Override
  protected UsageInfo @NotNull [] findUsages() {
    final List<UsageInfo> allUsages = new ArrayList<>();
    final List<UsageInfo> usagesToSkip = new ArrayList<>();
    
    for (PsiElement element : myElementsToMove) {
      String newName = getNewQName(element);
      UsageInfo[] usages = MoveClassesOrPackagesUtil.findUsages(
        element, myRefactoringScope, mySearchInComments, mySearchInNonJavaFiles, newName);
      final ArrayList<UsageInfo> infos = new ArrayList<>(Arrays.asList(usages));
      allUsages.addAll(infos);
      if (Comparing.strEqual(newName, getOldQName(element))) {
        usagesToSkip.addAll(infos);
      }

      if (element instanceof PsiPackage) {
        for (PsiDirectory directory : ((PsiPackage)element).getDirectories()) {
          UsageInfo[] dirUsages = MoveClassesOrPackagesUtil.findUsages(
            directory, myRefactoringScope, mySearchInComments, mySearchInNonJavaFiles, newName);
          allUsages.addAll(new ArrayList<>(Arrays.asList(dirUsages)));
        }
      }
    }
    final UsageInfo[] usageInfos = allUsages.toArray(UsageInfo.EMPTY_ARRAY);
    myConflicts = new MultiMap<>();
    detectConflicts(usageInfos, myConflicts, myElementsToMove, myTargetPackage, myMoveDestination);
    myModuleInfoUsageDetector.detectModuleStatementsUsed(allUsages, myConflicts);
    allUsages.removeAll(usagesToSkip);
    return UsageViewUtil.removeDuplicatedUsages(allUsages.toArray(UsageInfo.EMPTY_ARRAY));
  }
@Override
  protected UsageInfo @NotNull [] findUsages()