code: func (m *Broadcaster) Watch() Interface {
  	var w *broadcasterWatcher
  	m.blockQueue(func() {
  		m.lock.Lock()
  		defer m.lock.Unlock()
  		id := m.nextWatcher
  		m.nextWatcher++
  		w = &broadcasterWatcher{
  			result:  make(chan Event, m.watchQueueLength),
  			stopped: make(chan struct{}),
  			id:      id,
  			m:       m,
  		}
  		m.watchers[id] = w
  	})
  	return w
  }
docs: // Watch adds a new watcher to the list and returns an Interface for it.
  // Note: new watchers will only receive new events. They won't get an entire history
  // of previous events.