;; this is untested
(bind-func Widget_find_inorder
(lambda (widget:Widget* pred:[i1,Widget*]*)
(if (not (null? widget))
(begin
(Widget_find_inorder (Widget_left_child widget) pred)
(if (and (not (null? widget)) (pred widget))
widget