@Override
  public LineMarkerInfo<?> getLineMarkerInfo(final @NotNull PsiElement element) {
    IElementType elementType = element.getNode().getElementType();
    if (elementType == PyTokenTypes.IDENTIFIER && element.getParent() instanceof PyFunction function) {
      return getMethodMarker(element, function);
    }
    if (element instanceof PyTargetExpression && PyUtil.isClassAttribute(element)) {
      return getAttributeMarker((PyTargetExpression)element);
    }

    // Separators are registered only on the first leaf element of a declaration
    if (!DaemonCodeAnalyzerSettings.getInstance().SHOW_METHOD_SEPARATORS || element.getFirstChild() != null) {
      return null;
    }
    PyElement parentDeclaration = PsiTreeUtil.getParentOfType(element, PyFunction.class, PyClass.class);
    if (parentDeclaration == null || element != PsiTreeUtil.getDeepestFirst(parentDeclaration)) {
      return null;
    }
    if (isSeparatorAllowed(parentDeclaration)) {
      return PyLineSeparatorUtil.addLineSeparatorIfNeeded(this, parentDeclaration);
    }
    return null;
  }
@Override
  public LineMarkerInfo<?> getLineMarkerInfo(final @NotNull PsiElement element)