anchor.diff:                                   (find-package :SETF))
                               (list 'cl:setf (read-from-string (symbol-name name)))
                               name)))
  -                      (remove-if (lambda (func-spec)
  -                                   ;; weed out all the macrolets
  -                                   (eql 'ccl::macro (second func-spec)))
  -                                 funs))))
  +                    (remove-if (lambda (func-spec)
  +                                 ;; weed out all the macrolets
  +                                 (eql 'ccl::macro (second func-spec)))
  +                               funs))))
   
   ;;;; ** SBCL
    
   #+sbcl
  -(defun environment-p (environment)
  -  (subtypep (class-of environment) (find-class 'sb-kernel:lexenv)))
  +(defmethod environment-p ((environment sb-kernel:lexenv))
  +  t)
   
   #+sbcl
  -(defun lexical-variables (environment)
  +(defmethod lexical-variables ((environment sb-kernel:lexenv))
     (loop
        for var-spec in (sb-c::lexenv-vars environment)
        when (and (atom (cdr var-spec))
  
positive.code:        collect (car var-spec)))
  
  #+cmu
  (defun lexical-functions (environment)
    (loop
       for func-spec in (c::lexenv-functions environment)
       ;; flet and labels function look like ((FLET ACTUAL-NAME) . STUFF)
  
negative.code:                                             (and (ccl::var-ea var-spec)
                                                   (consp (ccl::var-ea var-spec))
                                                   (eql :symbol-macro (car (ccl::var-ea var-spec)))))
                                            vars)))))
  
  #+openmcl
  (defmethod lexical-functions ((environment ccl::lexical-environment))
    (loop
       for env = environment
            then (ccl::lexenv.parent-env env)
       while (and env
  