anchor.diff:  (defun (setf %direct-property-value) (new-value sheep property-name)
     (setf (cdr (%get-property-cons sheep property-name)) new-value))
   
  -(defun %direct-property-metaobject (sheep property-name)
  -  (car (%get-property-cons sheep property-name)))
  -(defun (setf %direct-property-metaobject) (new-value sheep pname)
  -  (setf (car (%get-property-cons sheep pname)) new-value))
  +;; (defun %direct-property-metaobject (sheep property-name)
  +;;   (car (%get-property-cons sheep property-name)))
  +;; (defun (setf %direct-property-metaobject) (new-value sheep pname)
  +;;   (setf (car (%get-property-cons sheep pname)) new-value))
   
   ;;;
   ;;; Existential
  
positive.code:   (property-value-with-hierarchy-list sheep property-name))
  
  (defun property-value-with-hierarchy-list (sheep property-name)
    (map nil (fun (when (has-direct-property-p _ property-name)
                    (return-from property-value-with-hierarchy-list
                      (direct-property-value _ property-name))))
  
negative.code:   (or (find-if (fun (has-direct-property-p _ property-name)) (sheep-hierarchy-list sheep))
        (when errorp (error 'unbound-property :sheep sheep :property-name property-name))))
  
  ;; (defun property-metaobject-p (obj)
  ;;   (and (sheepp obj)
  ;;        (find =standard-property= (sheep-hierarchy-list obj))))
  
  ;; (defun direct-property-metaobject (sheep property-name &optional errorp)
  ;;   "Returns the direct local metaobject for a property named PROPERTY-NAME."
  ;;   (or (%direct-property-metaobject sheep property-name)
  ;;       (when errorp (error 'unbound-property :sheep sheep :property-name property-name))))
  
  ;; (defun sheep-direct-properties (sheep)
  ;;   "Returns a set of direct property definition metaobjects."
  ;;   (map 'list #'car (%sheep-direct-properties sheep)))
  
  ;; (defun available-properties (sheep)
  ;;   "Returns a list of property objects describing all properties available to SHEEP, including
  ;; inherited ones."
  ;;   (let* ((direct-properties (sheep-direct-properties sheep))
  ;;          (avail-property-names (mapcar (fun (property-name _))
  ;;                                        (remove-duplicates
  ;;                                         (flatten
  ;;                                          (append direct-properties
  ;;                                                  (mapcar #'available-properties
  ;;                                                          (sheep-parents sheep))))
  ;;                                         :key #'property-name))))
  ;;     (mapcar (fun (direct-property-metaobject (property-owner sheep _ nil) _))
  ;;             avail-property-names)))
  
  ;; (defun property-summary (sheep &optional (stream *standard-output*))
  ;;   "Provides a pretty-printed representation of SHEEP's available properties."
  ;;   (format stream
  ;;           "~&Sheep: ~A~%Properties:~% ~{~{~&~3TName: ~13T~A~%~3TValue: ~13T~S~%~
  ;;            ~3TOwner: ~13T~A~%~%~}~}"
  ;;           sheep (mapcar (fun (list (property-name _)
  ;;                                    (property-value sheep (property-name _))
  ;;                                    (property-owner sheep (property-name _))))
  ;;                         (available-properties sheep))))
  
  ;; (defun direct-property-summary (sheep &optional stream)
  ;;   "Provides a pretty-printed representation of SHEEP's direct properties."
  ;;   (format stream
  ;;           "~&Sheep: ~A~%~
  ;;            Direct Properties: ~%~%~
  ;;            ~{~{~&~3TName: ~A~%~3TValue: ~S~%~%~}~}"
  ;;           sheep (mapcar (fun (list (property-name _)
  ;;                                    (direct-property-value sheep (property-name _))))
  ;;                         (sheep-direct-properties sheep))))
  