sig
  type _ tag =
      Tag :
        ('variant, 'args) Variant_and_record_intf.M.Tag.t -> 'variant
                                                             Variant_and_record_intf.M.??.tag
  type _ value =
      Value : ('variant, 'args) Variant_and_record_intf.M.Tag.t *
        'args -> 'variant Variant_and_record_intf.M.??.value
  type 'a t
  val typename_of_t : 'Variant_and_record_intf.M.??.-> 'Typename.t
  val length : 'Variant_and_record_intf.M.??.-> int
  val tag :
    'Variant_and_record_intf.M.??.->
    int -> 'Variant_and_record_intf.M.??.tag
  val is_polymorphic : 'Variant_and_record_intf.M.??.-> bool
  val value :
    'Variant_and_record_intf.M.??.->
    '-> 'Variant_and_record_intf.M.??.value
  val fold :
    'Variant_and_record_intf.M.??.->
    init:'acc ->
    f:('acc -> 'Variant_and_record_intf.M.??.tag -> 'acc) -> 'acc
  val internal_use_only :
    'Variant_and_record_intf.M.Variant_internal.t ->
    'Variant_and_record_intf.M.??.t
end