func NewWatcher() *Watcher {
	// prepare watcher
	w := &Watcher{
		streams: make(map[string]*Stream),
	}

	// create and add manager
	w.manager = newManager(w)

	return w
}
func NewWatcher() *Watcher {
	
	w := &Watcher{
		streams: make(map[string]*Stream),
	}

	
	w.manager = newManager(w)

	return w
}
func NewWatcher ( ) * Watcher { // prepare watcher w := & Watcher { streams : make ( map [ string ] * Stream ) , } // create and add manager w . manager = newManager ( w ) return w }
// NewWatcher creates and returns a new watcher.
NewWatcher creates and returns a new watcher .