void () { mySourceClass = myMethod.getContainingClass(); if (!mySourceClass.isValid()) return; for (PsiClass inheritor : ClassInheritorsSearch.search(mySourceClass)) { if (!inheritor.isInterface()) { PsiMethod method = ImplementAbstractMethodAction.findExistingImplementation(inheritor, myMethod); if (method != null && !method.hasModifierProperty(PsiModifier.ABSTRACT)) { mySourceMethods.add(method); } else if (method == null) { myTargetClasses.add(inheritor); } } } for (Iterator<PsiClass> targetClassIterator = myTargetClasses.iterator(); targetClassIterator.hasNext();) { PsiClass targetClass = targetClassIterator.next(); if (containsAnySuperClass(targetClass)) { targetClassIterator.remove(); } } if (mySourceClass.isEnum()) { for (PsiField field : mySourceClass.getFields()) { if (field instanceof PsiEnumConstant enumConstant){ final PsiEnumConstantInitializer initializingClass = enumConstant.getInitializingClass(); if (initializingClass == null) { myTargetEnumConstants.add(enumConstant); } } } } }