anchor.diff:                 ;; Bin changed, need to remove from the old bin and reinsert into the new.
                  (loop
                     with prev = nil
  -                  with curr = (svref sys.int::*pinned-area-free-bins* existing-bin)
  +                  with curr = (svref bins existing-bin)
                     do
                       (when (not curr)
                         (mezzano.supervisor:panic "Can't find freelist entry " final-entry " in bin " existing-bin))
  
positive.code:             (when address
                (sys.int::%%assemble-value address sys.int::+tag-object+))))))))
  
  (defun finish-expand-pinned-area (grow-by)
    (let ((len (truncate grow-by 8))
          (final-entry (sys.int::base-address-of-internal-pointer
                        (- sys.int::*pinned-area-bump* 16)))
          (new-address sys.int::*pinned-area-bump*))
      (cond ((eql (ash (sys.int::memref-unsigned-byte-8 final-entry) (- sys.int::+object-type-shift+))
                  sys.int::+object-tag-freelist-entry+)
             ;; Final entry in the area is a freelist entry, extend it by the new amount.
  
negative.code:                       (cond (prev
                               (setf (sys.int::memref-t prev 1) (sys.int::memref-t final-entry 1)))
                              (t
                               (setf (svref bins existing-bin) (sys.int::memref-t final-entry 1))))
                        (return))
                      (setf prev curr
                            curr (sys.int::memref-t curr 1)))
                 (setf (sys.int::memref-t final-entry 1) (svref bins new-bin)
                       (svref bins new-bin) final-entry))
               ;; Update header with the new length.
               (setf (sys.int::memref-unsigned-byte-64 final-entry 0) (sys.int::make-freelist-header new-len)))
             (setf new-address final-entry))
            (t
             ;; Create a new freelist entry at the end.
             (let ((bin (integer-length len)))
               (setf (sys.int::memref-unsigned-byte-64 new-address 0) (sys.int::make-freelist-header len)
                     (sys.int::memref-t new-address 1) (svref bins bin))
               (setf (svref bins bin) new-address))))
      ;; Update card table pointers for the new free cards
      (loop
         for card from (sys.int::align-up new-address sys.int::+card-size+) below (+ new-address grow-by) by sys.int::+card-size+
  