func New(settype SetType) Interface {
	if settype == NonThreadSafe {
		return newNonTS()
	}
	return newTS()
}
New creates and initalizes a new Set interface. Its single parameter
denotes the type of set to create. Either ThreadSafe or
NonThreadSafe. The default is ThreadSafe.
package set
type SetType int
const (
	ThreadSafe = iota
	NonThreadSafe
)
func (s SetType) String() string {
	switch s {
	case ThreadSafe:
		return "ThreadSafe"
	case NonThreadSafe:
		return "NonThreadSafe"
	}
	return ""
}
type Interface interface {
	Add(items ...interface{})
	Remove(items ...interface{})
	Pop() interface{}
	Has(items ...interface{}) bool
	Size() int
	Clear()
	IsEmpty() bool
	IsEqual(s Interface) bool
	IsSubset(s Interface) bool
	IsSuperset(s Interface) bool
	Each(func(interface{}) bool)
	String() string
	List() []interface{}
	Copy() Interface
	Merge(s Interface)
	Separate(s Interface)
}
var keyExists = struct{}{}