anchor.diff:               (let ((new-cd (get-conj-data (conj-data-via conj-data) (conj-data-from conj-data))))
                        (get-original-text* new-cd src-text))))))
   
  -(defgeneric get-original-text (reading)
  +(defgeneric get-original-text (reading &key conj-data)
     (:documentation "Returns unconjugated text(s) for reading")
  -  (:method ((reading simple-text))
  -    (let ((orig-texts (get-original-text* (word-conj-data reading) (text reading)))
  +  (:method ((reading simple-text) &key conj-data)
  +    (let ((orig-texts (get-original-text* (or conj-data (word-conj-data reading)) (text reading)))
             (table (case (word-type reading) (:kanji 'kanji-text) (:kana 'kana-text))))
         (loop for (txt seq) in orig-texts
              nconc (select-dao table (:and (:= 'seq seq) (:= 'text txt)))))))
  
positive.code: 
  (defstruct conj-data seq from via prop src-map)
  
  (defun get-conj-data (seq &optional from/conj-ids texts)
    "from/conj-ids can be either from which word to find conjugations or a list of conj-ids
     texts is a string or list of strings, if supplied, only the conjs that have src-map with this text will be collected
  "
    (unless (listp texts)
      (setf texts (list texts)))
    (loop for conj in (cond
  
negative.code: (defmethod word-type ((obj proxy-text))
    (word-type (source obj)))
  
  (defmethod get-original-text ((reading proxy-text) &key conj-data)
    (get-original-text (source reading) :conj-data conj-data))
  
  (defun find-word-as-hiragana (str &key exclude finder)
    (let* ((as-hiragana (as-hiragana str))
  