code: func (it *HasA) Next(ctx context.Context) bool {
  	graph.NextLogIn(it)
  	it.runstats.Next += 1
  	if it.resultIt != nil {
  		it.resultIt.Close()
  	}
  
  	if !it.primaryIt.Next(ctx) {
  		it.err = it.primaryIt.Err()
  		return graph.NextLogOut(it, false)
  	}
  	tID := it.primaryIt.Result()
  	val := it.qs.QuadDirection(tID, it.dir)
  	it.result = val
  	return graph.NextLogOut(it, true)
  }
docs: // Next advances the iterator. This is simpler than Contains. We have a
  // subiterator we can get a value from, and we can take that resultant quad,
  // pull our direction out of it, and return that.