anchor.diff:  ;; Allow graph-for to return a list of grains for :WHEN and :COND.
   (defun graph-for* (env specs)
     (remove-duplicates
  -   (mapcan #'(lambda (spec)
  +   (mapcar #'(lambda (spec)
   	       (let ((grain (graph-for env spec)))
  -		 (assert (or grain
  -			     (equal :when (car spec))
  -			     (equal :cond (car spec)))
  -			 (spec)
  -			 "Couldn't find grain for spec: ~S" spec)
  -		 (if (not (listp grain))
  -		     (list grain)
  -		     grain)))
  +		 (check-type grain grain)
  +		 grain))
   	   (remove-duplicates specs :from-end t :test 'equal))
      :from-end t))
   
  
positive.code:     :initform nil
      :accessor traversed-dependencies-r)
     (included-dependencies ;;; dependencies included in the current image
      :accessor included-dependencies)
     (load-commands-r ;;; load commands issued so far to run the current compilation.
      :initform nil
  
negative.code:         (graph-for env `(:image ,post-image-name))
          (make-phony-grain
           :name `(:build ,(fullname grain))
  	 :dependencies
  	 (progn (load-command-for*
  		 env (append (compile-dependencies grain) (load-dependencies grain)))
  		(traversed-dependencies env))))))
  
  (define-graph-for :image (env name)
    (cond
  