code: func NewKeyedSet(keyf func(interface{}) interface{}, items ...interface{}) Set {
  	res := keyedSetImpl{
  		data:    make(map[interface{}]interface{}),
  		keyfunc: keyf,
  	}
  	for _, item := range items {
  		res.Add(item)
  	}
  	return res
  }
docs: // Returns a new Set pre-populated with the given items