anchor.diff:  (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 leaf-weight)
  +  left-node right-node dtree leaf-index)
   
   (defun %print-node (obj stream)
     (format stream "#S(NODE :TEST ~A :GAIN ~A)"
  
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:         (declare (type (simple-array fixnum) sv-index)
                   (type (simple-array double-float) sv-val))
          (loop for i fixnum from 0 to (1- n-tree)
                for index fixnum in leaf-index-list
                do (setf (aref sv-index i) (+ index (aref index-offset i))))
          (clol.vector:make-sparse-vector sv-index sv-val)))))
  
  (defun set-leaf-index! (dtree)
    (setf (dtree-max-leaf-index dtree) 0)
    (do-leaf (lambda (node)
               (setf (node-leaf-index node) (dtree-max-leaf-index dtree))
               (incf (dtree-max-leaf-index dtree)))
      (dtree-root dtree)))
  
  