code: func (f *FakeClock) setTimeLocked(t time.Time) {
  	f.time = t
  	newWaiters := make([]fakeClockWaiter, 0, len(f.waiters))
  	for i := range f.waiters {
  		w := &f.waiters[i]
  		if !w.targetTime.After(t) {
  
  			if w.skipIfBlocked {
  				select {
  				case w.destChan <- t:
  					w.fired = true
  				default:
  				}
  			} else {
  				w.destChan <- t
  				w.fired = true
  			}
  
  			if w.stepInterval > 0 {
  				for !w.targetTime.After(t) {
  					w.targetTime = w.targetTime.Add(w.stepInterval)
  				}
  				newWaiters = append(newWaiters, *w)
  			}
  
  		} else {
  			newWaiters = append(newWaiters, f.waiters[i])
  		}
  	}
  	f.waiters = newWaiters
  }
docs: // Actually changes the time and checks any waiters. f must be write-locked.