public <E extends Throwable> boolean runThrottled(long nowNs,
                                                    @NotNull ThrowableRunnable<E> task) throws E {
    if (isTimeForNextRun(nowNs)) {
      task.run();
      return true;
    }
    return false;
  }
public <E extends Throwable> boolean runThrottled(long nowNs,
                                                    @NotNull ThrowableRunnable<E> task)