anchor.diff:                                              (and (ccl::var-ea var-spec)
                                                    (consp (ccl::var-ea var-spec))
                                                    (eql :symbol-macro (car (ccl::var-ea var-spec)))))
  -                                          vars)))))  
  +                                          vars)))))
   
   #+openmcl
  -(defun lexical-functions (environment)
  -    (loop
  +(defmethod lexical-functions ((environment ccl::lexical-environment))
  +  (loop
        for env = environment
             then (ccl::lexenv.parent-env env)
        while (and env
  
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: 
  ;;;; * Portable lexical environment access
  
  (defgeneric environment-p (environment)
    (:documentation "Returns T if ENVIRONMENT is a lexical
    environment object (something suitable for passing to
    macroexpand-1 or similar)"))
  
  (defgeneric lexical-variables (environment)
    (:documentation "Return the names of all the local variables
    in ENVIRONMENT. Does not return neither symbol-macrolets nor
    ignared variables."))
  
  (defgeneric lexical-functions (environment)
    (:documentation "Returns the names of all the local functions
    in ENVIRONMENT. Names may be symbols of lists of the form (setf
    name)."))
  
  ;;;; ** OpenMCL
  
  #+openmcl
  (defmethod environment-p ((e ccl::lexical-environment))
    t)
  
  #+openmcl
  (defmethod lexical-variables ((environment ccl::lexical-environment))
    (loop
       for env = environment
            then (ccl::lexenv.parent-env env)
  