anchor.diff:      (mapcar (lambda (plist)
                 (plist->object (element-type list) plist))
               (fetch (element-type list)
  -                   (with-connection ()
  -                     (red:lrange (list-key list) start stop))))))
  +                   (list-ids list)))))
   
   (defgeneric list-replace (list new-elements)
     (:documentation "Replaces the LIST elements with NEW-ELEMENTS.")
  
positive.code: (defgeneric list-pop (list)
    (:documentation "Removes and returns an the right outermost element from the LIST.")
    (:method ((list ohm-list))
      (generic-pop list #'red:rpop)))
  
  (defgeneric list-pop-left (list)
    (:documentation "Removes and returns the left outermost element of the LIST.")
    (:method ((list ohm-list))
      (generic-pop list #'red:lpop)))
  
  (defgeneric list-index (list index)
    (:documentation "Returns the element with INDEX from LIST.")
    (:method ((list ohm-list) (index integer))
      (let ((id (with-connection ()
                  (red:lindex (list-key list) index))))
        (when id
          (plist->object (element-type list)
                         (fetch-one (element-type list) id))))))
  
  (defgeneric list-first (list)
    (:documentation "Returns the first element of the LIST.")
  
negative.code:           (red:del (list-key list))
            (dolist (id ids)
              (red:rpush (list-key list) id)))))))
  
  (defgeneric list-elements (list)
    (:documentation "Returns all elements in LIST.")
    (:method ((list ohm-list))
      (list-range list 0 -1)))
  