method remove_key_value key value =
let old_values_for_key = self#lookup key in
let new_values_for_key =
List.filter
(fun a_value -> not (value = a_value))
old_values_for_key in
let new_bindings_for_key =
List.rev (* We reverse as we want to keep the previous element 'priority' *)
(List.map
(fun a_value -> key, a_value)
new_values_for_key) in
self#remove ~all:true key;
List.iter
(fun (new_key, new_value) ->
self#add new_key new_value)
new_bindings_for_key