sig
  val layout_type : 'a Record.layout -> 'a Record.t Record.Type.t
  val declare0 : name:string -> 's Record.layout
  val declare1 :
    name:string ->
    f1_name:string ->
    f1_type:'a Record.Type.t -> 's Record.layout * ('a, 's) Record.Field.t
  val declare2 :
    name:string ->
    f1_name:string ->
    f1_type:'a1 Record.Type.t ->
    f2_name:string ->
    f2_type:'a2 Record.Type.t ->
    's Record.layout * ('a1, 's) Record.Field.t * ('a2, 's) Record.Field.t
  val declare3 :
    name:string ->
    f1_name:string ->
    f1_type:'a1 Record.Type.t ->
    f2_name:string ->
    f2_type:'a2 Record.Type.t ->
    f3_name:string ->
    f3_type:'a3 Record.Type.t ->
    's Record.layout * ('a1, 's) Record.Field.t * ('a2, 's) Record.Field.t *
    ('a3, 's) Record.Field.t
  val declare4 :
    name:string ->
    f1_name:string ->
    f1_type:'a1 Record.Type.t ->
    f2_name:string ->
    f2_type:'a2 Record.Type.t ->
    f3_name:string ->
    f3_type:'a3 Record.Type.t ->
    f4_name:string ->
    f4_type:'a4 Record.Type.t ->
    's Record.layout * ('a1, 's) Record.Field.t * ('a2, 's) Record.Field.t *
    ('a3, 's) Record.Field.t * ('a4, 's) Record.Field.t
end