sig
  val names : string list
  val len :
    ([< `Read | `Set_and_create ], 'Partial_array.t, int)
    Fieldslib.Field.t_with_perm
  val values :
    ([< `Read | `Set_and_create ], 'Partial_array.t, 'a array)
    Fieldslib.Field.t_with_perm
  val make_creator :
    values:(([< `Read | `Set_and_create ], 'Partial_array.t, 'a array)
            Fieldslib.Field.t_with_perm -> '-> ('-> 'd array) * 'e) ->
    len:(([< `Read | `Set_and_create ], 'Partial_array.t, int)
         Fieldslib.Field.t_with_perm -> '-> ('-> int) * 'g) ->
    '-> ('-> 'Partial_array.t) * 'g
  val create : values:'a array -> len:int -> 'Partial_array.t
  val map :
    values:(([< `Read | `Set_and_create ], 'Partial_array.t, 'a array)
            Fieldslib.Field.t_with_perm -> 'b array) ->
    len:(([< `Read | `Set_and_create ], 'Partial_array.t, int)
         Fieldslib.Field.t_with_perm -> int) ->
    'Partial_array.t
  val iter :
    values:(([< `Read | `Set_and_create ], 'Partial_array.t, 'a array)
            Fieldslib.Field.t_with_perm -> 'b) ->
    len:(([< `Read | `Set_and_create ], 'Partial_array.t, int)
         Fieldslib.Field.t_with_perm -> 'd) ->
    'd
  val fold :
    init:'->
    values:('->
            ([< `Read | `Set_and_create ], 'Partial_array.t, 'b array)
            Fieldslib.Field.t_with_perm -> 'c) ->
    len:('->
         ([< `Read | `Set_and_create ], 'Partial_array.t, int)
         Fieldslib.Field.t_with_perm -> 'e) ->
    'e
  val map_poly :
    ([< `Read | `Set_and_create ], 'Partial_array.t, 'b)
    Fieldslib.Field.user -> 'b list
  val for_all :
    values:(([< `Read | `Set_and_create ], 'Partial_array.t, 'a array)
            Fieldslib.Field.t_with_perm -> bool) ->
    len:(([< `Read | `Set_and_create ], 'Partial_array.t, int)
         Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val exists :
    values:(([< `Read | `Set_and_create ], 'Partial_array.t, 'a array)
            Fieldslib.Field.t_with_perm -> bool) ->
    len:(([< `Read | `Set_and_create ], 'Partial_array.t, int)
         Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val to_list :
    values:(([< `Read | `Set_and_create ], 'Partial_array.t, 'a array)
            Fieldslib.Field.t_with_perm -> 'b) ->
    len:(([< `Read | `Set_and_create ], 'Partial_array.t, int)
         Fieldslib.Field.t_with_perm -> 'b) ->
    'b list
  module Direct :
    sig
      val iter :
        'Partial_array.t ->
        values:(([< `Read | `Set_and_create ], 'Partial_array.t, 'b array)
                Fieldslib.Field.t_with_perm ->
                'Partial_array.t -> 'a array -> 'c) ->
        len:(([< `Read | `Set_and_create ], 'Partial_array.t, int)
             Fieldslib.Field.t_with_perm -> 'Partial_array.t -> int -> 'e) ->
        'e
      val fold :
        'Partial_array.t ->
        init:'->
        values:('->
                ([< `Read | `Set_and_create ], 'Partial_array.t, 'c array)
                Fieldslib.Field.t_with_perm ->
                'Partial_array.t -> 'a array -> 'd) ->
        len:('->
             ([< `Read | `Set_and_create ], 'Partial_array.t, int)
             Fieldslib.Field.t_with_perm -> 'Partial_array.t -> int -> 'f) ->
        'f
    end
end