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