anchor.diff:          (apply #'red:sadd (object-key model '_indices) index-keys)
           (dolist (index index-keys)
             (red:sadd index (id model)))
  -        (red:sadd (class-key model 'all) (id model))))))
  +        (red:sadd (class-key model 'all) (id model))
  +        (setf (slot-value model 'savedp) t)))))
   
   (defgeneric del (model)
     (:documentation "Removes MODEL from the data store.")
  
positive.code: (define-constant +global-id-counter+ "CL-OHM-GLOBAL-ID-COUNTER" :test #'string=)
  
  (defclass ohm-model ()
    ((id :reader id)))
  
  (defmacro defohm (name superclasses slots)
    `(defclass ,name ,(cons 'ohm-model superclasses)
  
negative.code: (defun plist->object (class plist)
    (apply #'make-instance class plist))
  
  (defun make-persisted-instance (class id &optional initargs)
    "Creates a instance ARGS. ARGS is a Redis result set.
  Obviously this is only sensible inside a WITH-CONNECTION block."
    (let ((instance (plist->object class (normalize-tuples initargs))))
      (setf (slot-value instance 'id) id)
      (setf (slot-value instance 'savedp) t)
      instance))
  
  (defun make-persisted-instances (class ids)
    (loop for id in ids
  