anchor.diff:            (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)))
  
positive.code:     (with-connection ()
        (red:lrem (list-key list) 0 (ohm-id element)))))
  
  (defun generic-pop (list pop-func)
    "Returns an object if pop-func delivers an id."
    (let ((id (with-connection ()
                (funcall pop-func (list-key list)))))
      (when id
        (plist->object (element-type list)
                       (fetch-one (element-type list) id)))))
  
negative.code: (defgeneric list-pop (list)
    (:documentation "Removes and returns an the right outermost element from the LIST.")
    (:method ((list ohm-list))
      (list-access list #'red:rpop)))
  
  (defgeneric list-pop-left (list)
    (:documentation "Removes and returns the left outermost element of the LIST.")
    (:method ((list ohm-list))
      (list-access list #'red:lpop)))
  
  (defgeneric list-index (list index)
    (:documentation "Returns the element with INDEX from LIST.")
    (:method ((list ohm-list) (index integer))
      (list-access list #'red:lindex index)))
  
  (defgeneric list-first (list)
    (:documentation "Returns the first element of the LIST.")
  