@Override
  public void revalidate(@NotNull PositionTracker<Balloon> tracker) {
    if (isDisposed || ApplicationManager.getApplication().isDisposed()) {
      return;
    }

    RelativePoint newPosition = tracker.recalculateLocation(this);
    if (newPosition != null) {
      Point newPoint = myPosition.getShiftedPoint(newPosition.getPoint(myLayeredPane), myCalloutShift);
      invalidateShadow = !Objects.equals(myTargetPoint, newPoint);
      myTargetPoint = newPoint;
      myPosition.updateBounds(this);
    }
  }
@Override
  public void revalidate(@NotNull PositionTracker<Balloon> tracker)