anchor.diff:  
   (defun clean-options (slots &rest options)
     "Cleans several options from several slots."
  +  (declare (type list slots options))
     (labels ((rec (dslots options &optional prop-accum)
                (when options
                    (let (slots
  
positive.code:   ;; Preparation
    (multiple-value-bind (cleaned-direct-slots collected-properties)
        (clean-options direct-slots :json-prop :json-decoder)
      
      ;; Automatically store all unknown json-properties + values in this slot
      ;; Note: This is used by define-json-decoder
      (unless  (find 'rest cleaned-direct-slots
                     :test (lambda (term list)
                             (find term list)))
        (push `(rest :documentation "Unknown flags put here" :initarg :rest :accessor ,(intern (string-upcase "rest-of") *package*)) cleaned-direct-slots))
      ;; Append :initarg to all slots in case it is not present yet
      (setf cleaned-direct-slots
            (mapcar
             (lambda (slot)
               (if (find :initarg slot)
                   slot
                   (append slot
                           (list :initarg (intern (symbol-name (car slot)) 'keyword)))))
  
negative.code:     (nreverse list)))
  
  (defun group (source n)
    (declare (type list source) (type integer n))
    (if (zerop n) (error "zero length"))
    (labels ((rec (source acc)
  		(let ((rest (nthcdr n source)))
  