anchor.diff:      (f)))
   
   
  +(defmacro with-existing-entity2 (entity &body body)
  +  `(with-existing-entity ,entity (lambda (entity) ,@body)))
  +
  +
   (defmethod initialize-instance :after ((instance Component) &rest initargs)
     (declare ( ignore initargs))
     (push instance *components*))
  
positive.code:   "Return all `Components` of `entity`.
     If `component-type` is specified, only the `Components` of `component-type`
     are returned otherwise all `Components` are returned."
    (with-existing-entity entity
      (lambda (entity)
        (remove-if-not (lambda (x) (eql x entity)) 
                       (get-components-of-type component-type) 
                       :key #'entity))))
  
negative.code: 
  
  (defmethod (setf component-entity) (entity (component Component))
    (with-existing-entity2 entity
      (setf (slot-value component 'entity) entity)))
  
  
  (defun get-components-of-type (component-type)
  