void (PsiModifierListOwner source, @Nullable PsiElement targetClass, PsiModifierListOwner target) { Module module = ModuleUtilCore.findModuleForPsiElement(targetClass != null ? targetClass : target); GlobalSearchScope moduleScope = module != null ? GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module) : null; Project project = target.getProject(); JavaPsiFacade facade = JavaPsiFacade.getInstance(project); for (OverrideImplementsAnnotationsHandler each : EP_NAME.getExtensionList()) { for (String annotation : each.getAnnotations(target.getContainingFile())) { if (moduleScope != null && facade.findClass(annotation, moduleScope) == null) continue; int flags = CHECK_EXTERNAL | CHECK_TYPE; if (AnnotationUtil.isAnnotated(source, annotation, flags) && !AnnotationUtil.isAnnotated(target, annotation, flags)) { each.transferToTarget(annotation, source, target); } } } for (OverrideImplementsAnnotationsHandler each : EP_NAME.getExtensionList()) { each.cleanup(source, targetClass, target); } }