private static @Nullable LineMarkerInfo<PsiElement> getMethodMarker(final PsiElement identifier, final PyFunction function) {
    if (PyUtil.isInitMethod(function)) {
      return null;
    }
    final TypeEvalContext context = TypeEvalContext.codeAnalysis(identifier.getProject(), function.getContainingFile());
    final PsiElement superMethod = PySuperMethodsSearch.search(function, context).findFirst();
    if (superMethod != null) {
      PyClass superClass = null;
      if (superMethod instanceof PyFunction) {
        superClass = ((PyFunction)superMethod).getContainingClass();
      }
      // TODO: show "implementing" instead of "overriding" icon for Python implementations of Java interface methods
      return new LineMarkerInfo<>(identifier, identifier.getTextRange(), AllIcons.Gutter.OverridingMethod,
                                  superClass == null ? null : new TooltipProvider(PyBundle.message(
                                    "line.markers.tooltip.overrides.method.in.class", superClass.getName())),
                                  SUPER_METHOD_NAVIGATOR, GutterIconRenderer.Alignment.RIGHT);
    }
    return null;
  }
private static @Nullable LineMarkerInfo<PsiElement> getMethodMarker(final PsiElement identifier, final PyFunction function)