anchor.diff:         (prog1 (progn ,@body)
            (buffer-modify ,buffer)))))
   
  -(defun shift-sticky-objects (marker n)
  -  (let ((buffer (point-buffer marker))
  -        (line (get-line/point marker))
  -        (linum (point-linum marker))
  -        (charpos (point-charpos marker)))
  +(defun shift-sticky-objects (point n)
  +  (let ((buffer (point-buffer point))
  +        (line (get-line/point point))
  +        (linum (point-linum point))
  +        (charpos (point-charpos point)))
       (line-property-insert-pos line charpos n)
       (dolist (m (buffer-points buffer))
         (when (and (= linum (point-linum m))
  
positive.code:                     nil)))
          (incf (point-charpos m) n)))))
  
  (defun shift-sticky-objects-newline (marker)
    (let ((linum (point-linum marker))
          (charpos (point-charpos marker))
          (buffer (point-buffer marker))
          (line (get-line/point marker)))
      (line-property-insert-newline line (line-next line) charpos)
      (dolist (m (buffer-points buffer))
        (cond ((and (= (point-linum m) linum)
  
negative.code:                      (subseq (line-str line) 0 start)
                       (subseq (line-str line) end))))
  
  (defun %delete-line-eol/point (point start)
    (declare (special killring-stream line))
    (shift-sticky-objects-subtract-line point nil)
    (write-string (line-str line) killring-stream :start start)
    (setf (line-str line)
          (subseq (line-str line) 0 start)))
  
  (defun %delete-line/point (point start)
    (declare (special killring-stream line buffer n))
    (shift-sticky-objects-subtract-line point t)
    (write-string (line-str line) killring-stream :start start)
    (write-char #\newline killring-stream)
    (unless (eq n 'T)
  