anchor.diff:  : dev  parse-word find-device ;
   
   : (lsprop) ( node --)
  -	dup cr $indent indent @ type ."     node: " node>qname type
  -	false +indent (.properties) cr -indent ;
  +   dup cr $indent indent @ type ."     node: " node>qname type
  +   false +indent (.properties) cr -indent
  +;
   : (show-children) ( node -- )
  -    child BEGIN dup WHILE
  -	dup (lsprop) dup child IF false +indent dup recurse -indent THEN peer
  -    REPEAT drop
  +   child BEGIN
  +      dup
  +   WHILE
  +      dup (lsprop) dup child IF false +indent dup recurse -indent THEN peer
  +   REPEAT
  +   drop
   ;
   : lsprop ( {device-specifier}<eol> -- )
      skipws 0 parse dup IF de-alias ELSE 2drop s" /" THEN
      find-device get-node dup dup
  -   cr ." node: " node>path type (.properties) cr (show-children) 0 indent ! ;
  +   cr ." node: " node>path type (.properties) cr (show-children)
  +   0 indent !
  +;
   
   
   \ node>path does not allot the memory, since it is internally only used
  
positive.code: \ Never ever use this in actual code, only when debugging interactively.
  \ Thank you.
  : set-args ( arg-str len unit-str len -- )
             s" decode-unit" get-parent $call-static set-unit set-my-args ;
  
  : $cat-unit  dup parent 0= IF drop EXIT THEN
               dup >space? not IF drop EXIT THEN
               dup >r >unit s" encode-unit" r> parent $call-static dup IF
               dup >r here swap move s" @" $cat here r> $cat
               ELSE 2drop THEN ;
  
  \ Getting basic info about a node.
  : node>name  dup >r s" name" rot get-property IF r> (u.) ELSE 1- r> drop THEN ;
  : node>qname dup node>name rot ['] $cat-unit CATCH IF drop THEN ;
  : node>path  here 0 rot  BEGIN dup WHILE dup parent REPEAT 2drop
               dup 0= IF [char] / c, THEN
               BEGIN dup WHILE [char] / c, node>qname here over allot swap move
  	     REPEAT drop here 2dup - allot over - ;
  
  : interposed? ( ihandle -- flag )
    \ We cannot actually detect if an instance is interposed; instead, we look
  
negative.code: ;
  
  : find-alias ( alias-name len -- false | dev-path len )
     s" /aliases" find-node dup IF
        get-property 0= IF 1- dup 0= IF nip THEN ELSE false THEN
     THEN
  ;
  
  : .alias ( alias-name len -- )
      find-alias dup IF type ELSE ." no alias available" THEN ;
  