void (MouseEvent e, PsiElement element) { PsiElement parent = element.getParent(); if (!(parent instanceof GrField field)) return; if (DumbService.isDumb(element.getProject())) { DumbService.getInstance(element.getProject()).showDumbModeNotificationForFunctionality( GroovyBundle.message("popup.content.navigation.to.overriding.classes.unavailable"), DumbModeBlockedFunctionality.GroovyMarkers ); return; } Set<PsiMethod> result = new HashSet<>(); Processor<PsiMethod> collectProcessor = Processors.cancelableCollectProcessor(result); if (!ProgressManager.getInstance().runProcessWithProgressSynchronously(() -> ApplicationManager.getApplication().runReadAction(() -> { for (GrAccessorMethod method : GroovyPropertyUtils.getFieldAccessors(field)) { OverridingMethodsSearch.search(method).forEach(collectProcessor); } }), JavaAnalysisBundle.message("searching.for.overriding.methods"), true, field.getProject(), (JComponent)e.getComponent())) { return; } PsiMethod[] overridings = result.toArray(PsiMethod.EMPTY_ARRAY); if (overridings.length == 0) return; String title = DaemonBundle.message("navigation.title.overrider.method", field.getName(), overridings.length); boolean showMethodNames = !PsiUtil.allMethodsHaveSameSignature(overridings); MethodCellRenderer renderer = new MethodCellRenderer(showMethodNames); Arrays.sort(overridings, renderer.getComparator()); PsiElementListNavigator.openTargets(e, overridings, title, GroovyBundle.message("overriding.methods.of.0",field.getName()) , renderer); }