anchor.diff:  
   (defun init-tables ()
     (with-connection *connection*
  -    (let ((tables '(kanji reading ofurigana meaning)))
  +    (let ((tables '(kanji reading okurigana meaning)))
         (loop for table in (reverse tables)
            do (query (:drop-table :if-exists table)))
         (loop for table in tables
  
positive.code:             (text (node-text node)))
          (when (member type '("ja_on" "ja_kun") :test 'equal)
            (let ((text (as-hiragana text))
                  reading prefixp suffixp ofuri)
              (when (char= (char text 0) #\-)
                (setf suffixp t text (subseq text 1)))
              (when (char= (char text (1- (length text))) #\-)
  
negative.code:             (let ((dot (position #\. text)))
                (if dot
                    (setf reading (subseq text 0 dot)
                          okuri (subseq text (1+ dot)))
                    (setf reading text)))
              (let ((old-reading (gethash reading readings)))
                (cond (old-reading
                       (unless (equal (getf old-reading :type) type)
                         (setf (getf old-reading :type) "ja_onkun"))
                       (when okuri
                         (push okuri (getf old-reading :okuri)))
                       (when suffixp (setf (getf old-reading :suffixp) t))
                       (when prefixp (setf (getf old-reading :prefixp) t)))
                      (t
                       (setf (gethash reading readings)
                             `(:okuri ,(if okuri (list okuri) nil) :type ,type :suffixp ,suffixp :prefixp ,prefixp)))))))))
      (maphash
       (lambda (text rinfo)
         (let ((okuri (getf rinfo :okuri)))
           (remf rinfo :okuri)
           (let ((robj (apply #'make-dao 'reading :text text :kanji-id kanji-id rinfo)))
             (loop with rid = (id robj) 
                for of in okuri
                do (make-dao 'okurigana :text of :reading-id rid)))))
       readings)))
    
  
  