anchor.diff:      new-plist))
   
   (defun shift-sticky-objects-subtract-line (marker nextp)
  -  (let ((line (marker-line marker))
  +  (let ((line (get-line/marker marker))
           (linum (marker-linum marker))
           (charpos (marker-charpos marker))
           (buffer (marker-buffer marker)))
  
positive.code:                      (line-str (line-next line))))
    (line-free (line-next line)))
  
  (defmethod delete-char/marker (marker n)
    (declare (special n))
    (with-modify-buffer (marker-buffer marker)
      (with-output-to-string (killring-stream)
        (declare (special killring-stream))
        (let ((charpos (marker-charpos marker))
              (buffer (marker-buffer marker))
              (line (marker-line marker)))
          (declare (special buffer line))
          (loop :while (or (eq n 'T) (plusp n))
                :for eolp := (or (eq n 'T)
                                 (> n (- (line-length line) charpos)))
                :do (check-read-only-at-point marker (if (eq n 'T) nil (if eolp n nil)))
                :do (cond
                      ((not eolp)
                       (%delete-line-between/marker marker charpos (+ charpos n))
                       (return))
                      ((null (line-next line))
                       (%delete-line-eol/marker marker charpos)
                       (return))
                      (t
                       (%delete-line/marker marker charpos))))))))
  
  (defmethod insert-char/marker :around (marker char)
    (let ((point (marker-point marker)))
  
negative.code: 
  (defun shift-sticky-objects (marker n)
    (let ((buffer (marker-buffer marker))
          (line (get-line/marker marker))
          (linum (marker-linum marker))
          (charpos (marker-charpos marker)))
      (line-property-insert-pos line charpos n)
  