func (m *MultiMap) Values() []interface{} {
	values := make([]interface{}, m.Size())
	count := 0
	for _, set := range m.m {
		for value := range set {
			values[count] = value
			count++
		}
	}
	return values
}
Values returns all values from each key-value pair contained in this multimap.
This is done without collapsing duplicates. (size of Values() = MultiMap.Size()).
package setmultimap
import multimap "github.com/jwangsadinata/go-multimap"
var exists = struct{}{}
type Set map[interface{}]struct{}
type MultiMap struct {
	m map[interface{}]Set
}
func New() *MultiMap {
	return &MultiMap{m: make(map[interface{}]Set)}
}
func (m *MultiMap) Get(key interface{}) (values []interface{}, found bool) {
	set, found := m.m[key]
	values = make([]interface{}, len(set))
	count := 0
	for value := range set {
		values[count] = value
		count++
	}
	return
}
func (m *MultiMap) Put(key interface{}, value interface{}) {
	set, found := m.m[key]
	if found {
		set[value] = exists
	} else {
		set = make(Set)
		set[value] = exists
		m.m[key] = set
	}
}
func (m *MultiMap) PutAll(key interface{}, values []interface{}) {
	for _, value := range values {
		m.Put(key, value)
	}
}
func (m *MultiMap) Contains(key interface{}, value interface{}) bool {
	set, found := m.m[key]
	if _, ok := set[value]; ok {
		return true && found
	}
	return false && found
}
func (m *MultiMap) ContainsKey(key interface{}) (found bool) {
	_, found = m.m[key]
	return
}
func (m *MultiMap) ContainsValue(value interface{}) bool {
	for _, set := range m.m {
		if _, ok := set[value]; ok {
			return true
		}
	}
	return false
}
func (m *MultiMap) Remove(key interface{}, value interface{}) {
	set, found := m.m[key]
	if found {
		delete(set, value)
	}
	if len(m.m[key]) == 0 {
		delete(m.m, key)
	}
}
func (m *MultiMap) RemoveAll(key interface{}) {
	delete(m.m, key)
}
func (m *MultiMap) Empty() bool {
	return m.Size() == 0
}
func (m *MultiMap) Size() int {
	size := 0
	for _, set := range m.m {
		size += len(set)
	}
	return size
}
func (m *MultiMap) Keys() []interface{} {
	keys := make([]interface{}, m.Size())
	count := 0
	for key, value := range m.m {
		for range value {
			keys[count] = key
			count++
		}
	}
	return keys
}
func (m *MultiMap) KeySet() []interface{} {
	keys := make([]interface{}, len(m.m))
	count := 0
	for key := range m.m {
		keys[count] = key
		count++
	}
	return keys
}