anchor.diff:            buffer-major-mode
             buffer-minor-modes
             buffer-nlines
  +          buffer-put-property
             buffer-get-char
  -          buffer-line-lelngth
  +          buffer-line-length
             buffer-line-string
             map-buffer-lines
             buffer-take-lines
  
positive.code:   `(when (buffer-read-only-p ,buffer)
       (throw 'abort 'readonly)))
  
  (defun buffer-put-property (buffer point prop)
    (let ((line (buffer-get-line buffer (point-linum point))))
      (push (list (point-column point) prop)
            (line-props line))))
  
  (defun buffer-remove-property (buffer point)
    (let ((line (buffer-get-line buffer (point-linum point))))
      (setf (line-props line)
            (delete-if (lambda (prop)
                         (= (car prop) (point-column point)))
                       (line-props line)))))
  
  (defun %buffer-get-line (buffer linum)
    (cond
  
negative.code: 
  (defun line-set-str (line str)
    (setf (line-str line) str))
  
  (defun line-put-property (line start end prop)
    (loop for pos from start below end
      do (setf (line-props line)
               (merge 'list
                      (list (cons pos prop))
                      (line-props line)
                      #'<
                      :key #'car)))
    (setf (line-props line)
          (delete-duplicates (line-props line)
                             :key #'car)))
  
  (defun line-remove-property (line start end prop)
    (setf (line-props line)
          (delete-if #'(lambda (elt)
                         (and (<= start (car elt) (1- end))
                              (eql prop (cdr elt))))
                     (line-props line))))
  
  (defun line-free (line)
    (when (line-prev line)
  