The bag essentially works like this Map<K, Collection<V>>
But looks like this Bag<K, V>
I use my own simple "BagSet" which works like this Map<K, Set<V>>