 
 (defn ^PersistentVector read-delimited-list
   [delim rdr recursive?]
-  (let [first-line  (when (instance? clojure.tools.reader.IndexingReader rdr)
+  (let [first-line  (when (indexing-reader? rdr)
                       (get-line-number rdr))
         delim ^char delim]
     (loop [a (transient [])]


(defn read-list
  [rdr _]
  (let [[line column] (when (instance? clojure.tools.reader.IndexingReader rdr)
                        [(get-line-number rdr) (dec (get-column-number rdr))])
        the-list (read-delimited-list \) rdr true)]
    (if (empty? the-list)

                          (.getColumnNumber ^LineNumberingPushbackReader rdr))
                        (fn [rdr] 0))})

;; fast check for provided implementations
(defn indexing-reader? [rdr]
  (or (instance? clojure.tools.reader.IndexingReader rdr)
      (instance? clojure.lang.LineNumberingPushbackReader rdr)
      (and (not (instance? clojure.tools.reader.StringReader rdr))
           (not (instance? clojure.tools.reader.InputStreamReader rdr))
           (get (:impls IndexingReader) (class rdr)))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; predicates
