method remove_key_value_or_fail key value =
let old_values_for_key_no = List.length (self#lookup key) in
self#remove_key_value key value;
if not ((List.length (self#lookup key)) = (old_values_for_key_no - 1)) then begin
failwith "remove_key_value_or_fail did not remove *one* element";
end