anchor.diff:      (with-slots (seq ord) reading
         (let* ((entry (get-dao 'entry seq))
                (conj-of (query (:select 'from :from 'conjugation :where (:= 'seq seq)) :column))
  +             (seq-set (cons seq conj-of))
                (prefer-kana
  -              (let ((seq-set (cons seq conj-of)))
  -                (select-dao 'sense-prop (:and (:in 'seq (:set seq-set)) (:= 'tag "misc") (:= 'text "uk")))))
  -             (posi (query (:select 'text :from 'sense-prop :where (:and (:= 'seq seq) (:= 'tag "pos"))) :column))
  +              (select-dao 'sense-prop (:and (:in 'seq (:set seq-set)) (:= 'tag "misc") (:= 'text "uk"))))
  +             (posi (query (:select 'text :distinct :from 'sense-prop
  +                                   :where (:and (:in 'seq (:set seq-set)) (:= 'tag "pos"))) :column))
                (particle-p (member "prt" posi :test #'equal))
                (pronoun-p (member "pn" posi :test #'equal))
                (common (common reading))
  
positive.code:     (values readings (mapcar #'ichiran:romanize-word readings))))
  
  (defstruct segment
    start end word (score nil) (top nil)) ;; (accum 0) (path nil)
  
  (defun calc-score (reading &optional final)
    (let* ((score 1)
  
negative.code:   (:method ((obj top-array))
      (with-slots (array count) obj
        (if (>= count (length array)) array (subseq array 0 count)))))
  
  (defun find-best-path (segments &key (limit 5))
    ;;assume segments are sorted by (start, end) (as is the result of find-substring-words)
  