anchor.diff:  (defparameter *metap-m1-m2-pairs* nil)
   
   (defun register-m1-m2-pair (m1class m2class)
  -  (-<> (cons (find-class m1class) (find-class m2class))
  -    (progn (when (member <> *metap-m1-m2-pairs* :test 'equal)
  -             (warn "~a and ~a pair is already registered." (car <>) (cdr <>)))
  -           <>)
  -    (push *metap-m1-m2-pairs*)))
  +  (let ((pair (cons (find-class m1class) (find-class m2class))))
  +    (when (member pair *metap-m1-m2-pairs* :test 'equal)
  +      (warn "~a and ~a pair is already registered." (car pair) (cdr pair)))
  +    (push pair *metap-m1-m2-pairs*)))
   
   (defmethod c2mop:ensure-class-using-class :around (class name &rest keys)
  -  (symbol-macrolet ((metaclass (getf keys :metaclass))
  -                    (direct-superclasses (getf keys :direct-superclasses)))
  +  (symbol-macrolet ((metaclass (getf keys :metaclass)))
       (flet ((apply-m2class (m1class m2class)
                (when (and metaclass
                           (not (member metaclass `(standard-class ,(class-name m2class)))))
  
positive.code:         (reverse-precedense-list nil))
      (labels ((rec (class &optional first-p)
                 (symbol-macrolet ((junction-count (gethash class junction-count-table)))
                   (let ((supers (c2mop:class-direct-superclasses class))
                         (subs (c2mop:class-direct-subclasses class)))
                     (if first-p
                         (cond ((null class) nil)
                               (junction-count (incf junction-count))
  
negative.code:              (if (symbolp symbol-or-class)
                   (ignore-errors (find-class symbol-or-class))
                   symbol-or-class)))
        (let ((precedense-list (->> (mapcar #'find-class% (getf keys :direct-superclasses))
                                 (remove-if #'null)
                                 compute-precedense-list)))
          (loop for c in precedense-list do
  