struct
  include Core.Std.Hashtbl
  let to_stream t = Stream.of_list (to_alist t)
  let of_stream xs =
    let t = Poly.create () in
    Stream.iter xs ~f:(fun (key,data) -> Poly.replace t ~key ~data) ;
    t
end