code: func (q *Type) Add(item interface{}) {
  	q.cond.L.Lock()
  	defer q.cond.L.Unlock()
  	if q.shuttingDown {
  		return
  	}
  	if q.dirty.has(item) {
  		return
  	}
  	q.dirty.insert(item)
  	if q.processing.has(item) {
  		return
  	}
  	q.queue = append(q.queue, item)
  	q.cond.Signal()
  }
docs: // Add marks item as needing processing.