anchor.diff:               (type (simple-array double-float) datamatrix)
                (type (simple-array fixnum) index-offset)
                (type fixnum datum-index n-tree))
  -    (let ((leaf-index-weight-pairs
  +    (let ((leaf-index-list
               (mapcar/pmapcar
                (lambda (dtree)
                  (let ((node (find-leaf (dtree-root dtree) datamatrix datum-index)))
  -                 (cons (node-leaf-index node)
  -                       (node-leaf-weight node))))
  +                 (node-leaf-index node)))
                (forest-dtree-list forest))))
         (let ((sv-index (make-array (forest-n-tree forest) :element-type 'fixnum))
               (sv-val (make-array (forest-n-tree forest)
  
positive.code: ;; Delete non-significant nodes
  
  (defun delete-children! (node)
    ;; update leaf-weight
    (setf (node-leaf-weight node)
          (+ (node-leaf-weight (node-left-node node))
             (node-leaf-weight (node-right-node node))))
    ;; delete children
    (setf (node-test-attribute node) nil
          (node-test-threshold node) nil
          (node-left-node node) nil
  
negative.code: (defstruct (node (:constructor %make-node)
                   (:print-object %print-node))
    sample-indices depth test-attribute test-threshold information-gain 
    left-node right-node dtree leaf-index)
  
  (defun %print-node (obj stream)
    (format stream "#S(NODE :TEST ~A :GAIN ~A)"
  