     ] if ;
 
 : delete-bst-node ( key node -- node )
-    2dup node-key <=> dup +eq+ eq? [
+    2dup node-key key-side dup 0 eq? [
         drop nip delete-node
     ] [
         [ tuck node-link delete-bst-node over set-node-link ] with-side


SYMBOL: current-side

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

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


: leaf? ( node -- ? )
    [ left>> ] [ right>> ] bi or not ;

: random-side ( -- side ) left right 2array random ;

: choose-branch ( key node -- key node-left/right )
    2dup node-key key-side [ node-link ] with-side ;

: node-at* ( key node -- value ? )
    [
