anchor.diff:  	      nil)))))
   
   ;;; Search an ast to see whether its original form is eq to the ast
  -(defgeneric search-ast (form ast))
  -
  -(defmethod search-ast (form ast)
  -  (if (eq form (original-form ast))
  -      ast
  -      nil))
  -
  -(defmethod search-ast (form (ast compound-form))
  -  (or (call-next-method)
  -      (find-if (lambda (subform)
  +(defun search-ast (form ast)
  +  (cond ((eq form (original-form ast))
  +	 ast)
  +	((typep ast 'compound-form)
  +	 (some (lambda (subform)
   		 (search-ast form subform))
  -	       (subforms ast))))
  +	       (subforms ast)))
  +	(t nil)))
   
   ;;; Create a new ast from the form by either finding
   ;;; an existing (sub) ast that has form as its original form,
   ;;; or by creating a new ast. 
   (defun fixup (form ast)
     (or (search-ast form ast)
  -      (cond ((constantp form)
  +      (cond ((symbolp form)
  +	     (make-instance 'symbol-form
  +			    :original-form form))
  +	    ((atom form)
   	     (make-instance 'constant-form
   			    :original-form form))
  -	    ((symbolp form)
  -	     (make-instance 'symbol-form
  -			    :original-form form))
  -	    ((consp form)
  +	    (t
   	     (assert (proper-list-p form))
   	     (make-instance 'compound-form
   			    :original-form form
  
positive.code:   ;; FIXME: issue a warning if the variable doesn't exist 
    (make-instance 'setq-form
  		 :original-form (original-form ast)
  		 :variable (lookup (original-form (car (subforms ast)))
  				   environment
  				   'variable)
  		 :value (convert (cadr (subforms ast)) environment)))
  
  (defmethod convert-special ((op (eql 'progn)) ast environment)
    (cond ((null (cdr (subforms ast)))
  
negative.code: 			    :value 
  			    (convert (if (typep binding-form 'symbol-form)
  					 nil
  					 (cadr (subforms binding-form)))
  				     environment)))))
        (loop for binding in bindings
  	    do (add-binding (name (variable binding))
  			    (variable binding)
  			    (variables new-environment)))
        (make-instance 'let-form
  		     :original-form (original-form ast)
  