private static @NotNull <R> Map<UnknownSdk, R> findFixesAndRemoveFixable(@NotNull ProgressIndicator indicator,
                                                                           @NotNull List<UnknownSdk> infos,
                                                                           @NotNull List<? extends UnknownSdkLookup> lookups,
                                                                           @NotNull TripleFunction<? super UnknownSdkLookup, ? super UnknownSdk, ? super ProgressIndicator, ? extends R> fun) {
    indicator.pushState();

    Map<UnknownSdk, R> result = new LinkedHashMap<>();
    for (Iterator<UnknownSdk> iterator = infos.iterator(); iterator.hasNext(); ) {
      UnknownSdk info = iterator.next();
      for (UnknownSdkLookup lookup : lookups) {

        indicator.pushState();
        R fix = fun.fun(lookup, info, indicator);
        indicator.popState();

        if (fix != null) {
          result.put(info, fix);
          iterator.remove();
          break;
        }
      }
    }

    indicator.popState();
    return result;
  }
private static @NotNull <R> Map<UnknownSdk, R> findFixesAndRemoveFixable(@NotNull ProgressIndicator indicator,
                                                                           @NotNull List<UnknownSdk> infos,
                                                                           @NotNull List<? extends UnknownSdkLookup> lookups,
                                                                           @NotNull TripleFunction<? super UnknownSdkLookup, ? super UnknownSdk, ? super ProgressIndicator, ? extends R> fun)