anchor.diff:              (let ((slot (qtype-stack-item-slot <type>)))
                 (case slot
                   (bool  (lambda (val si) (setf (si bool) (if val 1 0))))
  -                (class (if (typep obj 'qobject)
  -                           (let ((<from> (qobject-class obj)))
  +                (class (if qobject-class
  +                           (let ((<from> qobject-class))
                                (multiple-value-bind (castfn <to>)
                                    (resolve-cast <from> (qtype-class <type>))
                                  (lambda (val si)
  
positive.code:                                    (if (typep val 'cffi:foreign-pointer)
                                         val
                                         (qobject-pointer val))))))
                  (enum (etypecase obj
                          (integer
                           (lambda (val si) (setf (si enum) val)))
                          (enum
                           (lambda (val si) (setf (si enum) (primitive-value val))))))
                  (int (etypecase obj
                         (integer
                          (lambda (val si) (setf (si int) val)))
                         (enum
                          (lambda (val si) (setf (si int) (primitive-value val))))))
                  (uint (etypecase obj
                          (integer
                           (lambda (val si) (setf (si uint) val)))
                          (enum
                           (lambda (val si) (setf (si uint) (primitive-value val))))))
                  (float (lambda (val si) (setf (si float) (float val 1.0s0))))
                  (double (lambda (val si) (setf (si double) (float val 1.0d0))))
                  ;; that leaves:
  
negative.code:          (around-type (car around-cons))
           (around-thunk (cdr around-cons)))
      (cond
        ((and primary-thunk (subtypep obj-type primary-type))
         (assert (null around-thunk))
         (named-lambda marshal-primary-outer (value stack-item cont)
           (funcall set-thunk
                    (funcall primary-thunk value)
                    stack-item)
           (funcall cont)))
        ((and around-thunk (subtypep obj-type around-type))
         (named-lambda marshal-around-outer (value stack-item cont)
           (funcall around-thunk
                    value
  