CCMultiMapMap that can map key to several values
module type S = sig ... endmodule type OrderedType = sig ... endmodule Make
  (K : OrderedType)
  (V : OrderedType) : 
  S with type key = K.t and type value = V.tRepresents n-to-n mappings between two types. Each element from the "left" is mapped to several right values, and conversely.
module type BIDIR = sig ... endmodule MakeBidir
  (L : OrderedType)
  (R : OrderedType) : 
  BIDIR with type left = L.t and type right = R.t