@Override
  public void documentChanged(@NotNull DocumentEvent event) {
    if (myBulkUpdateInProgress) {
      return;
    }
    myUpdateInProgress = false;
    if (!isSoftWrappingEnabled()) {
      if (shouldSoftWrapsBeForced(event)) {
        forceSoftWraps();
        if (isSoftWrappingEnabled()) {
          myDirty = false;
          applianceManager.recalculateAll();
          return;
        }
      }
      myDirty = true;
      return;
    }
    applianceManager.documentChanged(event, myAfterLineEndInlayUpdated);
    if (DocumentEventUtil.isMoveInsertion(event)) {
      int dstOffset = event.getOffset();
      int srcOffset = event.getMoveOffset();
      int textLength = event.getDocument().getTextLength();
      // adding +1, as inlays at the end of the moved range stick to the following text (and impact its layout)
      applianceManager.recalculate(Arrays.asList(new TextRange(srcOffset, Math.min(textLength, srcOffset + event.getNewLength() + 1)),
                                                 new TextRange(dstOffset, Math.min(textLength, dstOffset + event.getNewLength() + 1))));
    }
  }
@Override
  public void documentChanged(@NotNull DocumentEvent event)