public @NotNull Sdk createIncompleteSdk(@NotNull SdkType type,
                                          @NotNull SdkDownloadTask item,
                                          java.util.function.@Nullable Consumer<? super Sdk> callback) {
    // we do not ask the SdkType to set up the SDK for us, instead, we return an incomplete SDK to the
    // model with an expectation it would be updated later on
    String suggestedName = item.getSuggestedSdkName();
    String homeDir = FileUtil.toSystemIndependentName(item.getPlannedHomeDir());
    if (WslPath.isWslUncPath(homeDir)) {
      suggestedName += " (WSL)";
    }

    SdkDownloadTracker tracker = SdkDownloadTracker.getInstance();
    var tempSdk = createSdk(type, suggestedName, homeDir);
    tracker.registerSdkDownload(tempSdk, item);

    AtomicReference<Sdk> sdk = new AtomicReference<>();
    doAdd(tempSdk, (editableSdk) -> {
      tracker.registerEditableSdk(tempSdk, editableSdk);
      tracker.tryRegisterSdkDownloadFailureHandler(editableSdk, () -> removeSdk(editableSdk));
      sdk.set(editableSdk);
      if (callback != null) {
        callback.accept(editableSdk);
      }
    });

    return sdk.get();
  }
public @NotNull Sdk createIncompleteSdk(@NotNull SdkType type,
                                          @NotNull SdkDownloadTask item,
                                          java.util.function.@Nullable Consumer<? super Sdk> callback)