anchor.diff:      (setf %properties (make-vector *property-vector-initial-size*)))
   
     (defun %property-vector-full-p (sheep)
  -    "A property vector is full when all elements are non-NIL." (aand %properties
  -          (find nil it :test #'eq)))
  +    "A property vector is full when all elements are non-NIL." 
  +    (aand %properties (find nil it :test #'eq)))
   
     (defun %enlarge-property-vector (sheep)
  -    (let ((old-vector %properties))
  -      (setf %properties
  -            (make-vector (* *property-vector-grow-ratio* (length old-vector))))
  -      (dotimes (i (length old-vector))
  -        (setf (svref %properties i) (svref old-vector i))))
  -    (values))
  -
  +    (let* ((old-vector %properties)
  +           (new-vector (make-vector (* *property-vector-grow-ratio* (length old-vector)))))
  +      (setf %properties (replace new-vector old-vector)))
  +    sheep)
  +  
     (defun %add-property-cons (sheep property-metaobject value)
       (let ((properties %properties))
         (if properties
  
positive.code:   "Sets NEW-VALUE as the value of a direct-property belonging to SHEEP, named
  PROPERTY-NAME. If the property does not already exist anywhere in the hierarchy list, an error
  is signaled."
    (cond ((has-direct-property-p sheep property-name)
           (setf (%direct-property-value sheep property-name) new-value))
          ((has-property-p sheep property-name)
  
negative.code:   (when (has-direct-property-p sheep property-name)
      (cerror "Add property anyway." "~A already has a direct property named ~A."
              sheep property-name))
    (let ((property-metaobject (if (has-property-p sheep property-name)
                                   (%direct-property-metaobject (property-owner sheep property-name))
                                   (defsheep (=standard-property=) ((name property-name))))))
      (%add-property-cons sheep property-metaobject value)))
  
  ;; TODO - remove-property should look at the property metaobject and remove any replies for
  