         [ (delete-node) ] keep [ dlist-node-obj t ] [ f f ] if*
     ] [
         2drop f f
-    ] if ;
+    ] if ; inline
 
 : delete-node ( quot dlist -- obj/f )
-    delete-node* drop ;
+    delete-node* drop ; inline
 
 : dlist-each ( dlist quot -- )
     [ dlist-node-obj ] swap compose dlist-each-node ; inline

: pop-back* ( dlist -- ) pop-back drop ;

: dlist-find ( quot dlist -- obj/f ? )
    dlist-find-node dup [ >r dlist-node-obj r> ] when ;

: dlist-contains? ( quot dlist -- ? )
    dlist-find nip ;

: (delete-node) ( dlist dlist-node -- )
    {

        drop nip t
    ] [
        drop dlist-node-next [ (dlist-find-node) ] [ drop f f ] if*
    ] if ; inline

: dlist-find-node ( quot dlist -- node/f ? )
    dlist-front [ (dlist-find-node) ] [ drop f f ] if* ; inline

: (dlist-each-node) ( quot dlist -- )
    over
    [ 2dup call >r dlist-node-next r> (dlist-each-node) ]
    [ 2drop ] if ; inline

: dlist-each-node ( quot dlist -- )
    >r dlist-front r> (dlist-each-node) ; inline
