anchor.diff:  CALL :message "  -logP"
   ECHO:     Like -log, but also open the logfile after updating.
   CALL :message "  -merge"
  -ECHO:     Merge overrides instead of appending them. One-line comments and
  +ECHO:     Merge overrides instead of appending them. Single-line comments and
   ECHO:     _user.js.parrot lines are appended normally. Overrides for inactive
   ECHO:     user.js prefs will be appended. When -Merge and -MultiOverrides are used
   ECHO:     together, a user-overrides-merged.js file is also generated in the root
  
positive.code: :merge
  SETLOCAL DisableDelayedExpansion
  (
  	FOR /F "tokens=1,* delims=," %%G IN ('FINDSTR /B /I /C:"user_pref" "%~1"') DO (SET "%%G=%%H")
  	FOR /F "tokens=1,* delims=:" %%I IN ('FINDSTR /N "^" "%~1"') DO (
  		IF ""=="%%J" (
  			ECHO:
  		) ELSE (
  			FOR /F "delims=," %%K IN ("%%J") DO (
  				IF NOT [user_pref("_user.js.parrot"]==[%%K] (
  					IF DEFINED %%K (
  						SETLOCAL EnableDelayedExpansion
  						FOR /F "delims=" %%L IN ("!%%K!") DO (
  							ENDLOCAL
  							IF NOT "%%L"=="ALREADY MERGED" (
  								ECHO:%%K,%%L
  								SET "%%K=ALREADY MERGED"
  							)
  						)
  					) ELSE (
  						ECHO:%%J
  					)
  				) ELSE (
  					ECHO:%%J
  				)
  			)
  		)
  
negative.code: 				CALL :message "Merging..."
  				COPY /B /V /Y user.js-overrides\*.js user-overrides-merged.js
  				CALL :merge user-overrides-merged.js
  				COPY /B /V /Y user.js.new+user-overrides-merged.js user.js.new
  				CALL :merge user.js.new
  			) ELSE (
  				CALL :message "Appending..."
  				COPY /B /V /Y user.js.new+"user.js-overrides\*.js" user.js.new
  			)
  		) ELSE (CALL :message "No override files found.")
  		ECHO:
  	) ELSE (
  		IF EXIST "user-overrides.js" (
  			COPY /B /V /Y user.js.new+"user-overrides.js" "user.js.new"
  			IF DEFINED _merge (
  				CALL :message "Merging user-overrides.js..."
  				CALL :merge user.js.new
  			) ELSE (
  				CALL :message "user-overrides.js appended."
  			)
  		) ELSE (CALL :message "user-overrides.js not found.")
  		ECHO:
  	)
  	IF EXIST user.js (
  		FC user.js.new user.js >nul && SET "_changed=false" || SET "_changed=true"
  	)
  	IF "!_changed!"=="true" (
  		CALL :message "Backing up..."
  		IF DEFINED _multibackups (
  	                MOVE /Y user.js "user-backup-!date:/=-!_!time::=.!.js" >nul
  		) ELSE (
  			MOVE /Y user.js user.js.bak >nul
  		)
  		REN user.js.new user.js
  		CALL :message "Update complete."
  	) ELSE (
  		IF "!_changed!"=="false" (
  			DEL /F user.js.new >nul
  			CALL :message "Update completed without changes."
  		) ELSE (
  			REN user.js.new user.js
  			REN CALL :message "Update complete."
  		)
  	)
  	ECHO:
  ) ELSE (
  	CALL :message "Update failed. Make sure PowerShell is allowed internet access."
  	ECHO:   No changes were made.
  )
  