void (UsageInfo[] usages, MultiMap<PsiElement, @DialogMessage String> conflicts, @NotNull PackageWrapper targetPackage, PsiElement[] elementsToMove) { Set<PsiClass> movedClasses = new HashSet<>(); Map<PsiClass,Set<PsiElement>> reportedClassToContainers = new HashMap<>(); for (UsageInfo usage : usages) { PsiElement element = usage.getElement(); if (element == null) continue; if (usage instanceof MoveRenameUsageInfo moveRenameUsageInfo && !(usage instanceof NonCodeUsageInfo) && moveRenameUsageInfo.getReferencedElement() instanceof PsiClass aClass) { movedClasses.add(aClass); if (aClass.hasModifierProperty(PsiModifier.PACKAGE_LOCAL)) { if (PsiTreeUtil.getParentOfType(element, PsiImportStatement.class) != null) continue; PsiElement container = ConflictsUtil.getContainer(element); Set<PsiElement> reported = reportedClassToContainers.computeIfAbsent(aClass, __ -> new HashSet<>()); if (!reported.contains(container)) { reported.add(container); PsiFile containingFile = element.getContainingFile(); if (containingFile != null && !isInsideMoved(element, elementsToMove)) { PsiDirectory directory = containingFile.getContainingDirectory(); if (directory != null) { PsiPackage usagePackage = JavaDirectoryService.getInstance().getPackage(directory); if (usagePackage != null && !targetPackage.equalToPackage(usagePackage)) { final String message = JavaRefactoringBundle.message("a.package.local.class.0.will.no.longer.be.accessible.from.1", CommonRefactoringUtil.htmlEmphasize(aClass.getName()), RefactoringUIUtil.getDescription( container, true)); conflicts.putValue(aClass, message); } } } } } } } final MyClassInstanceReferenceVisitor instanceReferenceVisitor = new MyClassInstanceReferenceVisitor(targetPackage, elementsToMove, conflicts); for (final PsiClass aClass : movedClasses) { String visibility = VisibilityUtil.getVisibilityModifier(aClass.getModifierList()); if (PsiModifier.PACKAGE_LOCAL.equals(visibility)) { findInstancesOfPackageLocal(aClass, usages, instanceReferenceVisitor); } else { // public classes findPublicClassConflicts(aClass, instanceReferenceVisitor); } } }