                 (or (match (get matchers j) i max path)
                     (recur (inc j))))))
           (view [_] (mapv view matchers))
-          (depth [_] (inc (apply max 0 (map depth matchers))))
+          (depth [_] (inc ^long (apply max 0 (map depth matchers))))
           (length [_]))))
     (-pretty [_ matcher]
       (view matcher))

    (wild-matcher [_ key end matcher]
      (reify Matcher
        (match [_ i max path]
          (if (and (< i max) (not= (get path i) end))
            (loop [percent? false, j i]
              (if (= max j)
                (if-let [match (match matcher max max path)]
                  (assoc-param match key (decode path i max percent?)))

      (let [match (->Match params data)]
        (reify Matcher
          (match [_ i max path]
            (if (<= ^long i ^long max) (assoc-param match key (decode path i max true))))
          (view [_] [key [data]])
          (depth [_] 1)
          (length [_]))))
