final @NotNull Promise<? super Object> select(final Configurable configurable) {
    assert !myDisposed : "Already disposed";
    long startTime = System.currentTimeMillis();
    final boolean loadedFromCache = myCardPanel.getValue(configurable, false) != null;
    ActionCallback callback = myCardPanel.select(configurable, false);
    callback
      .doWhenDone(() -> {
        if (myConfigurable != configurable) {
          SpotlightPainter.allowScrolling(this);
        }
        myConfigurable = configurable;
        updateCurrent(configurable, false);
        postUpdateCurrent(configurable);
        if (configurable != null) {
          FeatureUsageUiEventsKt.getUiEventLogger().logSelectConfigurable(configurable, loadedFromCache, System.currentTimeMillis() - startTime);
        }
      });
    return Promises.toPromise(callback);
  }
final @NotNull Promise<? super Object> select(final Configurable configurable)