code: func (m *Broadcaster) WatchWithPrefix(queuedEvents []Event) Interface {
  	var w *broadcasterWatcher
  	m.blockQueue(func() {
  		m.lock.Lock()
  		defer m.lock.Unlock()
  		id := m.nextWatcher
  		m.nextWatcher++
  		length := m.watchQueueLength
  		if n := len(queuedEvents) + 1; n > length {
  			length = n
  		}
  		w = &broadcasterWatcher{
  			result:  make(chan Event, length),
  			stopped: make(chan struct{}),
  			id:      id,
  			m:       m,
  		}
  		m.watchers[id] = w
  		for _, e := range queuedEvents {
  			w.result <- e
  		}
  	})
  	return w
  }
docs: // WatchWithPrefix adds a new watcher to the list and returns an Interface for it. It sends
  // queuedEvents down the new watch before beginning to send ordinary events from Broadcaster.
  // The returned watch will have a queue length that is at least large enough to accommodate
  // all of the items in queuedEvents.