void (@NotNull JComponent parent, @NotNull Disposable lifetime) { if (mySuggestedItemsConnected) return; mySuggestedItemsConnected = true; SdkDetector.getInstance().getDetectedSdksWithUpdate(myProject, lifetime, ModalityState.stateForComponent(parent), new DetectedSdkListener() { @Override public void onSearchStarted() { mySuggestions = ImmutableList.of(); myIsSdkDetectorInProgress = true; syncModel(); } @Override public void onSdkDetected(@NotNull SdkType type, @NotNull String version, @NotNull String home) { SuggestedItem item = new SuggestedItem(type, version, home); if (!mySuggestedItemsFilter.value(item)) return; mySuggestions = ImmutableList.<SuggestedItem>builder() .addAll(mySuggestions) .add(item) .build(); syncModel(); } @Override public void onSearchCompleted() { myIsSdkDetectorInProgress = false; syncModel(); } }); }