anchor.diff:                   (binding-table bindings)))
     (labels ((make-slot-variable ()
                (intern (make-symbol (format nil "?~A" (gensym)))))
  -           (first-occurrence (var)
  -             (not (lookup-binding bindings var)))
              (new-slot-binding (var)
                (unless (lookup-binding bindings var)
                  (add-binding bindings
  
positive.code:             ((negated-rewritable-constraintp slot-value)
               (rewrite-slot (make-slot-variable) (second slot-value) t))
              ((null slot-constraint)
               (if (first-occurrence slot-value)
                   (new-slot-binding slot-value)
                 (rewrite-slot (make-slot-variable) slot-value nil)))
              ((literalp slot-constraint)
               (rewrite-slot slot-value slot-constraint nil))
              ((negated-rewritable-constraintp slot-constraint)
               (rewrite-slot slot-value (second slot-constraint) t))
              (t
               (values slot))))))
  
  (defmethod finalize-pattern ((self pattern) bindings)
    (mapc #'(lambda (slot)
              (canonicalize-slot self slot bindings)
              (format t "slot = ~S~%" slot))
          (get-slots self)))
  
negative.code:          :reader get-name)
     (slots :initform nil
            :accessor get-slots)
     (locality :reader get-locality)
     (location :initarg :location
               :reader get-location))
    (:documentation
  