code: func (it *And) optimizeContains() {
  	// GetSubIterators allocates, so this is currently safe.
  	// TODO(kortschak) Reuse it.checkList if possible.
  	// This involves providing GetSubIterators with a slice to fill.
  	// Generally this is a worthwhile thing to do in other places as well.
  	it.checkList = it.SubIterators()
  	sort.Sort(byCost(it.checkList))
  }
docs: // optimizeContains() creates an alternate check list, containing the same contents
  // but with a new ordering, however it wishes.