It's a pointer and it can be nil. Usually, I wouldn't bother - but a t could be nil below, I tried to make nil a valid value representing an empty set. If you want to keep this, New can become `return &Set(nil).Add(items..)` when Add returns the new Set.