anchor.diff:  
   (defmacro with-multiple-cursors ((&optional (buffer '(current-buffer))) &body body)
     `(call-with-multiple-cursors ,buffer (lambda () ,@body)))
  +
  +(defun buffer-cursors (buffer)
  +  (sort (copy-list (cons (buffer-point buffer)
  +                         (buffer-fake-cursors buffer)))
  +        #'point<))
  +
  +(define-command add-cursors-to-next-line () ()
  +  (let ((cursors (buffer-cursors (current-buffer))))
  +    (loop :for (cursor next-cursor) :on cursors
  +          :do (with-point ((p cursor))
  +                (when (and (line-offset p 1)
  +                           (or (null next-cursor)
  +                               (not (same-line-p p next-cursor))))
  +                  (add-fake-cursor p))))))
  +
  +(define-command clear-cursors () ()
  +  (delete-all-fake-cursors (current-buffer)))
  
positive.code: (in-package :lem)
  
  ;; (pushnew :lem.features.multiple-cursors *features*)
  
  (defun buffer-fake-cursors (buffer)
    (buffer-value buffer 'fake-cursors))
  
negative.code:   (mapc #'delete-fake-cursor (buffer-fake-cursors buffer))
    (values))
  
  (defun foreach-multiple-cursors (buffer function)
    (dolist (point (buffer-fake-cursors buffer))
      (funcall function point))
  