method insert ?(append=false) ?parent (t : 'a) =
let row =
(if append then store#append else store#prepend) ?parent ()
in
self#set_row row t;
match List.rev (f_children t) with
[] -> ()
| l ->
let rr = store#get_row_reference (store#get_path row) in
List.iter (self#insert ~append ~parent: row) l;
if f_expand t then
view#expand_row rr#path