This isn't perfect, but at least you don't go into the debugger sometimes. I'll look closer for a better fix. An example is '+ which has source information for the method combination method.
(defun source-info-first-file-name (info) (etypecase info ((or pathname string) (namestring (truename info))) (cons (etypecase (car info) (cons (source-info-first-file-name (car info))) (standard-method (source-info-first-file-name (cdr info))) ((member function) (source-info-first-file-name (cdr info))) ((member method) (source-info-first-file-name (cdr info))) ((or pathname string) (namestring (truename (car info)))) (t (source-info-first-file-name (cdr info))))))) ;; <=====
-Alan