   [val coll]
   (boolean (some #(= val %) coll)))
 
-(defn- fix-type-name
+(defn- fix-class-name
+  [^String class-name]
+  (if (nil? class-name)
+    nil
+    (s/replace (s/replace class-name \/ \.) "[]" "")))
+
+(defn- fix-descriptor
   [^String type-name]
   (if (nil? type-name)
     nil
-    (.replaceAll (.replaceAll (.replaceAll (.replaceAll type-name "/" ".") "\\[\\]" "") "\\[L" "") ";" "")))
-
-(defn- fix-descriptor
-  [^String desc]
-  (if (nil? desc)
-    nil
-    (fix-type-name (.getClassName (org.objectweb.asm.Type/getType desc)))))
+    (let [dearrayed-type-name (s/replace type-name "[" "")
+          type-character      (first (seq dearrayed-type-name))]
+      (condp = type-character
+        \L (fix-class-name (subs dearrayed-type-name 1 (dec (.length dearrayed-type-name))))
+        \B "byte"
+        \C "char"
+        \D "double"
+        \F "float"
+        \I "int"
+        \J "long"
+        \S "short"
+        \Z "boolean"
+        \V "void"
+        (throw (Exception. (str "Unknown type descriptor: " type-name)))))))
 
 (defn- typeof
   [access-bitmask]

     (try
       (.accept class-reader class-visitor 0)
       (catch ArrayIndexOutOfBoundsException aioobe
        (log/warn aioobe (str "Class " source " could not be parsed and has been skipped."))))
     @result)))

(defmethod class-info net.java.truevfs.access.TFile

(ns depends.reader
  (:require [clojure.tools.logging :as log]
            [clojure.java.io       :as io]
            [clojure.set           :as set]
            [clojure.string        :as s]))

(def ^:private version-name-map
  "Map of class version numbers to human readable equivalent."
