(defn find-ns-decls
"Searches a sequence of java.io.File objects (both directories and
JAR files) for .clj or .cljc source files containing (ns...) declarations.
Returns a sequence of the unevaluated ns declaration forms. Use with
clojure.java.classpath to search Clojure's classpath."
[files]
(concat
(mapcat find-ns-decls-in-dir (filter #(.isDirectory ^File %) files))
(mapcat find-ns-decls-in-jarfile (jar-files files))))