([> `treemodel | `treesortable ] as 'a) Gtk.obj ->
object
  val id : int
  val obj : 'Gtk.obj
  method as_model : Gtk.tree_model
  method coerce : model
  method connect : GTree.tree_sortable_signals
  method flags : GtkEnums.tree_model_flags list
  method foreach : (Gtk.tree_path -> Gtk.tree_iter -> bool) -> unit
  method get : row:Gtk.tree_iter -> column:'b column -> 'b
  method get_column_type : int -> Gobject.g_type
  method get_iter : Gtk.tree_path -> Gtk.tree_iter
  method get_iter_first : Gtk.tree_iter option
  method get_path : Gtk.tree_iter -> Gtk.tree_path
  method get_row_reference : Gtk.tree_path -> row_reference
  method get_sort_column_id : (int * Gtk.Tags.sort_type) option
  method has_default_sort_func : bool
  method iter_children : ?nth:int -> Gtk.tree_iter option -> Gtk.tree_iter
  method iter_has_child : Gtk.tree_iter -> bool
  method iter_n_children : Gtk.tree_iter option -> int
  method iter_next : Gtk.tree_iter -> bool
  method iter_parent : Gtk.tree_iter -> Gtk.tree_iter option
  method misc : GObj.gobject_ops
  method n_columns : int
  method row_changed : Gtk.tree_path -> Gtk.tree_iter -> unit
  method set_default_sort_func :
    (GTree.model -> Gtk.tree_iter -> Gtk.tree_iter -> int) -> unit
  method set_sort_column_id : int -> Gtk.Tags.sort_type -> unit
  method set_sort_func :
    int -> (GTree.model -> Gtk.tree_iter -> Gtk.tree_iter -> int) -> unit
  method sort_column_changed : unit -> unit
end