module Comparator:sig..end
    One of the type parameters is a phantom parameter used to distinguish comparators
    potentially built on different comparison functions.  In particular, we want to
    distinguish those using polymorphic compare and those using a monomorphic compare.
type ('a, 'witness) t = private {
   | 
compare : | 
   | 
sexp_of_t : | 
type('a, 'b)comparator =('a, 'b) t
module type S =sig..end
module type S1 =sig..end
module Poly:S1with type 'a t = 'a
module S_to_S1:
Make functors mint fresh types that are used as the phantom
    comparator_witnesses.module Make:
module Make1: