anchor.diff:        (chain mirror (get-value)))
   
       (defun get-cur (direction mirror)
  -      (chain mirror (get-cursor)))
  +      (with-slots (line ch) (chain mirror (get-cursor))
  +	(create :line line :ch (if (= direction :left) (- ch 1) ch))))
   
       (defun token-type-at-cursor (direction mirror)
  -      (chain mirror (get-token-type-at (get-cur direction mirror))))
  +      (with-slots (line ch) (get-cur direction mirror)
  +	(chain mirror (get-token-type-at (create :line line :ch (+ 1 ch))))))
       (defun token-type-at-cursor? (direction mirror type)
         (= type (token-type-at-cursor direction mirror)))
       (defun string-at-cursor? (direction mirror)
  
positive.code: 		   (:left #'at-beginning?)
  		   (:right #'at-end?))))
  	(loop do (go-char direction mirror) until (til mirror ls)
  	   while (fn (char-at-cursor direction mirror :ls ls)))))
  
      (defun skip-to (direction mirror chars &key (ls (lines (mirror-contents mirror))))
        (let ((s (new (-set chars))))
  
negative.code: 	      (other-paren (matching-brace paren)))
  	  (skip-whitespace direction mirror :ls ls)
  	  (cond ((and (string-at-cursor? direction mirror) (not (char-at-cursor? direction mirror "\"" :ls ls)))
  		 (skip-to direction mirror (list " " "\"" undefined) :ls ls))
  		((string-at-cursor? direction mirror)
  		 (skip-until 
  		  (lambda (c) (not (string-at-cursor? direction mirror)))
  		  mirror direction :ls ls))
  		((token-type-at-cursor? direction mirror :comment)
  		 (skip-to direction mirror (list " " undefined) :ls ls))
  		((and (bracket-at-cursor? direction mirror)
  		      (char-at-cursor? direction mirror other-paren :ls ls))
  		 (go-char direction mirror))
  