code: func (v *TreeSelection) GetSelectedRows(model ITreeModel) *glib.List {
  	var pcmodel **C.GtkTreeModel
  	if model != nil {
  		cmodel := model.toTreeModel()
  		pcmodel = &cmodel
  	}
  
  	clist := C.gtk_tree_selection_get_selected_rows(v.native(), pcmodel)
  	if clist == nil {
  		return nil
  	}
  
  	glist := glib.WrapList(uintptr(unsafe.Pointer(clist)))
  	glist.DataWrapper(func(ptr unsafe.Pointer) interface{} {
  		return &TreePath{(*C.GtkTreePath)(ptr)}
  	})
  	runtime.SetFinalizer(glist, func(glist *glib.List) {
  		glist.FreeFull(func(item interface{}) {
  			path := item.(*TreePath)
  			C.gtk_tree_path_free(path.GtkTreePath)
  		})
  	})
  
  	return glist
  }
docs: // GetSelectedRows is a wrapper around gtk_tree_selection_get_selected_rows().
  // All the elements of returned list are wrapped into (*gtk.TreePath) values.
  //
  // Please note that a runtime finalizer is only set on the head of the linked
  // list, and must be kept live while accessing any item in the list, or the
  // Go garbage collector will free the whole list.