code: func (pq *PriorityQueue) Dispose() {
  	pq.lock.Lock()
  	defer pq.lock.Unlock()
  
  	pq.disposeLock.Lock()
  	defer pq.disposeLock.Unlock()
  
  	pq.disposed = true
  	for _, waiter := range pq.waiters {
  		waiter.response.Add(1)
  		waiter.ready <- true
  	}
  
  	pq.items = nil
  	pq.waiters = nil
  }
docs: // Dispose will prevent any further reads/writes to this queue
  // and frees available resources.