public @NotNull Map<SdkType, NewSdkAction> createDownloadActions(@Nullable Predicate<? super SdkTypeId> filter) {
    Map<SdkType, NewSdkAction> result = new LinkedHashMap<>();
    for (final SdkType type : getAddableSdkTypes(filter)) {
      SdkDownload downloadExtension = SdkDownload.EP_NAME.findFirstSafe(it -> it.supportsDownload(type));
      if (downloadExtension == null) continue;

      String text = ProjectBundle.message("sdk.configure.download.action", type.getPresentableName());
      String title = ProjectBundle.message("sdk.configure.download.actionTitle", type.getPresentableName());
      String subText = ProjectBundle.message("sdk.configure.download.subAction", type.getPresentableName());

      NewSdkAction downloadAction = new NewSdkAction(type, title, text, subText, downloadExtension.getIconForDownloadAction(type)) {
        @Override
        public void actionPerformed(@Nullable Sdk selectedSdk,
                                    @NotNull JComponent parent,
                                    @NotNull java.util.function.Consumer<? super Sdk> callback) {
          doDownload(downloadExtension, parent, selectedSdk, type, callback);
        }
      };

      result.put(type, downloadAction);
    }
    return result;
  }
public @NotNull Map<SdkType, NewSdkAction> createDownloadActions(@Nullable Predicate<? super SdkTypeId> filter)