   use the expensive diff algorithm for this."
   [a b ca cb]
   (let [[short long] (if (> ca cb) [b a] [a b])
-        i (index-of long short)]
+        i (int (index-of long short))]
     (if (= i -1)
       nil
       (if (= short a)

                             n))]
                   [i (.substring a i) (.substring b i)]))
  (common-suffix [^String a ^String b]
                 (let [a-length (.length a)
                       b-length (.length b)
                       n (Math/min a-length b-length)
                       i (loop [i 1]
                           (if (<= i n)
                             (if (not= (.charAt a (- a-length i))
                                       (.charAt b (- b-length i)))

                         (range (+ i cb) ca)))}))))

(defn- half-match* [long short i]
  (let [target (subsequence long i (+ i (quot (count long) 4)))]
    (loop [j (index-of short target 0)
           result []]
      (if (= j -1)
