--- clojure-1.8.0.orig/build.xml	2016-01-19 14:29:20.000000000 -0500
+++ clojure-1.8.0/build.xml	2016-01-23 16:45:54.194673136 -0500
@@ -40,6 +40,7 @@
   <target name="compile-java" depends="init"
           description="Compile Java sources.">
     <javac srcdir="${jsrc}" destdir="${build}" includeJavaRuntime="yes"
+           classpath="/usr/share/java/asm-4.jar:/usr/share/java/asm-commons-4.jar"
            includeAntRuntime="false"
            debug="true" source="1.6" target="1.6"/>
   </target>
@@ -47,7 +48,7 @@
   <target name="compile-clojure"
           description="Compile Clojure sources.">
     <java classname="clojure.lang.Compile"
-          classpath="${maven.compile.classpath}:${build}:${cljsrc}"
+          classpath="/usr/share/java/asm-4.jar:/usr/share/java/asm-commons-4.jar:${maven.compile.classpath}:${build}:${cljsrc}"
           failonerror="true"
           fork="true">
       <sysproperty key="clojure.compile.path" value="${build}"/>
@@ -92,7 +93,7 @@
            debug="true" source="1.6" target="1.6" includeantruntime="no"/>
     <echo>Direct linking = ${directlinking}</echo>
     <java classname="clojure.lang.Compile"
-          classpath="${test-classes}:${test}:${build}:${cljsrc}"
+          classpath="/usr/share/java/asm-4.jar:/usr/share/java/asm-commons-4.jar:${test-classes}:${test}:${build}:${cljsrc}"
           failonerror="true"
 	  fork="true">
       <sysproperty key="clojure.compile.path" value="${test-classes}"/>
@@ -115,6 +116,8 @@
                    value="#{clojure.test-clojure.compilation.load-ns}"/>
       <sysproperty key="clojure.compiler.direct-linking" value="${directlinking}"/>
       <classpath>
+        <path location="/usr/share/java/asm-4.jar"/>
+        <path location="/usr/share/java/asm-commons-4.jar"/>
         <pathelement path="${maven.test.classpath}"/>
         <path location="${test-classes}"/>
         <path location="${test}"/>
@@ -133,6 +136,8 @@
       <sysproperty key="clojure.compiler.direct-linking" value="${directlinking}"/>
       <classpath>
         <pathelement path="${maven.test.classpath}"/>
+        <path location="/usr/share/java/asm-4.jar"/>
+        <path location="/usr/share/java/asm-commons-4.jar"/>
         <path location="${test-classes}"/>
         <path location="${test}"/>
         <path location="${build}"/>
--- clojure-1.8.0.orig/src/clj/clojure/core.clj	2016-01-19 14:29:20.000000000 -0500
+++ clojure-1.8.0/src/clj/clojure/core.clj	2016-01-23 16:50:12.926280030 -0500
@@ -5246,10 +5246,10 @@
                    (.getAnnotation c java.lang.annotation.Retention)] 
           (= (.value r) java.lang.annotation.RetentionPolicy/RUNTIME)))))
 
-(defn- descriptor [^Class c] (clojure.asm.Type/getDescriptor c))
+(defn- descriptor [^Class c] (org.objectweb.asm.Type/getDescriptor c))
 
 (declare process-annotation)
-(defn- add-annotation [^clojure.asm.AnnotationVisitor av name v]
+(defn- add-annotation [^org.objectweb.asm.AnnotationVisitor av name v]
   (cond
    (vector? v) (let [avec (.visitArray av name)]
                  (doseq [vval v]
@@ -5259,7 +5259,7 @@
                  (cond 
                   (instance? java.lang.Enum ev)
                   (.visitEnum av name (descriptor (class ev)) (str ev))
-                  (class? ev) (.visit av name (clojure.asm.Type/getType ev))
+                  (class? ev) (.visit av name (org.objectweb.asm.Type/getType ev))
                   :else (throw (IllegalArgumentException. 
                                 (str "Unsupported annotation value: " v " of class " (class ev))))))
    (seq? v) (let [[nested nv] v
--- clojure-1.8.0.orig/src/clj/clojure/core_proxy.clj	2016-01-19 14:29:20.000000000 -0500
+++ clojure-1.8.0/src/clj/clojure/core_proxy.clj	2016-01-23 16:51:18.359981058 -0500
@@ -11,9 +11,9 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;; proxy ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (import
- '(clojure.asm ClassWriter ClassVisitor Opcodes Type) 
+ '(org.objectweb.asm ClassWriter ClassVisitor Opcodes Type) 
  '(java.lang.reflect Modifier Constructor)
- '(clojure.asm.commons Method GeneratorAdapter)
+ '(org.objectweb.asm.commons Method GeneratorAdapter)
  '(clojure.lang IProxy Reflector DynamicClassLoader IPersistentMap PersistentHashMap RT))
 
 (defn method-sig [^java.lang.reflect.Method meth]
--- clojure-1.8.0.orig/src/clj/clojure/genclass.clj	2016-01-19 14:29:20.000000000 -0500
+++ clojure-1.8.0/src/clj/clojure/genclass.clj	2016-01-23 16:52:02.684638807 -0500
@@ -9,8 +9,8 @@
 (in-ns 'clojure.core)
 
 (import '(java.lang.reflect Modifier Constructor)
-        '(clojure.asm ClassWriter ClassVisitor Opcodes Type)
-        '(clojure.asm.commons Method GeneratorAdapter)
+        '(org.objectweb.asm ClassWriter ClassVisitor Opcodes Type)
+        '(org.objectweb.asm.commons Method GeneratorAdapter)
         '(clojure.lang IPersistentMap))
 
 ;(defn method-sig [^java.lang.reflect.Method meth]
--- clojure-1.8.0.orig/src/clj/clojure/reflect/java.clj	2016-01-19 14:29:20.000000000 -0500
+++ clojure-1.8.0/src/clj/clojure/reflect/java.clj	2016-01-23 16:58:39.629981468 -0500
@@ -11,7 +11,7 @@
 
 (require '[clojure.set :as set]
          '[clojure.string :as str])
-(import '[clojure.asm ClassReader ClassVisitor Type Opcodes]
+(import '[org.objectweb.asm ClassReader ClassVisitor Type Opcodes]
          '[java.lang.reflect Modifier]
          java.io.InputStream)
 
--- clojure-1.8.0.orig/src/jvm/clojure/lang/Compiler.java	2016-01-19 14:29:20.000000000 -0500
+++ clojure-1.8.0/src/jvm/clojure/lang/Compiler.java	2016-01-23 16:56:35.772261713 -0500
@@ -12,11 +12,12 @@
 
 package clojure.lang;
 
-//*
+/*
 
 import clojure.asm.*;
 import clojure.asm.commons.GeneratorAdapter;
 import clojure.asm.commons.Method;
+*/
 
 import java.io.*;
 import java.lang.reflect.Constructor;
@@ -26,14 +27,15 @@
 import java.util.regex.Matcher;
 
 //*/
-/*
+///*
 
 import org.objectweb.asm.*;
 import org.objectweb.asm.commons.Method;
 import org.objectweb.asm.commons.GeneratorAdapter;
+/*
 import org.objectweb.asm.util.TraceClassVisitor;
 import org.objectweb.asm.util.CheckClassAdapter;
-//*/
+*/
 
 public class Compiler implements Opcodes{
 
--- clojure-1.8.0.orig/src/jvm/clojure/lang/Intrinsics.java	2016-01-19 14:29:20.000000000 -0500
+++ clojure-1.8.0/src/jvm/clojure/lang/Intrinsics.java	2016-01-23 16:57:05.184262012 -0500
@@ -12,7 +12,7 @@
 
 package clojure.lang;
 
-import clojure.asm.Opcodes;
+import org.objectweb.asm.Opcodes;
 
 public class Intrinsics implements Opcodes{
 private static Object[] oa(Object... arr){
--- clojure-1.8.0.orig/test/clojure/test_clojure/reflect.clj	2016-01-19 14:29:20.000000000 -0500
+++ clojure-1.8.0/test/clojure/test_clojure/reflect.clj	2016-01-23 16:59:58.489740657 -0500
@@ -26,7 +26,7 @@
 
 (deftest field-descriptor->class-symbol-test
   (are [s d] (= s (@#'reflect/field-descriptor->class-symbol d))
-       'clojure.asm.Type<><> "[[Lclojure/asm/Type;"
+       'org.objectweb.asm.Type<><> "[[Lclojure/asm/Type;"
        'int "I"
        'java.lang.Object "Ljava.lang.Object;"))
 
--- clojure-1.8.0.orig/pom.xml	2016-01-19 14:29:20.000000000 -0500
+++ clojure-1.8.0/pom.xml	2016-01-23 17:02:41.205699248 -0500
@@ -73,6 +73,16 @@
         </exclusion>
       </exclusions>
     </dependency>
+    <dependency>
+      <groupId>org.ow2.asm</groupId>
+      <artifactId>asm</artifactId>
+      <version>5.0.4</version>
+    </dependency>
+    <dependency>
+      <groupId>org.ow2.asm</groupId>
+      <artifactId>asm-commons</artifactId>
+      <version>5.0.4</version>
+    </dependency>
   </dependencies>
 
   <build>