         class-name        (:name info)
         dependencies      (second class-info)
         fixed-method-type (determine-type-name owner)
-        argument-types    (map #(.getClassName ^org.objectweb.asm.Type %) (org.objectweb.asm.Type/getArgumentTypes desc))
-        return-type       (.getClassName (org.objectweb.asm.Type/getReturnType desc))]
+        argument-types    (map #(determine-type-name (.getClassName ^org.objectweb.asm.Type %)) (org.objectweb.asm.Type/getArgumentTypes desc))
+        return-type       (determine-type-name (.getClassName (org.objectweb.asm.Type/getReturnType desc)))]
     (assert (not (xor owner fixed-method-type)) (str "owner=" owner ", fixed-method-type=" fixed-method-type))  ; Check that ASM doesn't f up the method type descriptor
     (assert (not (xor desc return-type)) (str "desc=" desc ", return-type=" return-type))  ; Check that ASM doesn't f up the return type descriptor
     [

        class-name            (:name info)
        dependencies          (second class-info)
        fixed-exception-names (map determine-type-name exceptions)
        argument-types        (map #(.getClassName ^org.objectweb.asm.Type %) (org.objectweb.asm.Type/getArgumentTypes desc))
        return-type           (.getClassName (org.objectweb.asm.Type/getReturnType desc))]
    (assert (not (xor desc return-type)) (str "desc=" desc ", return-type=" return-type))  ; Check that ASM doesn't f up the return type descriptor
    [
      info

(def ^:private version-name-map
  "Map of class version numbers to human readable equivalent."
  {
    (org.objectweb.asm.Opcodes/V1_1) "1.1",
    (org.objectweb.asm.Opcodes/V1_2) "1.2",
    (org.objectweb.asm.Opcodes/V1_3) "1.3",
    (org.objectweb.asm.Opcodes/V1_4) "1.4",
    (org.objectweb.asm.Opcodes/V1_5) "1.5",
    (org.objectweb.asm.Opcodes/V1_6) "1.6",
    (org.objectweb.asm.Opcodes/V1_7) "1.7"
  })

(def ^:private type-codes-to-names
  {
    \B (.getClassName org.objectweb.asm.Type/BYTE_TYPE)
    \C (.getClassName org.objectweb.asm.Type/CHAR_TYPE)
    \D (.getClassName org.objectweb.asm.Type/DOUBLE_TYPE)
    \F (.getClassName org.objectweb.asm.Type/FLOAT_TYPE)
    \I (.getClassName org.objectweb.asm.Type/INT_TYPE)
    \J (.getClassName org.objectweb.asm.Type/LONG_TYPE)
    \S (.getClassName org.objectweb.asm.Type/SHORT_TYPE)
    \V (.getClassName org.objectweb.asm.Type/VOID_TYPE)
    \Z (.getClassName org.objectweb.asm.Type/BOOLEAN_TYPE)
  })

(def ^:private primitive-type-names (vals type-codes-to-names))
