anchor.diff:            (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 (point-line point)
  -                                           (point-charpos point)
  +	     :do (check-read-only-at-point point
                                              (if (eq n 'T) nil (if eolp n nil)))
   	     :do (cond
   		   ((not eolp)
  
positive.code: (define-editor-variable before-change-functions '())
  (define-editor-variable after-change-functions '())
  
  (defun check-read-only-at-point (line charpos offset)
    (unless *inhibit-read-only*
      (when (if (eql offset 0)
                (line-search-property line :read-only charpos)
                (line-search-property-range line
                                            :read-only
                                            charpos
                                            (if (null offset)
                                                nil
                                                (+ charpos offset))))
        (error 'read-only-error))))
  
  (defmacro with-modify-buffer (buffer &body body)
    (alexandria:once-only (buffer)
  
negative.code:   (:method (point string)
      (let ((buffer (point-buffer point)))
        (with-modify-buffer buffer
          (check-read-only-at-point point 0)
          (loop :with start := 0
                :for pos := (position #\newline string :start start)
                :for line := (point-line point) :then (line-next line)
  