@Override
    public void browse(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);
    }
@Override
    public void browse(MouseEvent e, PsiElement element)