sig
  val cast : 'Gobject.obj -> Gtk.container Gtk.obj
  module P :
    sig
      val border_width : ([> `container ], int) Gobject.property
      val child : ([> `container ], Gtk.widget Gtk.obj) Gobject.property
      val resize_mode :
        ([> `container ], GtkEnums.resize_mode) Gobject.property
    end
  module S :
    sig
      val add : ([> `container ], Gtk.widget Gtk.obj -> unit) GtkSignal.t
      val remove : ([> `container ], Gtk.widget Gtk.obj -> unit) GtkSignal.t
      val check_resize : ([> `container ], unit -> unit) GtkSignal.t
      val set_focus :
        ([> `container ], Gtk.widget Gtk.obj option -> unit) GtkSignal.t
    end
  external check_resize : [> `container ] Gtk.obj -> unit
    = "ml_gtk_container_check_resize"
  external add : [> `container ] Gtk.obj -> [> `widget ] Gtk.obj -> unit
    = "ml_gtk_container_add"
  external remove : [> `container ] Gtk.obj -> [> `widget ] Gtk.obj -> unit
    = "ml_gtk_container_remove"
  external forall :
    [> `container ] Gtk.obj -> f:(Gtk.widget Gtk.obj -> unit) -> unit
    = "ml_gtk_container_forall"
  external foreach :
    [> `container ] Gtk.obj -> f:(Gtk.widget Gtk.obj -> unit) -> unit
    = "ml_gtk_container_foreach"
  external set_focus_child :
    [> `container ] Gtk.obj -> [> `widget ] Gtk.optobj -> unit
    = "ml_gtk_container_set_focus_child"
  external set_focus_vadjustment :
    [> `container ] Gtk.obj -> [> `adjustment ] Gtk.optobj -> unit
    = "ml_gtk_container_set_focus_vadjustment"
  external set_focus_hadjustment :
    [> `container ] Gtk.obj -> [> `adjustment ] Gtk.optobj -> unit
    = "ml_gtk_container_set_focus_hadjustment"
  val make_params :
    cont:(([> `container | `widget ] as 'a) Gobject.param list -> 'b) ->
    'Gobject.param list ->
    ?border_width:int -> ?width:int -> ?height:int -> 'b
  val children : [> `container ] Gtk.obj -> Gtk.widget Gtk.obj list
end