public static @Nullable <E> Component getDeepestRendererChildComponentAt(@NotNull JList<E> list, @NotNull Point point) {
    int idx = list.locationToIndex(point);
    if (idx < 0) return null;

    Rectangle cellBounds = list.getCellBounds(idx, idx);
    if (!cellBounds.contains(point)) return null;

    E value = list.getModel().getElementAt(idx);
    if (value == null) return null;

    Component rendererComponent = list.getCellRenderer().getListCellRendererComponent(list, value, idx, true, true);
    rendererComponent.setBounds(cellBounds.x, cellBounds.y, cellBounds.width, cellBounds.height);
    UIUtil.layoutRecursively(rendererComponent);

    int rendererRelativeX = point.x - cellBounds.x;
    int rendererRelativeY = point.y - cellBounds.y;
    return UIUtil.getDeepestComponentAt(rendererComponent, rendererRelativeX, rendererRelativeY);
  }
public static @Nullable <E> Component getDeepestRendererChildComponentAt(@NotNull JList<E> list, @NotNull Point point)