anchor.diff:            (push run-size runs)))
       (nreverse runs)))
   
  -(defun constraint-match-prefix-p (line constraint end)
  +(defun-memoized constraint-match-prefix-p (line constraint end)
     (let ((runs (get-complete-runs line end)))
       (and (>= (length constraint) (length runs))
            (equal (subseq constraint 0 (length runs))
  
positive.code:       (push (cons run-size left-cap) runs))
      (nreverse runs)))
  
  (defun possible-rows (size constraint)
    (defun possibilities-padded (size constraint) ; call with size + 1, one padding mandatory
      (cond
        ((minusp size) nil)
  
negative.code:                         suffixes)))))
    (mapcar #'cdr (possibilities-padded (1+ size) constraint))) ; remove initial padding
  
  (defun-memoized get-complete-runs (line end)
    (let (runs (run-size 0))
      (dolist (cell (subseq line 0 end))
        (ecase cell
  