anchor.diff:      (cond ((equal val "KANJI") :kanji)
             ((equal val "KANA") :kana)
             (t :gap))))
  +
  +(defmethod word-info-conjugations ((obj cons))
  +  (let ((val (jsown:val obj "type")))
  +    (cond ((equal val "ROOT") :root)
  +          (t val))))
   
   (def-reader-for-json word-info-text "text")
   (def-reader-for-json word-info-kana "kana")
  
positive.code:                        ("compound" (mapcar #'word-info-text (word-info-components word-info)))
                         ("components" (loop for wi in (word-info-components word-info)
                                          collect (inner wi (not (word-info-primary wi))))))
                       (let ((seq (word-info-seq word-info)) desc)
                         (cond ((and suffix (setf desc (get-suffix-description seq)))
                                (jsown:extend-js js ("suffix" desc)))
                               (seq (jsown:extend-js js ("gloss" (get-senses-json seq)))))
                         (when seq
                           (jsown:extend-js js ("conj" (conj-info-json seq))))))
                   js)))
        (if (word-info-alternative word-info)
            (jsown:new-js ("alternative" (mapcar #'inner (word-info-components word-info))))
  
negative.code:                                                          :text (get-text wrd)
                                                           :kana (get-kana wrd)
                                                           :seq (seq wrd)
                                                           :conjugations (word-conjugations wrd)
                                                           :primary (= (id wrd) primary-id))))
                   :score (segment-score segment)
                   :start (segment-start segment)
  