method insert_ele ?parent ele =
      let row = store#append ?parent () in
      store#set row col_data ele;
      store#set row col_display
        (to_utf8 (self#display_string_of_ele ele));
      begin
        match self#string_type_of_ele ele with
          None -> ()
        | Some s ->
             store#set row col_type (to_utf8 s);
      end;
      match self#subs_of_ele ele with
        [] -> ()
      |        l -> List.iter (self#insert_ele ~parent: row) l