anchor.diff:    (let ((model (%train problem parameter)))
       ;; The models created by svm_train keep references into the
       ;; problem so it must be kept around.
  -    (setf (extra-references model)
  -          (list (cons (pointer problem) 'problem)))
  +    (push problem (references model))
       model))
   
   (defcfun ("svm_predict" predict) :double
  
positive.code:   "An address to wrapper map.")
  
  (defclass wrapper ()
    ((pointer :initarg :pointer :reader pointer
              :documentation "A foreign pointer that is destroyed when
  its wrapper is garbage collected.")
     (ctype :initarg :ctype :reader ctype
            :documentation "The foreign type of POINTER.")
     (references :initarg :references :reader references
                 :documentation "A list of pointer/ctype conses of
  foreign objects reachable from POINTER.")
     (extra-references :initform '() :accessor extra-references
                       :documentation "A list of pointer/ctype conses
  reachable from POINTER. As opposed to REFERENCES this may be set. Use
  this to to store references to foreign objects whose parts are
  used reachable from this pointer.")))
  
  (defgeneric reachable-pointers (pointer ctype)
    (:method (pointer ctype)
      (declare (ignore pointer ctype))
      '())
    (:documentation "Return a list of conses of pointer and ctype
  representing the pointers reachable from POINTER of CTYPE."))
  
  (defgeneric ctype->wrapper-class (ctype)
    (:method (ctype)
  
negative.code:         (setf (gethash (pointer-address pointer) *wrappers*)
                (make-instance (ctype->wrapper-class ctype)
                               :pointer pointer :ctype ctype
                               :references (reachable-objects pointer ctype))))))
  
  (defgeneric destroy-wrapped-pointer (pointer ctype)
    (:method (pointer ctype)
  