code: public static UnsynchronizedRateLimiter create(double permitsPerSecond, long warmupPeriod, TimeUnit unit) {
      return create(SleepingTicker.SYSTEM_TICKER, permitsPerSecond, warmupPeriod, unit);
    }
docs: Creates a {@code UnsynchronizedRateLimiter} with the specified stable throughput, given as
  "permits per second" (commonly referred to as <i>QPS</i>, queries per second), and a
  <i>warmup period</i>, during which the {@code UnsynchronizedRateLimiter} smoothly ramps up its rate,
  until it reaches its maximum rate at the end of the period (as long as there are enough
  requests to saturate it). Similarly, if the {@code UnsynchronizedRateLimiter} is left <i>unused</i> for
  a duration of {@code warmupPeriod}, it will gradually return to its "cold" state,
  i.e. it will go through the same warming up process as when it was first created.
  
  <p>The returned {@code UnsynchronizedRateLimiter} is intended for cases where the resource that actually
  fulfills the requests (e.g., a remote server) needs "warmup" time, rather than
  being immediately accessed at the stable (maximum) rate.
  
  <p>The returned {@code UnsynchronizedRateLimiter} starts in a "cold" state (i.e. the warmup period
  will follow), and if it is left unused for long enough, it will return to that state.
  
  @param permitsPerSecond the rate of the returned {@code UnsynchronizedRateLimiter}, measured in
  how many permits become available per second. Must be positive
  @param warmupPeriod the duration of the period where the {@code UnsynchronizedRateLimiter} ramps up its
  rate, before reaching its stable (maximum) rate
  @param unit the time unit of the warmupPeriod argument