code: func NewTimeoutWheel(options ...Option) *TimeoutWheel {
  	opts := &opts{
  		tickInterval: defaultTickInterval,
  		size:         defaultNumBuckets,
  		poolsize:     defaultPoolSize,
  	}
  
  	for _, option := range options {
  		option(opts)
  	}
  
  	poolsize := opts.poolsize
  	if opts.size < opts.poolsize {
  		poolsize = opts.size
  	}
  
  	t := &TimeoutWheel{
  		mtxPool:      make([]paddedMutex, poolsize),
  		freelists:    make([]timeoutList, poolsize),
  		state:        stopped,
  		poolMask:     poolsize - 1,
  		buckets:      make([]timeoutList, opts.size),
  		tickInterval: opts.tickInterval,
  		bucketMask:   opts.size - 1,
  		ticks:        0,
  	}
  	t.Start()
  	return t
  }
docs: // NewTimeoutWheel creates and starts a new TimeoutWheel collection.