(RangeIterator. i end step)
(deftype RangeIterator [^:mutable i end step] Object (hasNext [_] (if (pos? step) (< i end) (> i end))) (next [_] (let [ret i] (set! i (+ i step)) ret)))