sig
  type 'a t
  type 'a accessor =
      < fold : 'acc. ('a -> 'acc -> 'acc) -> 'acc -> 'acc; mem : 'a -> bool >
  val create :
    string ->
    'a Type.t ->
    register:bool ->
    State.t list -> 'a Parameter_category.accessor -> 'a Parameter_category.t
  val copy_and_rename :
    string ->
    register:bool -> 'a Parameter_category.t -> 'a Parameter_category.t
  val use : State.t -> 'a Parameter_category.t -> unit
  val get_name : 'a Parameter_category.t -> string
  val get_fold :
    'a Parameter_category.t -> ('a -> 'acc -> 'acc) -> 'acc -> 'acc
  val get_mem : 'a Parameter_category.t -> 'a -> bool
end