sig
  type t = {
    mutable minor_heap_size : int;
    mutable major_heap_increment : int;
    mutable space_overhead : int;
    mutable verbose : int;
    mutable max_overhead : int;
    mutable stack_limit : int;
    mutable allocation_policy : int;
  }
  val allocation_policy : Gc.Control.t -> int
  val set_allocation_policy : Gc.Control.t -> int -> unit
  val stack_limit : Gc.Control.t -> int
  val set_stack_limit : Gc.Control.t -> int -> unit
  val max_overhead : Gc.Control.t -> int
  val set_max_overhead : Gc.Control.t -> int -> unit
  val verbose : Gc.Control.t -> int
  val set_verbose : Gc.Control.t -> int -> unit
  val space_overhead : Gc.Control.t -> int
  val set_space_overhead : Gc.Control.t -> int -> unit
  val major_heap_increment : Gc.Control.t -> int
  val set_major_heap_increment : Gc.Control.t -> int -> unit
  val minor_heap_size : Gc.Control.t -> int
  val set_minor_heap_size : Gc.Control.t -> int -> unit
  module Fields :
    sig
      val names : string list
      val allocation_policy : (Gc.Control.t, int) Fieldslib.Field.t
      val stack_limit : (Gc.Control.t, int) Fieldslib.Field.t
      val max_overhead : (Gc.Control.t, int) Fieldslib.Field.t
      val verbose : (Gc.Control.t, int) Fieldslib.Field.t
      val space_overhead : (Gc.Control.t, int) Fieldslib.Field.t
      val major_heap_increment : (Gc.Control.t, int) Fieldslib.Field.t
      val minor_heap_size : (Gc.Control.t, int) Fieldslib.Field.t
      val fold :
        init:'acc__ ->
        minor_heap_size:('acc__ ->
                         (Gc.Control.t, int) Fieldslib.Field.t -> 'acc__) ->
        major_heap_increment:('acc__ ->
                              (Gc.Control.t, int) Fieldslib.Field.t ->
                              'acc__) ->
        space_overhead:('acc__ ->
                        (Gc.Control.t, int) Fieldslib.Field.t -> 'acc__) ->
        verbose:('acc__ ->
                 (Gc.Control.t, int) Fieldslib.Field.t -> 'acc__) ->
        max_overhead:('acc__ ->
                      (Gc.Control.t, int) Fieldslib.Field.t -> 'acc__) ->
        stack_limit:('acc__ ->
                     (Gc.Control.t, int) Fieldslib.Field.t -> 'acc__) ->
        allocation_policy:('acc__ ->
                           (Gc.Control.t, int) Fieldslib.Field.t ->
                           'acc__) ->
        'acc__
      val make_creator :
        minor_heap_size:((Gc.Control.t, int) Fieldslib.Field.t ->
                         'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        major_heap_increment:((Gc.Control.t, int) Fieldslib.Field.t ->
                              'compile_acc__ ->
                              ('input__ -> int) * 'compile_acc__) ->
        space_overhead:((Gc.Control.t, int) Fieldslib.Field.t ->
                        'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        verbose:((Gc.Control.t, int) Fieldslib.Field.t ->
                 'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        max_overhead:((Gc.Control.t, int) Fieldslib.Field.t ->
                      'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        stack_limit:((Gc.Control.t, int) Fieldslib.Field.t ->
                     'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        allocation_policy:((Gc.Control.t, int) Fieldslib.Field.t ->
                           'compile_acc__ ->
                           ('input__ -> int) * 'compile_acc__) ->
        'compile_acc__ -> ('input__ -> Gc.Control.t) * 'compile_acc__
      val create :
        minor_heap_size:int ->
        major_heap_increment:int ->
        space_overhead:int ->
        verbose:int ->
        max_overhead:int ->
        stack_limit:int -> allocation_policy:int -> Gc.Control.t
      val iter :
        minor_heap_size:((Gc.Control.t, int) Fieldslib.Field.t -> unit) ->
        major_heap_increment:((Gc.Control.t, int) Fieldslib.Field.t ->
                              unit) ->
        space_overhead:((Gc.Control.t, int) Fieldslib.Field.t -> unit) ->
        verbose:((Gc.Control.t, int) Fieldslib.Field.t -> unit) ->
        max_overhead:((Gc.Control.t, int) Fieldslib.Field.t -> unit) ->
        stack_limit:((Gc.Control.t, int) Fieldslib.Field.t -> unit) ->
        allocation_policy:((Gc.Control.t, int) Fieldslib.Field.t -> unit) ->
        unit
      val map :
        minor_heap_size:((Gc.Control.t, int) Fieldslib.Field.t -> int) ->
        major_heap_increment:((Gc.Control.t, int) Fieldslib.Field.t ->
                              int) ->
        space_overhead:((Gc.Control.t, int) Fieldslib.Field.t -> int) ->
        verbose:((Gc.Control.t, int) Fieldslib.Field.t -> int) ->
        max_overhead:((Gc.Control.t, int) Fieldslib.Field.t -> int) ->
        stack_limit:((Gc.Control.t, int) Fieldslib.Field.t -> int) ->
        allocation_policy:((Gc.Control.t, int) Fieldslib.Field.t -> int) ->
        Gc.Control.t
      val map_poly :
        (Gc.Control.t, 'x0) Fieldslib.Field.user -> 'x0 list
      val for_all :
        minor_heap_size:((Gc.Control.t, int) Fieldslib.Field.t -> bool) ->
        major_heap_increment:((Gc.Control.t, int) Fieldslib.Field.t ->
                              bool) ->
        space_overhead:((Gc.Control.t, int) Fieldslib.Field.t -> bool) ->
        verbose:((Gc.Control.t, int) Fieldslib.Field.t -> bool) ->
        max_overhead:((Gc.Control.t, int) Fieldslib.Field.t -> bool) ->
        stack_limit:((Gc.Control.t, int) Fieldslib.Field.t -> bool) ->
        allocation_policy:((Gc.Control.t, int) Fieldslib.Field.t -> bool) ->
        bool
      val exists :
        minor_heap_size:((Gc.Control.t, int) Fieldslib.Field.t -> bool) ->
        major_heap_increment:((Gc.Control.t, int) Fieldslib.Field.t ->
                              bool) ->
        space_overhead:((Gc.Control.t, int) Fieldslib.Field.t -> bool) ->
        verbose:((Gc.Control.t, int) Fieldslib.Field.t -> bool) ->
        max_overhead:((Gc.Control.t, int) Fieldslib.Field.t -> bool) ->
        stack_limit:((Gc.Control.t, int) Fieldslib.Field.t -> bool) ->
        allocation_policy:((Gc.Control.t, int) Fieldslib.Field.t -> bool) ->
        bool
      val to_list :
        minor_heap_size:((Gc.Control.t, int) Fieldslib.Field.t ->
                         'elem__) ->
        major_heap_increment:((Gc.Control.t, int) Fieldslib.Field.t ->
                              'elem__) ->
        space_overhead:((Gc.Control.t, int) Fieldslib.Field.t -> 'elem__) ->
        verbose:((Gc.Control.t, int) Fieldslib.Field.t -> 'elem__) ->
        max_overhead:((Gc.Control.t, int) Fieldslib.Field.t -> 'elem__) ->
        stack_limit:((Gc.Control.t, int) Fieldslib.Field.t -> 'elem__) ->
        allocation_policy:((Gc.Control.t, int) Fieldslib.Field.t ->
                           'elem__) ->
        'elem__ list
      module Direct :
        sig
          val iter :
            Gc.Control.t ->
            minor_heap_size:((Gc.Control.t, int) Fieldslib.Field.t ->
                             Gc.Control.t -> int -> unit) ->
            major_heap_increment:((Gc.Control.t, int) Fieldslib.Field.t ->
                                  Gc.Control.t -> int -> unit) ->
            space_overhead:((Gc.Control.t, int) Fieldslib.Field.t ->
                            Gc.Control.t -> int -> unit) ->
            verbose:((Gc.Control.t, int) Fieldslib.Field.t ->
                     Gc.Control.t -> int -> unit) ->
            max_overhead:((Gc.Control.t, int) Fieldslib.Field.t ->
                          Gc.Control.t -> int -> unit) ->
            stack_limit:((Gc.Control.t, int) Fieldslib.Field.t ->
                         Gc.Control.t -> int -> unit) ->
            allocation_policy:((Gc.Control.t, int) Fieldslib.Field.t ->
                               Gc.Control.t -> int -> unit) ->
            unit
          val fold :
            Gc.Control.t ->
            init:'acc__ ->
            minor_heap_size:('acc__ ->
                             (Gc.Control.t, int) Fieldslib.Field.t ->
                             Gc.Control.t -> int -> 'acc__) ->
            major_heap_increment:('acc__ ->
                                  (Gc.Control.t, int) Fieldslib.Field.t ->
                                  Gc.Control.t -> int -> 'acc__) ->
            space_overhead:('acc__ ->
                            (Gc.Control.t, int) Fieldslib.Field.t ->
                            Gc.Control.t -> int -> 'acc__) ->
            verbose:('acc__ ->
                     (Gc.Control.t, int) Fieldslib.Field.t ->
                     Gc.Control.t -> int -> 'acc__) ->
            max_overhead:('acc__ ->
                          (Gc.Control.t, int) Fieldslib.Field.t ->
                          Gc.Control.t -> int -> 'acc__) ->
            stack_limit:('acc__ ->
                         (Gc.Control.t, int) Fieldslib.Field.t ->
                         Gc.Control.t -> int -> 'acc__) ->
            allocation_policy:('acc__ ->
                               (Gc.Control.t, int) Fieldslib.Field.t ->
                               Gc.Control.t -> int -> 'acc__) ->
            'acc__
        end
    end
  val t_of_sexp : Sexplib.Sexp.t -> Gc.Control.t
  val sexp_of_t : Gc.Control.t -> Sexplib.Sexp.t
  val bin_t : Gc.Control.t Bin_prot.Type_class.t
  val bin_read_t : Gc.Control.t Bin_prot.Read_ml.reader
  val bin_read_t_ : Gc.Control.t Bin_prot.Unsafe_read_c.reader
  val bin_read_t__ : (int -> Gc.Control.t) Bin_prot.Unsafe_read_c.reader
  val bin_reader_t : Gc.Control.t Bin_prot.Type_class.reader
  val bin_size_t : Gc.Control.t Bin_prot.Size.sizer
  val bin_write_t : Gc.Control.t Bin_prot.Write_ml.writer
  val bin_write_t_ : Gc.Control.t Bin_prot.Unsafe_write_c.writer
  val bin_writer_t : Gc.Control.t Bin_prot.Type_class.writer
end