void (@NotNull QuickFixActionRegistrar registrar, @NotNull PsiJavaCodeReferenceElement reference) { PsiElement psiElement = reference.getElement(); @NonNls String referenceName = reference.getRangeInElement().substring(psiElement.getText()); Project project = psiElement.getProject(); PsiFile containingFile = psiElement.getContainingFile(); if (containingFile == null) return; PsiDirectory dir = containingFile.getContainingDirectory(); if (dir == null) return; VirtualFile classVFile = containingFile.getVirtualFile(); if (classVFile == null) return; ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex(); Module currentModule = fileIndex.getModuleForFile(classVFile); if (currentModule == null) return; List<VirtualFile> sourceRoots = ModuleRootManager.getInstance(currentModule).getSourceRoots(JavaModuleSourceRootTypes.SOURCES); if (sourceRoots.isEmpty()) return; PsiDirectory sourceDirectory = PsiManager.getInstance(project).findDirectory(sourceRoots.get(0)); if (sourceDirectory == null) return; VirtualFile vsourceRoot = fileIndex.getSourceRootForFile(classVFile); if (vsourceRoot == null) return; PsiDirectory sourceRoot = PsiManager.getInstance(project).findDirectory(vsourceRoot); if (sourceRoot == null) return; registrar.register(new MoveClassToModuleFix(referenceName, currentModule, sourceRoot, psiElement)); }