func (m *MultiMap) Size() int {
	size := 0
	for _, value := range m.m {
		size += len(value)
	}
	return size
}
Size returns number of key-value pairs in the multimap.
package slicemultimap
import multimap "github.com/jwangsadinata/go-multimap"
type MultiMap struct {
	m map[interface{}][]interface{}
}
func New() *MultiMap {
	return &MultiMap{m: make(map[interface{}][]interface{})}
}
func (m *MultiMap) Get(key interface{}) (values []interface{}, found bool) {
	values, found = m.m[key]
	return
}
func (m *MultiMap) Put(key interface{}, value interface{}) {
	m.m[key] = append(m.m[key], value)
}
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 {
	values, found := m.m[key]
	for _, v := range values {
		if v == value {
			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 _, values := range m.m {
		for _, v := range values {
			if v == value {
				return true
			}
		}
	}
	return false
}
func (m *MultiMap) Remove(key interface{}, value interface{}) {
	values, found := m.m[key]
	if found {
		for i, v := range values {
			if v == value {
				m.m[key] = append(values[:i], values[i+1:]...)
			}
		}
	}
	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
}