anchor.diff:  shift
   goto EchoArgs.loop
   
  -:# Echo the value of a variable
  -:EchoVal	%1=VARNAME
  -setlocal EnableExtensions EnableDelayedExpansion
  -%>DEBUGOUT% echo.%INDENT%!%~1!
  -if defined LOGFILE %>>LOGFILE% echo %INDENT%!%~1!
  +:# Echo the value of multiple variables on the same line
  +:EchoVals	%1=VARNAME, %2=VARNAME, ...
  +setlocal EnableDelayedExpansion
  +set ">MSGOUT="
  +:EchoVals.1
  +set "EchoVals.LINE=" &:# Use a qualified name, in case the caller passes a variable called LINE
  +for %%v in (%*) do set "EchoVals.LINE=!EchoVals.LINE! !%%v!"
  +if not defined EchoVals.LINE set "EchoVals.LINE= " &:# Make sure there's a head space even if the variable list was empty
  +%>MSGOUT% echo.%INDENT%!EchoVals.LINE:~1!
  +if defined LOGFILE %>>LOGFILE% echo.%INDENT%!EchoVals.LINE:~1!
   endlocal & exit /b
   
  -:EchoVal.Debug
  +:EchoVals.Verbose
  +setlocal EnableDelayedExpansion
  +set ">MSGOUT=!>MSGOUT.V[%VERBOSE%]!"
  +goto :EchoVals.1
  +
  +:EchoVals.Debug
  +setlocal EnableDelayedExpansion
  +set ">MSGOUT=!>MSGOUT.D[%DEBUG%]!"
  +goto :EchoVals.1
  +
  +:# Echo the value of multiple strings on the same line. They must not contain double quotes.
  +:EchoStrings	%1=Quoted_String, %2=Quoted_String, ...
  +setlocal DisableDelayedExpansion
  +set ">MSGOUT="
  +:EchoStrings.1
  +set "LINE=" &:# No need for a qualified name, since we don't use caller variables
  +for %%v in (%*) do set "LINE=%LINE% %%~v"
  +if not defined LINE set "LINE= " &:# Make sure there's a head space even if the string list was empty
  +%>MSGOUT% echo.%INDENT%%LINE:~1%
  +if defined LOGFILE %>>LOGFILE% echo.%INDENT%%LINE:~1%
  +endlocal & exit /b
  +
  +:EchoStrings.Verbose
  +setlocal DisableDelayedExpansion
  +%IF_VERBOSE% (
  +  set ">MSGOUT="
  +) else ( :# Make sure the variables are logged
  +  set ">MSGOUT=rem"
  +)
  +goto :EchoStrings.1
  +
  +:EchoString1.Debug
  +setlocal DisableDelayedExpansion
   %IF_DEBUG% (
  -  call :EchoVal %*
  +  set ">MSGOUT=%>DEBUGOUT%"
   ) else ( :# Make sure the variables are logged
  -  call :EchoVal %* >NUL 2>NUL
  -)
  -exit /b
  -
  -:EchoVal.Verbose
  -%IF_VERBOSE% (
  -  call :EchoVal %*
  -) else ( :# Make sure the variables are logged
  -  call :EchoVal %* >NUL 2>NUL
  -)
  -exit /b
  +  set ">MSGOUT=rem"
  +)
  +goto :EchoStrings.1
   
   :Debug.End
   
  
positive.code: 
  :# Go process command-line arguments
  goto Main
  
  :Err9X
  echo Error: Does not work on Windows 9x
  
negative.code: 
  :# Mechanism for "sourcing" this library from another script.
  if '%1'=='source' (
    endlocal & endlocal &:# Define everything in the context of the caller script
    if not "!!"=="" >&2 echo "%SFULL%" %1 Error: Must be called with DelayedExpansion ENABLED. & exit /b 1
    set ^"LCALL=call "%SFULL%" call^"	&rem :# This is the full path of this library's ARG0
  ) else (
    set "LCALL=call"
  ) &:# Now initialize the library modules, then return to the parent script.
  
  :# Initialize the most commonly used library components.
  