private void mouseMoved(@NotNull MouseEvent event) {
      Component component = reference.get();
      if (component == null) return; // component is already collected
      int x = point.x;
      int y = point.y;
      point.setLocation(event.getXOnScreen(), event.getYOnScreen());
      SwingUtilities.convertPointFromScreen(point, component);
      if (point.x == x && point.y == y) return; // mouse location is not changed
      if (LOG.isTraceEnabled()) LOG.trace("mouse moved in " + component);
      notifySafely(component, listener -> listener.mouseMoved(component, point.x, point.y));
    }
private void mouseMoved(@NotNull MouseEvent event)