@CalledInAny
  public static @Nullable <T> T computeInBackgroundAndTryWait(@NotNull Computable<? extends T> computable,
                                                              @NotNull Consumer<? super T> asyncCallback,
                                                              long waitMillis) {
    Pair<T, ProgressIndicator> pair = computeInBackgroundAndTryWait(
      indicator -> computable.compute(),
      (result, indicator) -> asyncCallback.consume(result),
      ModalityState.defaultModalityState(),
      waitMillis
    );
    return pair.first;
  }
@CalledInAny
  public static @Nullable <T> T computeInBackgroundAndTryWait(@NotNull Computable<? extends T> computable,
                                                              @NotNull Consumer<? super T> asyncCallback,
                                                              long waitMillis)