code: func (c *CircularBuffer) Reset() {
  	c.Lock()
  	defer c.Unlock()
  	// could close mulitple times
  	c.watchers.walk(func(w *BufferWatcher) {
  		w.Close()
  	})
  	c.watchers = newWatcherTree()
  	c.start = -1
  	c.end = -1
  	c.size = 0
  	for i := 0; i < len(c.events); i++ {
  		c.events[i] = Event{}
  	}
  }
docs: // Reset resets all events from the queue
  // and closes all active watchers