anchor.diff:    "Returns the property-value set locally in OBJECT for PROPERTY-NAME.
   If the value is non-local (is delegated or does not exist in the hierarchy list),
   a condition of type UNBOUND-DIRECT-PROPERTY condition is signalled."
  -  ;;  (declare (inline %object-properties %get-property-cons)) ;commented until after testing
  +  ;; TODO - rewrite this shit
     (if (%object-properties object)
         (aif (%get-property-cons object property-name)
              (cdr it)
  
positive.code:   (some (rcurry 'has-direct-property-p property-name)
          (object-hierarchy-list object)))
  
  ;; TODO - The way adding/removing properties is done needs to be thought out better.
  ;;        Right now, doing (defobject (something) ((var "value"))) would create that
  ;;        property locally, which could become problematic, specially wrt to how much
  ;;        space I was hoping to save by adding fresh local property metaobjects only
  ;;        when they're non-existent in the hierarchy-list, or when add-property is used.
  ;;
  ;;        A good part of this issue will probably be resolved when there's a clean,
  ;;        straightforward API for adding/removing properties. The current interface
  ;;        is suboptimal, needless to say. -zkat
  (defun add-property (object property-name value 
                       &key (reader nil readerp)
                       (writer nil writerp)
                       accessor)
    "Adds a property named PROPERTY-NAME to OBJECT, initialized with VALUE."
    (prog1 object
      (assert (symbolp property-name))
      (when (has-direct-property-p object property-name)
        (cerror "Remove existing property." "~A already has a direct property named ~A."
                object property-name)
        (remove-property object property-name))
      (%add-property-cons object
                          #+sheeple3.1
                          (if (has-property-p object property-name)
                              (%direct-property-metaobject (property-owner object property-name)
                                                           property-name)
                              (defobject (=standard-property=) ((name property-name))))
                          #-sheeple3.1 property-name
                          value)
      (when reader (add-reader-to-object reader property-name object))
      (when writer (add-writer-to-object writer property-name object))
      (when accessor
  
negative.code:   "Sets NEW-VALUE as the value of a direct-property belonging to OBJECT, named
  PROPERTY-NAME. If the property does not already exist anywhere in the hierarchy list, an error
  is signaled."
    ;; TODO - This -also- needs to be involved in the mold-management process.
    (cond ((has-direct-property-p object property-name)
           (setf (%direct-property-value object property-name) new-value))
          ((has-property-p object property-name)
  