Plaster

common-lisp
(defun test () (let ((dummy-stream (make-broadcast-stream)) (methods (sb-mop:generic-function-methods #'print-object)) (oopsies 0) (goodies 0) (unknowns 0)) (dolist (method methods) (handler-case (let* ((specializers (sb-mop:method-specializers method)) (object-class (first specializers))) (sb-mop:finalize-inheritance object-class) (let ((dummy-instance (sb-mop:class-prototype object-class))) (if (eql dummy-instance (print-object dummy-instance dummy-stream)) (incf goodies) (incf oopsies)))) (error () (incf unknowns)))) (list :oopsies oopsies :goodies goodies :unknowns unknowns :all (length methods)))) ;; CL-USER> (test) ;; ; ;; ; compilation unit aborted ;; ; caught 1 fatal ERROR condition ;; ; ;; ; compilation unit aborted ;; ; caught 1 fatal ERROR condition ;; (:OOPSIES 134 :GOODIES 2 :UNKNOWNS 128 :ALL 264)