sig
  val cast : 'Gobject.obj -> Gtk.stack Gtk.obj
  module P :
    sig
      val hhomogeneous : ([> `stack ], bool) Gobject.property
      val homogeneous : ([> `stack ], bool) Gobject.property
      val interpolate_size : ([> `stack ], bool) Gobject.property
      val transition_duration : ([> `stack ], int) Gobject.property
      val transition_running : ([> `stack ], bool) Gobject.property
      val transition_type :
        ([> `stack ], GtkEnums.stack_transition_type) Gobject.property
      val vhomogeneous : ([> `stack ], bool) Gobject.property
      val visible_child : ([> `stack ], Gtk.widget Gtk.obj) Gobject.property
      val visible_child_name : ([> `stack ], string) Gobject.property
    end
  val create : Gtk.stack Gobject.param list -> Gtk.stack Gtk.obj
  external add_named :
    [> `stack ] Gtk.obj -> [> `widget ] Gtk.obj -> string -> unit
    = "ml_gtk_stack_add_named"
  external add_titled :
    [> `stack ] Gtk.obj -> [> `widget ] Gtk.obj -> string -> string -> unit
    = "ml_gtk_stack_add_titled"
  external get_child_by_name :
    [> `stack ] Gtk.obj -> string -> [> `widget ] Gtk.obj
    = "ml_gtk_stack_get_child_by_name"
  external set_visible_child_full :
    [> `stack ] Gtk.obj -> string -> Gtk.Tags.stack_transition_type -> unit
    = "ml_gtk_stack_set_visible_child_full"
  val make_params :
    cont:(([> `stack ] as 'a) Gobject.param list -> 'b) ->
    'Gobject.param list ->
    ?hhomogeneous:bool ->
    ?homogeneous:bool ->
    ?interpolate_size:bool ->
    ?transition_duration:int ->
    ?transition_type:GtkEnums.stack_transition_type ->
    ?vhomogeneous:bool ->
    ?visible_child:Gtk.widget Gtk.obj -> ?visible_child_name:string -> 'b
end