sig   type char_   type key   type 'a t   val empty : 'CCTrie.S.t   val is_empty : 'CCTrie.S.t -> bool   val add : CCTrie.S.key -> '-> 'CCTrie.S.t -> 'CCTrie.S.t   val remove : CCTrie.S.key -> 'CCTrie.S.t -> 'CCTrie.S.t   val find : CCTrie.S.key -> 'CCTrie.S.t -> 'a option   val find_exn : CCTrie.S.key -> 'CCTrie.S.t -> 'a   val longest_prefix : CCTrie.S.key -> 'CCTrie.S.t -> CCTrie.S.key   val update :     CCTrie.S.key ->     ('a option -> 'a option) -> 'CCTrie.S.t -> 'CCTrie.S.t   val fold : ('-> CCTrie.S.key -> '-> 'b) -> '-> 'CCTrie.S.t -> 'b   val mapi : (CCTrie.S.key -> '-> 'b) -> 'CCTrie.S.t -> 'CCTrie.S.t   val map : ('-> 'b) -> 'CCTrie.S.t -> 'CCTrie.S.t   val iter : (CCTrie.S.key -> '-> unit) -> 'CCTrie.S.t -> unit   val fold_values : ('-> '-> 'b) -> '-> 'CCTrie.S.t -> 'b   val iter_values : ('-> unit) -> 'CCTrie.S.t -> unit   val merge :     ('-> '-> 'a option) ->     'CCTrie.S.t -> 'CCTrie.S.t -> 'CCTrie.S.t   val size : 'CCTrie.S.t -> int   val to_list : 'CCTrie.S.t -> (CCTrie.S.key * 'a) list   val of_list : (CCTrie.S.key * 'a) list -> 'CCTrie.S.t   val to_seq : 'CCTrie.S.t -> (CCTrie.S.key * 'a) CCTrie.sequence   val of_seq : (CCTrie.S.key * 'a) CCTrie.sequence -> 'CCTrie.S.t   val to_seq_values : 'CCTrie.S.t -> 'CCTrie.sequence   val to_tree :     'CCTrie.S.t ->     [ `Char of CCTrie.S.char_ | `Switch | `Val of 'a ] CCTrie.ktree   val above :     CCTrie.S.key -> 'CCTrie.S.t -> (CCTrie.S.key * 'a) CCTrie.sequence   val below :     CCTrie.S.key -> 'CCTrie.S.t -> (CCTrie.S.key * 'a) CCTrie.sequence   val check_invariants : 'CCTrie.S.t -> bool end