anchor.diff:           (loop for obj in (sheep-hierarchy-list sheep)
               when (has-direct-property-p obj property-name)
               return obj)))
  -    (if owner
  -        owner
  +    (or owner
           (if errorp
               (error 'unbound-property
                      :format-control "Property ~A is unbound for sheep ~S"
  
positive.code: (defgeneric available-properties (sheep)
    (:documentation "Returns a list of property-spec objects describing all properties available to
  SHEEP, including inherited ones."))
  
  (defgeneric property-summary (sheep &optional stream)
    (:documentation "Provides a pretty-printed representation of SHEEP's available properties."))
  
negative.code: (defgeneric remove-all-direct-properties (sheep)
    (:documentation "Wipes out all direct properties and their values from SHEEP."))
  
  (defgeneric has-direct-property-p (sheep property-name)
    (:documentation "Returns T if SHEEP has a property called PROPERTY-NAME as a direct property. 
  NIL otherwise."))
  
  (defgeneric has-property-p (sheep property-name)
    (:documentation "Returns T if calling PROPERTY-VALUE on SHEEP using the same property-name
  