               (recur (assoc state :offset (inc offset) :col (inc col))))))))    
 
 (defn parse-core []
-  (time 
-    (let [s (slurp "/home/lpetit/projects/clojure/src/clj/clojure/core.clj")] 
-      (parse s (.length s)) 
-      (.length s))))
+    (let [#^String s (slurp "/home/lpetit/projects/clojure/src/clj/clojure/core.clj")] 
+      (time (parse s (.length s))) 
+      (.length s)))
 
 #_(deftest test-format-code
   (testing "parens combinatorics"

(ns paredit.parser
	(:use clojure.test))

(def *brackets* {\( \) \{ \} \[ \]})
(def *opening-brackets* (set (keys *brackets*)))

	"TODO: currently the parser assumes a well formed document ...
	 TODO: make the parser restartable at a given offset given a state ...
	 TODO: make the parser fully incremental (via chunks of any possible size ...)"	
	[#^String text stop-offset]
  (loop [{ :keys [parents offset line col] :as state} { :parents [{:type nil :offset 0 :line 0 :col 0}] :offset 0 :line 0 :col 0}]
      (if (>= offset stop-offset)
        state
