anchor.diff:  	(format stream "at 0x~X" (sap-int (foreign-location instance)))
         (write-string "at \"unbound\"" stream))))
   
  -(defmethod initialize-instance :around ((instance proxy) &rest initargs)
  -  (declare (ignore initargs))
  +(defmethod initialize-instance :around ((instance proxy) &rest initargs &key &allow-other-keys) 
  +  (setf  
  +   (foreign-location instance)
  +   (apply #'allocate-foreign instance initargs))
     (prog1
         (call-next-method)
       (cache-instance instance)
  
positive.code:   (:metaclass proxy-class)
    (:size 0))
  
  (defmethod initialize-instance ((struct struct) &rest initargs)
    (declare (ignore initargs))
    (unless (slot-boundp struct 'location)
      (let ((size (foreign-size (class-of struct))))
        (if (zerop size)
  	  (error "~A has zero size" (class-of struct))
  	(setf (slot-value struct 'location) (allocate-memory size)))))
    (call-next-method))
  
  
  ;;;; Metaclasses used for subclasses of struct
  
negative.code:        (slot-value slotd 'reader-function)
         #'(lambda (object)
  	   (declare (ignore object))
  	   (error "Slot is not readable: ~A" (slot-definition-name slotd)))
         (slot-value slotd 'boundp-function)
         #'(lambda (object) (declare (ignore object)) nil))
  
  