sig
  class focus :
    ([> `container ] as 'a) Gtk.obj ->
    object
      val obj : 'Gtk.obj
      method set : GObj.widget option -> unit
      method set_hadjustment : GData.adjustment option -> unit
      method set_vadjustment : GData.adjustment option -> unit
    end
  class container :
    ([> Gtk.container ] as 'a) Gtk.obj ->
    object
      val obj : 'Gtk.obj
      method add : GObj.widget -> unit
      method all_children : GObj.widget list
      method as_widget : Gtk.widget Gtk.obj
      method border_width : int
      method children : GObj.widget list
      method coerce : GObj.widget
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method focus : GContainer.focus
      method get_oid : int
      method misc : GObj.misc_ops
      method remove : GObj.widget -> unit
      method resize_mode : Gtk.Tags.resize_mode
      method set_border_width : int -> unit
      method set_resize_mode : Gtk.Tags.resize_mode -> unit
    end
  class ['a] container_impl :
    'Gtk.obj ->
    object
      constraint 'a = [> Gtk.container ]
      val obj : 'Gtk.obj
      method add : GObj.widget -> unit
      method all_children : GObj.widget list
      method as_widget : Gtk.widget Gtk.obj
      method border_width : int
      method children : GObj.widget list
      method coerce : GObj.widget
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method focus : focus
      method get_oid : int
      method misc : GObj.misc_ops
      method private obj : 'Gtk.obj
      method remove : GObj.widget -> unit
      method resize_mode : Gtk.Tags.resize_mode
      method set_border_width : int -> unit
      method set_resize_mode : Gtk.Tags.resize_mode -> unit
    end
  class type container_signals =
    object ('a)
      method add : callback:(GObj.widget -> unit) -> GtkSignal.id
      method after : 'a
      method destroy : callback:(unit -> unit) -> GtkSignal.id
      method remove : callback:(GObj.widget -> unit) -> GtkSignal.id
    end
  class container_signals_impl :
    ([> Gtk.container ] as 'b) Gtk.obj ->
    object ('a)
      val after : bool
      val obj : 'Gtk.obj
      method add : callback:(GObj.widget -> unit) -> GtkSignal.id
      method after : 'a
      method private connect :
        'c. ('b, 'c) GtkSignal.t -> callback:'-> GtkSignal.id
      method destroy : callback:(unit -> unit) -> GtkSignal.id
      method remove : callback:(GObj.widget -> unit) -> GtkSignal.id
    end
  class container_full :
    ([> Gtk.container ] as 'a) Gtk.obj ->
    object
      val obj : 'Gtk.obj
      method add : GObj.widget -> unit
      method all_children : GObj.widget list
      method as_widget : Gtk.widget Gtk.obj
      method border_width : int
      method children : GObj.widget list
      method coerce : GObj.widget
      method connect : GContainer.container_signals
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method focus : focus
      method get_oid : int
      method misc : GObj.misc_ops
      method remove : GObj.widget -> unit
      method resize_mode : Gtk.Tags.resize_mode
      method set_border_width : int -> unit
      method set_resize_mode : Gtk.Tags.resize_mode -> unit
    end
  val cast_container : GObj.widget -> GContainer.container_full
  val pack_container :
    create:(([> Gtk.container ] as 'a) Gobject.param list ->
            (#GObj.widget as 'b)) ->
    'Gobject.param list ->
    ?border_width:int ->
    ?width:int ->
    ?height:int -> ?packing:(GObj.widget -> unit) -> ?show:bool -> unit -> 'b
  class bin :
    ([> Gtk.bin ] as 'a) Gtk.obj ->
    object
      val obj : 'Gtk.obj
      method add : GObj.widget -> unit
      method all_children : GObj.widget list
      method as_widget : Gtk.widget Gtk.obj
      method border_width : int
      method child : GObj.widget
      method children : GObj.widget list
      method coerce : GObj.widget
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method focus : focus
      method get_oid : int
      method misc : GObj.misc_ops
      method remove : GObj.widget -> unit
      method resize_mode : Gtk.Tags.resize_mode
      method set_border_width : int -> unit
      method set_resize_mode : Gtk.Tags.resize_mode -> unit
    end
  class ['a] bin_impl :
    'Gtk.obj ->
    object
      constraint 'a = [> Gtk.bin ]
      val obj : 'Gtk.obj
      method add : GObj.widget -> unit
      method all_children : GObj.widget list
      method as_widget : Gtk.widget Gtk.obj
      method border_width : int
      method child : GObj.widget
      method children : GObj.widget list
      method coerce : GObj.widget
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method focus : focus
      method get_oid : int
      method misc : GObj.misc_ops
      method private obj : 'Gtk.obj
      method remove : GObj.widget -> unit
      method resize_mode : Gtk.Tags.resize_mode
      method set_border_width : int -> unit
      method set_resize_mode : Gtk.Tags.resize_mode -> unit
    end
  class virtual ['a] item_container :
    ([> Gtk.container ] as 'b) Gtk.obj ->
    object
      constraint 'a = < as_item : [> `widget ] Gtk.obj; .. >
      val obj : 'Gtk.obj
      method add : '-> unit
      method all_children : 'a list
      method append : '-> unit
      method as_widget : Gtk.widget Gtk.obj
      method border_width : int
      method children : 'a list
      method coerce : GObj.widget
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method focus : GContainer.focus
      method get_oid : int
      method virtual insert : '-> pos:int -> unit
      method misc : GObj.misc_ops
      method prepend : '-> unit
      method remove : '-> unit
      method resize_mode : Gtk.Tags.resize_mode
      method set_border_width : int -> unit
      method set_resize_mode : Gtk.Tags.resize_mode -> unit
      method private virtual wrap : Gtk.widget Gtk.obj -> 'a
    end
  class item_signals :
    [> Gtk.item ] Gtk.obj ->
    object ('a)
      method add : callback:(GObj.widget -> unit) -> GtkSignal.id
      method after : 'a
      method deselect : callback:(unit -> unit) -> GtkSignal.id
      method destroy : callback:(unit -> unit) -> GtkSignal.id
      method remove : callback:(GObj.widget -> unit) -> GtkSignal.id
      method select : callback:(unit -> unit) -> GtkSignal.id
      method toggle : callback:(unit -> unit) -> GtkSignal.id
    end
end