(defpackage :mop-test (:shadowing-import-from :closer-mop :standard-method :standard-generic-function :defmethod :defgeneric :standard-class) (:use :cl :closer-mop) (:export )) (in-package :mop-test) (defclass slot-logging-class (standard-class) ((%log-stream :accessor log-stream :initform (make-synonym-stream '*trace-output*)))) (defmethod validate-superclass ((class slot-logging-class) (super standard-class)) t) (defmethod slot-value-using-class ((class slot-logging-class) instance slotd) (format (log-stream class) "~&Instance ~s of class ~s read slot ~s~%" (class-name class) instance (slot-definition-name slotd)) (call-next-method)) (defmethod (setf slot-value-using-class) (new-value (class slot-logging-class) instance slotd) (format (log-stream class) "~&Instance ~s of class ~s write slot ~s: ~s~%" (class-name class) instance (slot-definition-name slotd) new-value) (call-next-method)) (defclass tmp (standard-object) ((%a :reader a :initform :b)) (:metaclass slot-logging-class))