sig
  type random = Random.State.t
  val make_random : unit -> Generator.random
  val make_random_seed : int -> Generator.random
  val make_random_full : int array -> Generator.random
  type 'a t = (Generator.random -> 'a) * ('-> string)
  val unit : unit Generator.t
  val bool : bool Generator.t
  val make_bool : int -> int -> bool Generator.t
  val int : int Generator.t
  val pos_int : int Generator.t
  val neg_int : int Generator.t
  val make_int : int -> int -> int Generator.t
  val int32 : int32 Generator.t
  val pos_int32 : int32 Generator.t
  val neg_int32 : int32 Generator.t
  val make_int32 : int32 -> int32 -> int32 Generator.t
  val int64 : int64 Generator.t
  val pos_int64 : int64 Generator.t
  val neg_int64 : int64 Generator.t
  val make_int64 : int64 -> int64 -> int64 Generator.t
  val nativeint : nativeint Generator.t
  val pos_nativeint : nativeint Generator.t
  val neg_nativeint : nativeint Generator.t
  val make_nativeint : nativeint -> nativeint -> nativeint Generator.t
  val char : char Generator.t
  val digit : char Generator.t
  val digit_bin : char Generator.t
  val digit_oct : char Generator.t
  val digit_hex : char Generator.t
  val letter : char Generator.t
  val alphanum : char Generator.t
  val string : int Generator.t -> char Generator.t -> string Generator.t
  val strings :
    string -> int Generator.t -> string Generator.t -> string Generator.t
  val number : int Generator.t -> string Generator.t
  val number_bin : int Generator.t -> string Generator.t
  val number_oct : int Generator.t -> string Generator.t
  val number_hex : int Generator.t -> string Generator.t
  val word : int Generator.t -> string Generator.t
  val words : int Generator.t -> int Generator.t -> string Generator.t
  val float : float Generator.t
  val make_float : float -> float -> float Generator.t
  val complex :
    float Generator.t -> float Generator.t -> Complex.t Generator.t
  type 'a outcome = Value of '| Exception of exn
  val total_function : 'Generator.t -> ('-> 'b) Generator.t
  val partial_function :
    'Generator.outcome Generator.t -> ('-> 'b) Generator.t
  val array : int Generator.t -> 'Generator.t -> 'a array Generator.t
  val list : int Generator.t -> 'Generator.t -> 'a list Generator.t
  val option : bool Generator.t -> 'Generator.t -> 'a option Generator.t
  val ref : 'Generator.t -> 'Pervasives.ref Generator.t
  val buffer : string Generator.t -> Buffer.t Generator.t
  module type Gen = sig type g val g : Generator.Gen.g Generator.t end
  module Map :
    functor (M : Map.S->
      functor (G : sig type g = M.key val g : g t end->
        sig
          val gen : int Generator.t -> 'Generator.t -> 'M.t Generator.t
        end
  module Set :
    functor (S : Set.S->
      functor (G : sig type g = S.elt val g : g t end->
        sig val gen : int Generator.t -> S.t Generator.t end
  val hashtbl :
    int Generator.t ->
    'Generator.t -> 'Generator.t -> ('a, 'b) Hashtbl.t Generator.t
  val queue : int Generator.t -> 'Generator.t -> 'Queue.t Generator.t
  val stack : int Generator.t -> 'Generator.t -> 'Stack.t Generator.t
  val weak :
    int Generator.t -> 'a option Generator.t -> 'Weak.t Generator.t
  module Weak :
    functor (W : Weak.S->
      functor (G : sig type g = W.data val g : g t end->
        sig val gen : int Generator.t -> W.t Generator.t end
  val lift : '-> string -> 'Generator.t
  val select_list : 'a list -> ('-> string) -> 'Generator.t
  val select_list_weighted :
    ('a * int) list -> ('-> string) -> 'Generator.t
  val select_array : 'a array -> ('-> string) -> 'Generator.t
  val select_array_weighted :
    ('a * int) array -> ('-> string) -> 'Generator.t
  val choose_list : 'Generator.t list -> 'Generator.t
  val choose_list_weighted : ('Generator.t * int) list -> 'Generator.t
  val choose_array : 'Generator.t array -> 'Generator.t
  val choose_array_weighted : ('Generator.t * int) array -> 'Generator.t
  val filter : ('-> bool) -> 'Generator.t -> 'Generator.t
  val transform : ('-> 'a) -> 'Generator.t -> 'Generator.t
  val map1 : ('-> 'b) -> ('-> string) -> 'Generator.t -> 'Generator.t
  val map2 :
    ('-> '-> 'c) ->
    ('-> string) -> 'Generator.t * 'Generator.t -> 'Generator.t
  val map3 :
    ('-> '-> '-> 'd) ->
    ('-> string) ->
    'Generator.t * 'Generator.t * 'Generator.t -> 'Generator.t
  val map4 :
    ('-> '-> '-> '-> 'e) ->
    ('-> string) ->
    'Generator.t * 'Generator.t * 'Generator.t * 'Generator.t ->
    'Generator.t
  val map5 :
    ('-> '-> '-> '-> '-> 'f) ->
    ('-> string) ->
    'Generator.t * 'Generator.t * 'Generator.t * 'Generator.t *
    'Generator.t -> 'Generator.t
  val zip1 : 'Generator.t -> 'Generator.t
  val zip2 : 'Generator.t -> 'Generator.t -> ('a * 'b) Generator.t
  val zip3 :
    'Generator.t ->
    'Generator.t -> 'Generator.t -> ('a * 'b * 'c) Generator.t
  val zip4 :
    'Generator.t ->
    'Generator.t ->
    'Generator.t -> 'Generator.t -> ('a * 'b * 'c * 'd) Generator.t
  val zip5 :
    'Generator.t ->
    'Generator.t ->
    'Generator.t ->
    'Generator.t -> 'Generator.t -> ('a * 'b * 'c * 'd * 'e) Generator.t
  val apply1 : ('-> 'b) -> '-> 'b
  val apply2 : ('-> '-> 'c) -> 'a * '-> 'c
  val apply3 : ('-> '-> '-> 'd) -> 'a * 'b * '-> 'd
  val apply4 : ('-> '-> '-> '-> 'e) -> 'a * 'b * 'c * '-> 'e
  val apply5 :
    ('-> '-> '-> '-> '-> 'f) -> 'a * 'b * 'c * 'd * '-> 'f
  val tuple_apply1 : ('-> 'b) -> '-> 'b
  val tuple_apply2 : ('a * '-> 'c) -> '-> '-> 'c
  val tuple_apply3 : ('a * 'b * '-> 'd) -> '-> '-> '-> 'd
  val tuple_apply4 : ('a * 'b * 'c * '-> 'e) -> '-> '-> '-> '-> 'e
  val tuple_apply5 :
    ('a * 'b * 'c * 'd * '-> 'f) -> '-> '-> '-> '-> '-> 'f
end