anchor.diff:  :dir
   :list
   :ls
  -%FUNCTION% dir %*
  -setlocal
  +%FUNCTION%
   set "KEY=%~1" & shift
  -%DEBUGVARS% KEY
  +%ECHOVARS.D% KEY
   :# Then call subroutines to get subkeys, then values.
   %FOREACHLINE% %%K in ('%XCALL% dirs "%KEY%" %1 %2 %3 %4 %5 %6 %7 %8 %9') do echo %%~K\
   %FOREACHLINE% %%V in ('%XCALL% files "%KEY%" %1 %2 %3 %4 %5 %6 %7 %8 %9') do echo %%~V
  -endlocal & set "RETVAL=0" & %RETURN%
  +%UPVAR% RETVAL
  +set "RETVAL=0"
  +%RETURN% 0
   
   :#----------------------------------------------------------------------------#
   
  
positive.code: if "%~1"=="-f" shift & set "PATTERN=%~1" & shift & goto get_values_args
  set "KEY=%~1" & shift & goto get_values_args
  :got_values_args
  %DEBUGVARS% KEY
  set BEFORE=
  if "%FULLPATH%"=="1" set "BEFORE=%KEY%\"
  :# Use reg.exe to get the key information
  set CMD=reg query "%KEY%" /f !PATTERN! !OPTS!
  %DEBUGECHO% %CMD%
  :# For each line in CMD output... 
  %FOREACHLINE% %%i in ('%CMD%') do (
    set "LINE=%%i"
    %DEBUGVARS% LINE
    :# Values are indented by 4 spaces.
    set "HEAD=!LINE:~0,4!"
    set "LINE=!LINE:~4!"
  
negative.code: set FOREACHLINE=for /f "delims=" 
  
  :# Default definitions
  if not "%FULLPATH:~0,0%"=="" set FULLPATH=0
  
  set "POPARG=call :PopArg"
  call :Macro.Init
  call :Debug.Init
  call :Exec.Init
  goto main
  
  :call
  