 
 : with-side ( side quot -- ) [ swap current-side set call ] with-scope ; inline
 : with-other-side ( quot -- )
-    current-side get invert-comparison swap with-side ; inline
-: go-left ( quot -- ) +lt+ swap with-side ; inline
-: go-right ( quot -- ) +gt+ swap with-side ; inline
+    current-side get neg swap with-side ; inline
+: go-left ( quot -- ) left swap with-side ; inline
+: go-right ( quot -- ) right swap with-side ; inline
 
 : change-root ( tree quot -- )
     swap [ root>> swap call ] keep set-tree-root ; inline


SYMBOL: current-side

: go-left? ( -- ? ) current-side get +lt+ eq? ;

: inc-count ( tree -- ) [ 1+ ] change-count drop ;


    root>> node-at* ;

: node-set ( value key node -- node )
    2dup key>> key-side dup 0 eq? [
        drop nip swap >>value
    ] [
        [
