private boolean autoSelectUsingStatistics() {
    final String filter = getSpeedSearch().getFilter();
    if (!StringUtil.isEmpty(filter)) {
      int maxUseCount = -1;
      int mostUsedValue = -1;
      int elementsCount = myListModel.getSize();
      for (int i = 0; i < elementsCount; i++) {
        Object value = myListModel.getElementAt(i);
        final String text = getListStep().getTextFor(value);
        final int count =
            StatisticsManager.getInstance()
                .getUseCount(
                    new StatisticsInfo("#list_popup:" + myStep.getTitle() + "#" + filter, text));
        if (count > maxUseCount) {
          maxUseCount = count;
          mostUsedValue = i;
        }
      }

      if (mostUsedValue > 0) {
        ListScrollingUtil.selectItem(myList, mostUsedValue);
        return true;
      }
    }

    return false;
  }
 private void selectFirstSelectableItem() {
   for (int i = 0; i < myListModel.getSize(); i++) {
     if (getListStep().isSelectable(myListModel.getElementAt(i))) {
       myList.setSelectedIndex(i);
       break;
     }
   }
 }
  private int getSelectableCount() {
    int count = 0;
    for (int i = 0; i < myListModel.getSize(); i++) {
      final Object each = myListModel.getElementAt(i);
      if (getListStep().isSelectable(each)) {
        count++;
      }
    }

    return count;
  }
 private boolean hasSingleSelectableItemWithSubmenu() {
   boolean oneSubmenuFound = false;
   int countSelectables = 0;
   for (int i = 0; i < myListModel.getSize(); i++) {
     Object elementAt = myListModel.getElementAt(i);
     if (getListStep().isSelectable(elementAt)) {
       countSelectables++;
       if (getStep().hasSubstep(elementAt)) {
         if (oneSubmenuFound) {
           return false;
         }
         oneSubmenuFound = true;
       }
     }
   }
   return oneSubmenuFound && countSelectables == 1;
 }