anchor.diff:             (type list slots))
   
     (if use-slot-names
  -      (loop
  -         (with-mread* (slot-name new-index) (ptr index end-index)
  -           (setf index new-index)
  -           (when (null slot-name) (return))
  -
  -           (with-mread* (value new-index) (ptr index end-index)
  -             (setf index new-index
  -                   (slot-value object slot-name) value))))
  -
  -      (dolist (slot (if slots-p slots (mlist-object-slots object)))
  -        (let ((slot-name (if (symbolp slot)
  -                             slot
  -                             (closer-mop:slot-definition-name slot))))
  -          (multiple-value-bind (value new-index)
  -              (mread ptr index end-index)
  -            (setf (slot-value object slot-name) value
  -                  index new-index)))))
  -
  -  (values object index))
  +      (mread-object-slots-using-names object ptr index end-index)
  +
  +      (progn
  +	(dolist (slot (if slots-p slots (mlist-object-slots object)))
  +	  (let ((slot-name (if (symbolp slot)
  +			       slot
  +			       (closer-mop:slot-definition-name slot))))
  +	    (mread-object-slot object ptr index end-index slot-name)))
  +	(values object index))))
   
   
   (defun check-slot-names (slots)
  
positive.code: 
  
  
  #|
  (defmethod mwrite-object ((obj tstack) ptr index end-index)
    (declare (type mem-size index end-index))
  
    (mwrite ptr index end-index (_ obj top)))
  
  
  (defmethod mread-object ((type (eql 'tstack)) ptr index end-index &key)
    (declare (type mem-size index end-index))
  
    (multiple-value-bind (top index) (mread ptr index end-index)
      (let ((obj (tstack)))
        (setf (_ obj top) top)
        (values obj index))))
  |#
  
                                                  
  
  
  (defmacro %msize* (index value &rest more-values)
  
negative.code:                                :use-slot-names ,use-slot-names))))))
    
  
  (defmacro decl-mread-class (class-name
  			    &key use-slot-names
  			    (slots nil slots-p)
  			    (mread-object 'mread-object-slots)
  			    (new-instance  `(make-instance ',class-name)))
    "shortcut for (defmethod mread-object (...))"
    (declare (type symbol mread-object)
             (type list new-instance))
  