These are the types used for building a form by combining record fields.
You should never have to think about them, but they have to be exposed for type-checking to work correctly.
type ('field, 'field_ids, 'tail, 'tail_ids, 'all_fields, 'all_ids, 'record) handle_one_field
= ('field, ('field, 'tail) Record_builder.Hlist.cons, ('field_ids, 'tail_ids) Record_builder.Hlist.cons, 'tail, 'tail_ids, 'all_fields Record_builder.Hlist.nonempty, 'all_ids Record_builder.Hlist.nonempty, 'record) fold_step
type ('all_fields, 'all_ids, 'record) handle_all_fields
= ('record, 'all_fields Record_builder.Hlist.nonempty, 'all_ids Record_builder.Hlist.nonempty, Record_builder.Hlist.nil, Record_builder.Hlist.nil, 'all_fields Record_builder.Hlist.nonempty, 'all_ids Record_builder.Hlist.nonempty, 'record) fold_step