@Override
    public void mouseMoved(MouseEvent e) {
      if (!isMouseMoved(e.getLocationOnScreen())) return;
      Point point = e.getPoint();
      int index = myList.locationToIndex(point);
      if (isSelectableAt(index)) {
        if (index != myLastSelectedIndex && !isMovingToSubmenu(e)) {
          myExtendMode = calcExtendMode(index);
          if (!isMultiSelectionEnabled() || !UIUtil.isSelectionButtonDown(e) && myList.getSelectedIndices().length <= 1) {
            myList.setSelectedIndex(index);
            if (myShowSubmenuOnHover) {
              disposeChildren();
            }
            if (myExtendMode == ExtendMode.EXTEND_ON_HOVER) {
              showSubMenu(index, true);
            }
          }
          restartTimer();
          myLastSelectedIndex = index;
        }
      }
      else {
        myList.clearSelection();
        myLastSelectedIndex = -1;
      }
      if (updateSelectedButtonIndex(point)) {
        getContent().repaint();
      }

      notifyParentOnChildSelection();
    }
@Override
    public void mouseMoved(MouseEvent e)