sig
  type _ tag =
      Tag :
        ('variant, 'a) Variant_and_record_intf.M.Tag.t -> 'variant
                                                          Variant_and_record_intf.M.Variant_internal.tag
  type _ value =
      Value : ('variant, 'a) Variant_and_record_intf.M.Tag.t *
        '-> 'variant Variant_and_record_intf.M.Variant_internal.value
  type 'a t = {
    typename : 'Typename.t;
    tags : 'Variant_and_record_intf.M.Variant_internal.tag array;
    polymorphic : bool;
    value : '-> 'Variant_and_record_intf.M.Variant_internal.value;
  }
end