sig type t val on_unload : Bogue.Empty.t -> (unit -> unit) -> unit end