code: func NewStreamWatcher(d Decoder, r Reporter) *StreamWatcher {
  	sw := &StreamWatcher{
  		source:   d,
  		reporter: r,
  		// It's easy for a consumer to add buffering via an extra
  		// goroutine/channel, but impossible for them to remove it,
  		// so nonbuffered is better.
  		result: make(chan Event),
  	}
  	go sw.receive()
  	return sw
  }
docs: // NewStreamWatcher creates a StreamWatcher from the given decoder.