code: func (set *Set) Dispose() {
  	set.lock.Lock()
  	defer set.lock.Unlock()
  
  	for k := range set.items {
  		delete(set.items, k)
  	}
  
  	//this is so we don't hang onto any references
  	for i := 0; i < len(set.flattened); i++ {
  		set.flattened[i] = nil
  	}
  
  	set.flattened = set.flattened[:0]
  	pool.Put(set)
  }
docs: // Dispose will add this set back into the pool.