void () { myData.clear(); ApplicationManager.getApplication().runReadAction(() -> { final PsiType classType = getClassType(); final PsiClass[] classes = classType instanceof PsiClassType? JavaPsiFacade.getInstance(myProject). findClasses(classType.getCanonicalText(), GlobalSearchScope.allScope(myProject)) : PsiClass.EMPTY_ARRAY; if (classes.length == 0) return; final Set<String> visitedSignatures = new HashSet<>(); for (PsiClass psiClass : classes) { for (PsiMethod method : psiClass.getMethods()) { final PsiModifierList modifiers = method.getModifierList(); if (modifiers.hasModifierProperty(PsiModifier.PRIVATE) || modifiers.hasModifierProperty(PsiModifier.PACKAGE_LOCAL)) continue; if (MethodParameterInjection.isInjectable(method.getReturnType(), method.getProject()) || ContainerUtil.find(method.getParameterList().getParameters(), p -> MethodParameterInjection.isInjectable(p.getType(), p.getProject())) != null) { final MethodParameterInjection.MethodInfo info = MethodParameterInjection.createMethodInfo(method); if (!visitedSignatures.add(info.getMethodSignature())) continue; myData.put(method, info); } } } }); }