sig   type 'a k   val create_key : string -> 'a k   val eq_type : 'a k -> 'b k -> ('a, 'b) eq option   val print : 'a k Pretty_utils.formatter   val compare : 'a k -> 'b k -> int   val equal : 'a k -> 'b k -> bool   val hash : 'a k -> int   val tag : 'a k -> int   type 'a structure =       Void : 'Structure.Shape.structure     | Leaf : 'a k -> 'Structure.Shape.structure     | Node : 'Structure.Shape.structure *         'Structure.Shape.structure -> ('a * 'b) Structure.Shape.structure end