sig   type t   type left   type right   val empty : CCMultiMap.BIDIR.t   val is_empty : CCMultiMap.BIDIR.t -> bool   val add :     CCMultiMap.BIDIR.t ->     CCMultiMap.BIDIR.left -> CCMultiMap.BIDIR.right -> CCMultiMap.BIDIR.t   val remove :     CCMultiMap.BIDIR.t ->     CCMultiMap.BIDIR.left -> CCMultiMap.BIDIR.right -> CCMultiMap.BIDIR.t   val cardinal_left : CCMultiMap.BIDIR.t -> int   val cardinal_right : CCMultiMap.BIDIR.t -> int   val remove_left :     CCMultiMap.BIDIR.t -> CCMultiMap.BIDIR.left -> CCMultiMap.BIDIR.t   val remove_right :     CCMultiMap.BIDIR.t -> CCMultiMap.BIDIR.right -> CCMultiMap.BIDIR.t   val mem_left : CCMultiMap.BIDIR.t -> CCMultiMap.BIDIR.left -> bool   val mem_right : CCMultiMap.BIDIR.t -> CCMultiMap.BIDIR.right -> bool   val find_left :     CCMultiMap.BIDIR.t ->     CCMultiMap.BIDIR.left -> CCMultiMap.BIDIR.right CCMultiMap.sequence   val find_right :     CCMultiMap.BIDIR.t ->     CCMultiMap.BIDIR.right -> CCMultiMap.BIDIR.left CCMultiMap.sequence   val find1_left :     CCMultiMap.BIDIR.t ->     CCMultiMap.BIDIR.left -> CCMultiMap.BIDIR.right option   val find1_right :     CCMultiMap.BIDIR.t ->     CCMultiMap.BIDIR.right -> CCMultiMap.BIDIR.left option   val fold :     ('-> CCMultiMap.BIDIR.left -> CCMultiMap.BIDIR.right -> 'a) ->     '-> CCMultiMap.BIDIR.t -> 'a   val pairs :     CCMultiMap.BIDIR.t ->     (CCMultiMap.BIDIR.left * CCMultiMap.BIDIR.right) CCMultiMap.sequence   val add_pairs :     CCMultiMap.BIDIR.t ->     (CCMultiMap.BIDIR.left * CCMultiMap.BIDIR.right) CCMultiMap.sequence ->     CCMultiMap.BIDIR.t   val seq_left :     CCMultiMap.BIDIR.t -> CCMultiMap.BIDIR.left CCMultiMap.sequence   val seq_right :     CCMultiMap.BIDIR.t -> CCMultiMap.BIDIR.right CCMultiMap.sequence end