 
 (defn ^PersistentVector read-delimited-list
   [delim rdr recursive?]
-  (let [first-line (if (satisfies? IndexingReader rdr)
+  (let [first-line (if (instance? IndexingPushbackReader (class rdr))
                      (get-line-number rdr))]
-   (loop [a (transient [])]
-     (let [ch (read-past whitespace? rdr)]
-       (when-not ch
-         (reader-error rdr "EOF while reading"
-                       (if first-line
-                         (str ", starting at line" first-line))))
-       (if (= delim ch)
-         (persistent! a)
-         (if-let [macrofn (macros ch)]
-           (let [mret (macrofn rdr ch)]
-             (recur (if-not (= mret rdr) (conj! a mret) a)))
-           (do
-             (unread rdr ch)
-             (let [o (read rdr true nil recursive?)]
-               (recur (if-not (= o rdr) (conj! a o) a))))))))))
+    (loop [a (transient [])]
+      (let [ch (read-past whitespace? rdr)]
+        (when-not ch
+          (reader-error rdr "EOF while reading"
+                        (if first-line
+                          (str ", starting at line" first-line))))
+        (if (identical? ^char delim ^char  ch)
+          (persistent! a)
+          (if-let [macrofn (macros ch)]
+            (let [mret (macrofn rdr ch)]
+              (recur (if-not (= mret rdr) (conj! a mret) a)))
+            (do
+              (unread rdr ch)
+              (let [o (read rdr true nil recursive?)]
+                (recur (if-not (= o rdr) (conj! a o) a))))))))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; data structure readers

        (throw e)
        (throw (ex-info (.getCause e)
                        (merge {:type :reader-exception}
                               (if (satisfies? IndexingReader reader)
                                 {:line (get-line-number reader)
                                  :column (get-column-number reader)}))
                        e))))))

      (instance? IRecord form) form
      (map? form) (list 'clojure.core/apply 'clojure.core/hash-map
                        (list 'clojure.core/seq (cons 'clojure.core/concat (expand-list
                                                                            (flatten-map form)))))
      (vector? form) (list 'clojure.core/apply 'clojure.core/vector
                           (list 'clojure.core/seq (cons 'clojure.core/concat
                                                         (expand-list (seq form)))))
