sig
  module T : sig type (_, _) app = .. end
  type ('a, 'b) t = ('a, 'b) Generic_util_app.T.app
  type option'
  type (_, _) t +=
      Option : 'a option -> ('a, Generic_util_app.option') Generic_util_app.t
  val get_option :
    ('a, Generic_util_app.option') Generic_util_app.t -> 'a option
  type list'
  type (_, _) t +=
      List : 'a list -> ('a, Generic_util_app.list') Generic_util_app.t
  val get_list : ('a, Generic_util_app.list') Generic_util_app.t -> 'a list
  type array'
  type (_, _) t +=
      Array : 'a array -> ('a, Generic_util_app.array') Generic_util_app.t
  val get_array :
    ('a, Generic_util_app.array') Generic_util_app.t -> 'a array
  type id = ID
  type (_, _) t += Id : '-> ('a, Generic_util_app.id) Generic_util_app.t
  val get_id : ('a, Generic_util_app.id) Generic_util_app.t -> 'a
  type 't const = CONST
  type (_, _) t +=
      Const : '-> ('a, 'Generic_util_app.const) Generic_util_app.t
  val get_const : ('a, 'Generic_util_app.const) Generic_util_app.t -> 'b
  type 'b exponential = EXPONENTIAL
  type (_, _) t +=
      Exponential :
        ('-> 'b) -> ('a, 'Generic_util_app.exponential)
                      Generic_util_app.t
  val get_exponential :
    ('a, 'Generic_util_app.exponential) Generic_util_app.t -> '-> 'b
  type ('f, 'g) comp = COMP
  type (_, _) t +=
      Comp :
        (('a, 'f) Generic_util_app.t, 'g) Generic_util_app.t -> ('a,
                                                                 ('f, 'g)
                                                                 Generic_util_app.comp)
                                                                Generic_util_app.t
  val get_comp :
    ('a, ('f, 'g) Generic_util_app.comp) Generic_util_app.t ->
    (('a, 'f) Generic_util_app.t, 'g) Generic_util_app.t
end