anchor.diff:       do (memoize-property-access (weak-pointer-value child-pointer)))
     new-value)
   
  +(defun remove-property (sheep property-name)
  +  (if (std-sheep-p sheep)
  +      (std-remove-property sheep property-name)
  +      (remove-property-using-metasheep (sheep-metasheep sheep) sheep property-name)))
  +(defun std-remove-property (sheep property-name)
  +  (when (remhash property-name (gethash 'properties sheep))
  +    (memoize-property-access sheep)
  +    t))
  +
  +(defun has-property-p (sheep property-name)
  +  "Returns T if a property with PROPERTY-NAME is available to SHEEP."
  +  (handler-case
  +      (when (property-value sheep property-name)
  +	t)
  +    (unbound-property () nil)))
  +
  +(defun has-direct-property-p (sheep property-name)
  +  (if (std-sheep-p sheep)
  +      (std-has-direct-property-p sheep property-name)
  +      (has-direct-property-p-using-metasheep 
  +       (sheep-metasheep sheep) sheep property-name)))
  +(defun std-has-direct-property-p (sheep property-name)
  +  (multiple-value-bind (value has-p)
  +      (gethash property-name (gethash 'properties sheep))
  +    value
  +    has-p))
  +
  +(defun who-sets (sheep property-name)
  +  (if (std-sheep-p sheep)
  +      (std-who-sets sheep property-name)
  +      (who-sets-using-metasheep (sheep-metasheep sheep) sheep property-name)))
  +(defun std-who-sets (sheep property-name)
  +  (multiple-value-bind (owner has-p)
  +      (gethash property-name (gethash 'property-owners sheep))
  +    (if has-p
  +	owner
  +	(error 'unbound-property))))
  +
  +(defun available-properties (sheep)
  +  (if (std-sheep-p sheep)
  +      (std-available-properties sheep)
  +      (available-properties-using-metasheep (sheep-metasheep sheep) sheep)))
  +(defun std-available-properties (sheep)
  +  (let ((obj-keys (loop for keys being the hash-keys of (gethash 'properties sheep)
  +		     collect keys)))
  +    (remove-duplicates
  +     (flatten
  +      (append obj-keys (mapcar #'available-properties (gethash 'parents sheep)))))))
  +
  +;;;
  +;;; Cloneforms/functions
  +;;;
   (defun get-cloneform (sheep property-name)
     (if (std-sheep-p sheep)
         (std-get-cloneform sheep property-name)
  
positive.code: 
  ;;;
  ;;; Hierarchy Resolution
  ;;; - blatantly taken from Closette.
  ;;;
  (defun collect-parents (sheep)
    (labels ((all-parents-loop (seen parents)
  
negative.code: 	    nil)))
  
  ;;;
  ;;; Property Access
  ;;;
  
  (defun property-value (sheep property-name)
  