void (@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); } }