anchor.diff:          (unless (and writerp (null writer))
             (add-writer-to-object `(setf ,accessor-name) property-name object))))))
   
  -;; TODO - remove-property should look at the property metaobject and remove any replies for
  -;;        accessors that it points to. This will have to wait until reply-undefinition works
  -;;        again, though. -syko
  -;; Addendum - this may not count anymore. I'm not sure if we'll still have the metaobjects
  -;;            keep track of this info
   (defun remove-property (object property-name)
     "Removes OBJECT's direct property named PROPERTY-NAME. Signals an error if there is no such
   direct property. Returns OBJECT."
  +  ;; TODO - This is also going to have to do fancy stuff with molds.
     (if (has-direct-property-p object property-name)
         (prog1 object (%remove-property-cons object property-name))
         (error "Cannot remove property: ~A is not a direct property of ~A" property-name object)))
   
   (defun remove-all-direct-properties (object)
     "Wipes out all direct properties and their values from OBJECT."
  +  ;; TODO - Again, fancy stuff with molds
     (setf (%object-properties object) nil)
     object)
   
  
positive.code: (defun has-direct-property-p (object property-name)
    "Returns T if OBJECT has a property called PROPERTY-NAME as a direct property.
  NIL otherwise."
    (when (%get-property-cons object property-name) t))
  
  (defun has-property-p (object property-name)
    "Returns T if calling PROPERTY-VALUE on OBJECT using the same property-name
  
negative.code:   (some (rcurry 'has-direct-property-p property-name)
          (object-hierarchy-list object)))
  
  (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."
    ;; TODO - This is going to have to do some fancy stuff with molds.
    (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 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
  