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