anchor.diff:                       (lambda (marker)
                          (search-from-end marker nil))
                        (lambda (marker)
  -                       (line-offset marker -1))
  +                       (nth-value 1 (line-offset marker -1)))
                        (lambda (marker charpos)
                          (unless (zerop nlines)
                            (line-offset marker (- nlines)))
  
positive.code:                (points-to-string (line-start start-marker)
                                   (line-end (line-offset end-marker nlines))))))
        (search-step marker
                      (lambda (marker)
                        (search* string
                                 (take-string marker)
                                 :start2 (marker-charpos marker)))
                      (lambda (marker)
                        (search* string (take-string marker)))
                      (lambda (marker)
                        (line-offset marker 1))
                      (lambda (marker charpos)
                        (character-offset (line-start marker)
                                          (+ charpos (length string))))
                      (search-forward-endp-function limit-marker)))))
  
  (defun search-backward (marker string &optional limit-marker)
    (let ((nlines (count #\newline string)))
  
negative.code:           (endp
             (m :end end))
            (t
             (m)))))
  