code: func AdvanceTimeBy(st TimeProvider, d time.Duration) {
  	t := st.(*sleepableTime)
  	t.mu.Lock()
  	defer t.mu.Unlock()
  
  	t.currentTime = t.currentTime.Add(d)
  	for k, v := range t.waiters {
  		if k.Before(t.currentTime) {
  			for _, c := range v {
  				c <- t.currentTime
  			}
  			delete(t.waiters, k)
  		}
  	}
  }
docs: // AdvanceTimeBy simulates advancing time by some time.Duration d.
  // This function panics if st is not the result of a call to
  // SleepProvider.