@Override
  public final boolean dispatchInputMethodEvent(InputMethodEvent event) {
    if (anyModalWindowsKeepPopupOpen()) {
      return false;
    }

    if (myComponent != null) {
      var prop = myComponent.getClientProperty(UIUtil.ENABLE_IME_FORWARDING_IN_POPUP);
      if (prop != null && (Boolean)prop) {
        // Don't handle the event, so that it can be forwarded to the popup
        return event.isConsumed();
      }
    }

    // Try forwarding the input method event to various possible speed search handlers

    JComponent comp = myPreferredFocusedComponent == null ? myComponent : myPreferredFocusedComponent;
    SpeedSearchSupply supply = SpeedSearchSupply.getSupply(comp, true);

    if (!event.isConsumed() && supply instanceof SpeedSearchBase<?>) {
      ((SpeedSearchBase<?>)supply).processInputMethodEvent(event);
    }

    if (!event.isConsumed() && comp instanceof ListWithFilter<?>) {
      ((ListWithFilter<?>)comp).processInputMethodEvent(event);
    }

    // Don't try to attempt to pass IMEs to speed search if the popup is a text field
    boolean isText = comp instanceof EditorTextField || comp instanceof JTextComponent;
    if (!event.isConsumed() && !isText && mySpeedSearchPatternField != null) {
      mySpeedSearchPatternField.getTextEditor().dispatchEvent(event);
      mySpeedSearch.updatePattern(mySpeedSearchPatternField.getText());
      mySpeedSearch.update();
    }
    return event.isConsumed();
  }
@Override
  public final boolean dispatchInputMethodEvent(InputMethodEvent event)