void attributesChanged(@NotNull RangeHighlighterEx highlighter, boolean documentMarkupModel) {
    ErrorStripeMarkerImpl existingErrorStripeMarker = findErrorStripeMarker(highlighter, false);
    boolean hasErrorStripe = isAvailable(highlighter, documentMarkupModel);

    if (existingErrorStripeMarker == null) {
      if (hasErrorStripe) {
        createErrorStripeMarker(highlighter);
      }
      return;
    }

    if (!hasErrorStripe) {
      removeErrorStripeMarker(existingErrorStripeMarker);
      return;
    }

    existingErrorStripeMarker.setGreedyToLeft(highlighter.isGreedyToLeft());
    existingErrorStripeMarker.setGreedyToRight(highlighter.isGreedyToRight());
    if (highlighter instanceof RangeMarkerImpl) {
      existingErrorStripeMarker.setStickingToRight(((RangeMarkerImpl)highlighter).isStickingToRight());
    }
    EdtInvocationManager.invokeLaterIfNeeded(() -> {
      if (!myEditor.isDisposed()) {
        myListeners.forEach(l -> l.errorMarkerChanged(new ErrorStripeEvent(myEditor, null, highlighter)));
      }
    });
  }
void attributesChanged(@NotNull RangeHighlighterEx highlighter, boolean documentMarkupModel)