code: public static <T> Supplier<T> debounce(final Supplier<T> function, final int delayMilliseconds) {
          return new Supplier<T>() {
              private java.util.concurrent.ScheduledFuture<T> timeout;
  
              @Override
              public T get() {
                  clearTimeout(timeout);
                  timeout = delay(function, delayMilliseconds);
                  return null;
              }
          };
      }
docs: /*
  Documented, #debounce