sig
  type _ field =
      Field :
        ('record, 'a) Variant_and_record_intf.M.Field.t -> 'record
                                                           Variant_and_record_intf.M.??.field
  type 'record fields = {
    get :
      'field. ('record, 'field) Variant_and_record_intf.M.Field.t -> 'field;
  }
  type 'a t
  val typename_of_t : 'Variant_and_record_intf.M.??.-> 'Typename.t
  val length : 'Variant_and_record_intf.M.??.-> int
  val field :
    'Variant_and_record_intf.M.??.->
    int -> 'Variant_and_record_intf.M.??.field
  val has_double_array_tag : 'Variant_and_record_intf.M.??.-> bool
  val create :
    'Variant_and_record_intf.M.??.->
    'Variant_and_record_intf.M.??.fields -> 'a
  val fold :
    'Variant_and_record_intf.M.??.->
    init:'acc ->
    f:('acc -> 'Variant_and_record_intf.M.??.field -> 'acc) -> 'acc
  val internal_use_only :
    'Variant_and_record_intf.M.Record_internal.t ->
    'Variant_and_record_intf.M.??.t
end