Fix is not 100% right. After your checkin of Nov 3 a binding can still see itself when it is only about to exist but should not yet.

First I'll give you an example emulating PCL method creation, followed by a small example of method creation - a method's use-written code accidentally sees its FMF.

* (setq sb-ext:*evaluator-mode* :interpret)
:INTERPRET
* (let* ((foo (lambda () (format t "In foo: ~S~%" foo) 'hi))) 
    (format t "FOO=~S and (FOO)=~S~%" foo (funcall foo)))
prints:
In foo: #<INTERPRETED-FUNCTION NIL {10032BE42B}>
FOO=#<INTERPRETED-FUNCTION NIL {10032BE42B}> and (FOO)=HI

* (defmethod foo ((self t)) (print sb-pcl::fmf) 'how-about-them-apples)
STYLE-WARNING: Implicitly creating new generic function COMMON-LISP-USER::FOO.
#<STANDARD-METHOD FOO (T) {10032BB5A3}>

* (foo 9)
#<INTERPRETED-FUNCTION (FAST-METHOD FOO (T))>
HOW-ABOUT-THEM-APPLES


Here's a simple-ish fix.  I haven't really tested it to destruction, but
it gets your test case right.