type t type 'a id val gen_id: unit -> 'a id val box: 'a id -> 'a -> t val unbox: 'a id -> t -> 'a option