code: func (m *ChannelDeMultiplexer) DeMultiplex(msg interface{}) {
  	m.lock.RLock()
  	defer m.lock.RUnlock()
  	if m.isClosed() {
  		return
  	}
  	for _, ch := range m.channels {
  		if ch.pred(msg) {
  			ch.ch <- msg
  		}
  	}
  }
docs: // DeMultiplex broadcasts the message to all channels that were returned
  // by AddChannel calls and that hold the respected predicates.