anchor.diff:  
   (defclass direct-property-slot-definition (direct-virtual-slot-definition)
     ((pname :reader slot-definition-pname :initarg :pname)
  -   (readable :initform t :reader slot-readable-p :initarg :readable)
  -   (writable :initform t :reader slot-writable-p :initarg :writable)
  -   (construct :initform nil :initarg :construct)))
  +   (readable :reader slot-readable-p :initarg :readable)
  +   (writable :reader slot-writable-p :initarg :writable)
  +   (construct-only :initarg :construct-only :reader construct-only-property-p)))
   
   (defclass effective-property-slot-definition (effective-virtual-slot-definition)
     ((pname :reader slot-definition-pname :initarg :pname)
      (readable :reader slot-readable-p :initarg :readable)
      (writable :reader slot-writable-p :initarg :writable)
  -   (construct :initarg :construct)))
  +   (construct-only :initarg :construct-only :reader construct-only-property-p)))
   
   (defclass direct-user-data-slot-definition (direct-virtual-slot-definition)
     ())
  
positive.code: 		 (funcall reader  gvalue +gvalue-value-offset+)
  		 (gvalue-free gvalue t)))))))
      
      (when (and (not (slot-boundp slotd 'setter)) (slot-writable-p slotd))
        (setf 
         (slot-value slotd 'setter)
         (let ((writer nil))
  	 #'(lambda (value object)
  	     (unless writer
  	       (setq writer (writer-function type)))
  	     (let ((gvalue (gvalue-new type)))
  	       (funcall writer value gvalue +gvalue-value-offset+)
  	       (%object-set-property object pname gvalue)
  	       (gvalue-free gvalue t)
  	       value))))))
  
    (call-next-method))
  
  
negative.code: 	    '(:writable nil))
  	,@(when (not (member :readable flags))
  	    '(:readable nil))
  	,@(when (member :construct-only flags)
  	    '(:construct-only t))
  	
  	;; initargs
  	,@(if (find :initarg args)
  