anchor.diff:                                     :metaclass m2class)
                    (error "can not specify ~a as metaclass because this class ~a is a subclass of ~a."
                           metaclass name m1class)))))
  -    (let ((superclasses (mapcan (compose #'c2mop:compute-class-precedence-list #'find-class)
  -                                direct-superclasses)))
  -      (loop for (m1class . m2class) in *metap-m1-m2-pairs*
  -         when (member (find-class m1class) superclasses) return (apply-m2class m1class m2class)
  +    (let ((precedense-list (compute-precedense-list (mapcar #'find-class direct-superclasses))))
  +      (loop for c in precedense-list do
  +           (some-<> (car (member (class-name c) *metap-m1-m2-pairs* :key #'car))
  +             (apply-m2class (car <>) (cdr <>))
  +             (return <>))
            finally (return (call-next-method))))))
   
  
positive.code: 
  (defun clear-m1-m2-pairs ()
    (setf *metap-m1-m2-pairs* nil))
  
  (defmethod c2mop:ensure-class-using-class :around (class name &rest args
                                                     &key
  
negative.code: 
  (in-package :cl-user)
  (defpackage metap
    (:use :cl :cl-thread-macro)
    (:import-from :alexandria :compose)
    (:export :*metap-m1-m2-pairs*
             :register-m1-m2-pair
  