@Override
    public void visibleAreaChanged(@NotNull VisibleAreaEvent e) {
      if (((FoldingModelImpl)getSlave().getFoldingModel()).isInBatchFoldingOperation()) return;
      if (getMaster().isDisposed() || getSlave().isDisposed()) return;

      Rectangle newRectangle = e.getNewRectangle();
      Rectangle oldRectangle = e.getOldRectangle();
      if (oldRectangle == null) return;

      if (newRectangle.x != oldRectangle.x) syncHorizontalScroll(false);
      if (newRectangle.y != oldRectangle.y) syncVerticalScroll(false);
    }
@Override
    public void visibleAreaChanged(@NotNull VisibleAreaEvent e)