code: func (q *NodeQueue) Dequeue() graph.Node {
  	if q.Len() == 0 {
  		panic("queue: empty queue")
  	}
  
  	var n graph.Node
  	n, q.data[q.head] = q.data[q.head], nil
  	q.head++
  
  	if q.Len() == 0 {
  		q.head = 0
  		q.data = q.data[:0]
  	}
  
  	return n
  }
docs: // Dequeue returns the graph.Node at the front of the queue and
  // removes it from the queue.