1 type Bimultimap<K, V> = 2 let multimap = Multimap<K, V>.new 3 let back = Multimap<V, K>.new 4 5 def size = multimap.size 6 7 fun get k = multimap[k] 8 def get_back v = back[v] 9 10 def try_get k = multimap.try_get k 11 def try_get_back v = back.try_get v 12 13 def contains k = multimap.contains k 14 15 def add k v = 16 multimap.add k v 17 back.add v k 18 19 def remove k v = 20 multimap.remove k v 21 back.remove v k 22 23 def remove_all k = 24 for v in multimap[k] do 25 back.remove v k 26 27 multimap.remove_all k 28