sig
  val names : string list
  val f :
    ([< `Read | `Set_and_create ], Test.Basic_test.t, unit -> unit)
    Fieldslib.Field.t_with_perm
  val name :
    ([< `Read | `Set_and_create ], Test.Basic_test.t, string)
    Fieldslib.Field.t_with_perm
  val test_id :
    ([< `Read | `Set_and_create ], Test.Basic_test.t, Id.t)
    Fieldslib.Field.t_with_perm
  val make_creator :
    test_id:(([< `Read | `Set_and_create ], Test.Basic_test.t, Id.t)
             Fieldslib.Field.t_with_perm -> '-> ('-> Id.t) * 'c) ->
    name:(([< `Read | `Set_and_create ], Test.Basic_test.t, string)
          Fieldslib.Field.t_with_perm -> '-> ('-> string) * 'd) ->
    f:(([< `Read | `Set_and_create ], Test.Basic_test.t, unit -> unit)
       Fieldslib.Field.t_with_perm -> '-> ('-> unit -> unit) * 'e) ->
    '-> ('-> Test.Basic_test.t) * 'e
  val create :
    test_id:Id.t -> name:string -> f:(unit -> unit) -> Test.Basic_test.t
  val map :
    test_id:(([< `Read | `Set_and_create ], Test.Basic_test.t, Id.t)
             Fieldslib.Field.t_with_perm -> Id.t) ->
    name:(([< `Read | `Set_and_create ], Test.Basic_test.t, string)
          Fieldslib.Field.t_with_perm -> string) ->
    f:(([< `Read | `Set_and_create ], Test.Basic_test.t, unit -> unit)
       Fieldslib.Field.t_with_perm -> unit -> unit) ->
    Test.Basic_test.t
  val iter :
    test_id:(([< `Read | `Set_and_create ], Test.Basic_test.t, Id.t)
             Fieldslib.Field.t_with_perm -> 'a) ->
    name:(([< `Read | `Set_and_create ], Test.Basic_test.t, string)
          Fieldslib.Field.t_with_perm -> 'b) ->
    f:(([< `Read | `Set_and_create ], Test.Basic_test.t, unit -> unit)
       Fieldslib.Field.t_with_perm -> 'c) ->
    'c
  val fold :
    init:'->
    test_id:('->
             ([< `Read | `Set_and_create ], Test.Basic_test.t, Id.t)
             Fieldslib.Field.t_with_perm -> 'b) ->
    name:('->
          ([< `Read | `Set_and_create ], Test.Basic_test.t, string)
          Fieldslib.Field.t_with_perm -> 'c) ->
    f:('->
       ([< `Read | `Set_and_create ], Test.Basic_test.t, unit -> unit)
       Fieldslib.Field.t_with_perm -> 'd) ->
    'd
  val map_poly :
    ([< `Read | `Set_and_create ], Test.Basic_test.t, 'a)
    Fieldslib.Field.user -> 'a list
  val for_all :
    test_id:(([< `Read | `Set_and_create ], Test.Basic_test.t, Id.t)
             Fieldslib.Field.t_with_perm -> bool) ->
    name:(([< `Read | `Set_and_create ], Test.Basic_test.t, string)
          Fieldslib.Field.t_with_perm -> bool) ->
    f:(([< `Read | `Set_and_create ], Test.Basic_test.t, unit -> unit)
       Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val exists :
    test_id:(([< `Read | `Set_and_create ], Test.Basic_test.t, Id.t)
             Fieldslib.Field.t_with_perm -> bool) ->
    name:(([< `Read | `Set_and_create ], Test.Basic_test.t, string)
          Fieldslib.Field.t_with_perm -> bool) ->
    f:(([< `Read | `Set_and_create ], Test.Basic_test.t, unit -> unit)
       Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val to_list :
    test_id:(([< `Read | `Set_and_create ], Test.Basic_test.t, Id.t)
             Fieldslib.Field.t_with_perm -> 'a) ->
    name:(([< `Read | `Set_and_create ], Test.Basic_test.t, string)
          Fieldslib.Field.t_with_perm -> 'a) ->
    f:(([< `Read | `Set_and_create ], Test.Basic_test.t, unit -> unit)
       Fieldslib.Field.t_with_perm -> 'a) ->
    'a list
  module Direct :
    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
end