sig
  val iter :
    Test.Basic_test.t ->
    test_id:(([< `Read | `Set_and_create ], Test.Basic_test.t, Id.t)
             Fieldslib.Field.t_with_perm -> Test.Basic_test.t -> Id.t -> 'a) ->
    name:(([< `Read | `Set_and_create ], Test.Basic_test.t, string)
          Fieldslib.Field.t_with_perm -> Test.Basic_test.t -> string -> 'b) ->
    f:(([< `Read | `Set_and_create ], Test.Basic_test.t, unit -> unit)
       Fieldslib.Field.t_with_perm ->
       Test.Basic_test.t -> (unit -> unit) -> 'c) ->
    'c
  val fold :
    Test.Basic_test.t ->
    init:'->
    test_id:('->
             ([< `Read | `Set_and_create ], Test.Basic_test.t, Id.t)
             Fieldslib.Field.t_with_perm -> Test.Basic_test.t -> Id.t -> 'b) ->
    name:('->
          ([< `Read | `Set_and_create ], Test.Basic_test.t, string)
          Fieldslib.Field.t_with_perm -> Test.Basic_test.t -> string -> 'c) ->
    f:('->
       ([< `Read | `Set_and_create ], Test.Basic_test.t, unit -> unit)
       Fieldslib.Field.t_with_perm ->
       Test.Basic_test.t -> (unit -> unit) -> 'd) ->
    'd
end