sig
  type ('a, 'b) value
  type ('a, 'b) t
  val create :
    ?case_insensitive:bool -> PropList.name -> ('a, 'b) PropList.Schema.t
  val mem : ('a, 'b) PropList.Schema.t -> PropList.name -> bool
  val get :
    ('a, 'b) PropList.Schema.t -> PropList.Data.t -> PropList.name -> string
  val set :
    ('a, 'b) PropList.Schema.t ->
    PropList.Data.t -> PropList.name -> ?context:'a -> string -> unit
  val fold :
    ('a -> PropList.name -> 'b -> (unit -> string) option -> 'a) ->
    'a -> ('c, 'b) PropList.Schema.t -> 'a
  val iter :
    (PropList.name -> 'a -> (unit -> string) option -> unit) ->
    ('b, 'a) PropList.Schema.t -> unit
  val name : ('a, 'b) PropList.Schema.t -> PropList.name
end