anchor.diff:  ;;; Command handlers
   ;;;
   
  +(defgeneric execute-command (command &rest arguments &key &allow-other-keys)
  +  (:documentation "Executes a COMMAND with the command line ARGUMENTS."))
  +
   (defgeneric init-action (action command)
     (:documentation "Initializes the action based on the command")
     (:method ((action action) command) #| noop |#))
  
positive.code: 
  (defun parse-command-args (args)
    "Parses the command-line and returns ARGS as list of keyword value pairs."
    (list* :command (to-keyword (first args))
           (parse-rest-command-args (rest args))))
  
  (defun main ()
    "Main entry point."
    (let* ((command-args (parse-command-args (command-line-arguments))))
      (destructuring-bind (&key force verbose interactive &allow-other-keys) command-args
        (when verbose
          (setf *verbose* (read-from-string verbose)))
        (set-interactive-mode interactive)
  
        (verbose "Program name: ~A" (program-name))
        (verbose "Current dir: ~A" *default-pathname-defaults*)
        (vv "Command line: ~{'~A'~^ ~}" (command-line-arguments))
  
        (with-continue-on-error (:when force)
          (case (getf command-args :command)
            (:combine (apply 'combine command-args))
            (t        (apply 'process command-args)))))))
  
negative.code: ;;; Main Processing Loop
  ;;;
  
  (defun process (command &rest args
                     &key deps load srcs outs gendir
                     warnings hashes
                     specs
                     (compilation-mode :fastbuild)
  