@Override
  public void close(final boolean isOk) {
    if (checkDisposed()){
      return;
    }

    myModel.saveInitialCheckBoxState(myCheckBox.isSelected());
    if (isOk) {
      final List<Object> chosenElements = getChosenElements();
      if (myActionListener instanceof MultiElementsCallback) {
        ((MultiElementsCallback)myActionListener).elementsChosen(chosenElements);
      }
      else {
        for (Object element : chosenElements) {
          myActionListener.elementChosen(element);
          String text = myModel.getFullName(element);
          if (text != null) {
            StatisticsManager.getInstance().incUseCount(new StatisticsInfo(statisticsContext(), text));
          }
        }
      }

      if (!chosenElements.isEmpty()) {
        final String enteredText = getTrimmedText();
        if (enteredText.indexOf('*') >= 0) {
          FeatureUsageTracker.getInstance().triggerFeatureUsed("navigation.popup.wildcards");
        }
        else {
          for (Object element : chosenElements) {
            final String name = myModel.getElementName(element);
            if (name != null) {
              if (!StringUtil.startsWithIgnoreCase(name, enteredText)) {
                FeatureUsageTracker.getInstance().triggerFeatureUsed("navigation.popup.camelprefix");
                break;
              }
            }
          }
        }
      }
    }
    Disposer.dispose(this);
    setDisposed(true);
    myAlarm.cancelAllRequests();


    cleanupUI(isOk);
    if (ApplicationManager.getApplication().isUnitTestMode()) return;
    if (myActionListener != null) {
      myActionListener.onClose();
    }
  }
@Override
  public void close(final boolean isOk)