code: func (p *Project) AddListener(c chan<- events.Event) {
  	if !p.hasListeners {
  		for _, l := range p.listeners {
  			close(l)
  		}
  		p.hasListeners = true
  		p.listeners = []chan<- events.Event{c}
  	} else {
  		p.listeners = append(p.listeners, c)
  	}
  }
docs: // AddListener adds the specified listener to the project.
  // This implements implicitly events.Emitter.