diff --git a/dev/build.xml b/dev/build.xml
index acc8422..1908436 100755
--- a/dev/build.xml
+++ b/dev/build.xml
@@ -76,7 +76,9 @@
           <include name="colt/colt-1.2.jar"/>
           <include name="eclipse/org.eclipse.jdt.core_3.11.2-CUSTOM-GWT-2.8-20160205.jar"/>
           <include name="eclipse/jdtCompilerAdapter_3.11.2-CUSTOM-GWT-2.8-20160205.jar"/>
-          <include name="objectweb/asm-5.0.3/lib/asm-all-5.0.3.jar"/>
+          <include name="objectweb/asm-6.0/asm-6.0.jar"/>
+          <include name="objectweb/asm-6.0/asm-commons-6.0.jar"/>
+          <include name="objectweb/asm-6.0/asm-util-6.0.jar"/>
           <include name="guava/guava-19.0/guava-19.0-rebased.jar"/>
           <include name="icu4j/50.1.1/icu4j.jar"/>
           <include name="jetty/jetty-9.2.14.v20151106/jetty-all-9.2.14.v20151106.jar"/>
@@ -126,7 +128,9 @@
             <provider classname="org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer"/>
             <provider classname="org.eclipse.jetty.apache.jsp.JettyJasperInitializer"/>
           </service>
-          <zipfileset src="${gwt.tools.lib}/objectweb/asm-5.0.3/lib/asm-all-5.0.3.jar"/>
+          <zipfileset src="${gwt.tools.lib}/objectweb/asm-6.0/asm-6.0.jar"/>
+          <zipfileset src="${gwt.tools.lib}/objectweb/asm-6.0/asm-commons-6.0.jar"/>
+          <zipfileset src="${gwt.tools.lib}/objectweb/asm-6.0/asm-util-6.0.jar"/>
           <zipfileset src="${gwt.tools.lib}/apache/tapestry-util-text-4.0.2.jar"/>
           <zipfileset src="${gwt.tools.lib}/apache/ant-1.6.5.jar"/>
           <zipfileset src="${gwt.tools.lib}/colt/colt-1.2.jar"/>
@@ -218,7 +222,9 @@
       <classpath>
         <pathelement location="${gwt.tools.lib}/apache/ant-1.6.5.jar"/>
         <pathelement location="${gwt.tools.lib}/colt/colt-1.2.jar"/>
-        <pathelement location="${gwt.tools.lib}/objectweb/asm-5.0.3/lib/asm-all-5.0.3.jar"/>
+        <pathelement location="${gwt.tools.lib}/objectweb/asm-6.0/asm-6.0.jar"/>
+        <pathelement location="${gwt.tools.lib}/objectweb/asm-6.0/asm-commons-6.0.jar"/>
+        <pathelement location="${gwt.tools.lib}/objectweb/asm-6.0/asm-util-6.0.jar"/>
         <pathelement
             location="${gwt.tools.lib}/apache/commons/commons-collections-3.2.2.jar"/>
         <pathelement
diff --git a/dev/core/src/com/google/gwt/dev/javac/BytecodeSignatureMaker.java b/dev/core/src/com/google/gwt/dev/javac/BytecodeSignatureMaker.java
index 59954ca..9933f6c 100644
--- a/dev/core/src/com/google/gwt/dev/javac/BytecodeSignatureMaker.java
+++ b/dev/core/src/com/google/gwt/dev/javac/BytecodeSignatureMaker.java
@@ -56,7 +56,7 @@
     private Map<String, String> methods = new HashMap<String, String>();
 
     public CompileDependencyVisitor() {
-      super(Opcodes.ASM5);
+      super(Opcodes.ASM6);
     }
 
     public String getSignature() {
diff --git a/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java b/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java
index f9d2866..d2bb682 100644
--- a/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java
+++ b/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java
@@ -66,7 +66,7 @@
 
       public AnonymousClassVisitor() {
 
-        this.mv = new org.objectweb.asm.MethodVisitor(Opcodes.ASM5, this.mv) {
+        this.mv = new org.objectweb.asm.MethodVisitor(Opcodes.ASM6, this.mv) {
           @Override
           public void visitCode() {
             ++sawCode;
diff --git a/dev/core/src/com/google/gwt/dev/javac/asm/CollectAnnotationData.java b/dev/core/src/com/google/gwt/dev/javac/asm/CollectAnnotationData.java
index 7384ba4..6bc844b 100644
--- a/dev/core/src/com/google/gwt/dev/javac/asm/CollectAnnotationData.java
+++ b/dev/core/src/com/google/gwt/dev/javac/asm/CollectAnnotationData.java
@@ -79,7 +79,7 @@
     private final List<Object> values = new ArrayList<Object>();
 
     public MyAnnotationArrayVisitor(Callback<Object> callback) {
-      super(Opcodes.ASM5);
+      super(Opcodes.ASM6);
       this.callback = callback;
     }
 
@@ -158,7 +158,7 @@
    */
   CollectAnnotationData(String desc, boolean visible,
       Callback<CollectAnnotationData.AnnotationData> callback) {
-    super(Opcodes.ASM5);
+    super(Opcodes.ASM6);
     annotation = new AnnotationData(desc, visible);
     this.callback = callback;
   }
diff --git a/dev/core/src/com/google/gwt/dev/javac/asm/CollectFieldData.java b/dev/core/src/com/google/gwt/dev/javac/asm/CollectFieldData.java
index 00cc688..7d59164 100644
--- a/dev/core/src/com/google/gwt/dev/javac/asm/CollectFieldData.java
+++ b/dev/core/src/com/google/gwt/dev/javac/asm/CollectFieldData.java
@@ -36,7 +36,7 @@
 
   public CollectFieldData(int access, String name, String desc,
       String signature, Object value) {
-    super(Opcodes.ASM5);
+    super(Opcodes.ASM6);
     this.access = access;
     this.name = name;
     this.desc = desc;
diff --git a/dev/core/src/com/google/gwt/dev/javac/asm/CollectMethodData.java b/dev/core/src/com/google/gwt/dev/javac/asm/CollectMethodData.java
index 6b976bb..c3f72d4 100644
--- a/dev/core/src/com/google/gwt/dev/javac/asm/CollectMethodData.java
+++ b/dev/core/src/com/google/gwt/dev/javac/asm/CollectMethodData.java
@@ -58,7 +58,7 @@
   // for new List[]
   public CollectMethodData(CollectClassData.ClassType classType, int access,
       String name, String desc, String signature, String[] exceptions) {
-    super(Opcodes.ASM5);
+    super(Opcodes.ASM6);
     this.access = access;
     this.name = name;
     this.desc = desc;
diff --git a/dev/core/src/com/google/gwt/dev/javac/asm/CollectReferencesVisitor.java b/dev/core/src/com/google/gwt/dev/javac/asm/CollectReferencesVisitor.java
index a9e7fbc..7a523d9 100644
--- a/dev/core/src/com/google/gwt/dev/javac/asm/CollectReferencesVisitor.java
+++ b/dev/core/src/com/google/gwt/dev/javac/asm/CollectReferencesVisitor.java
@@ -42,7 +42,7 @@
   private class CollectGenericTypes extends SignatureVisitor {
 
     public CollectGenericTypes() {
-      super(Opcodes.ASM5);
+      super(Opcodes.ASM6);
     }
 
     @Override
@@ -120,9 +120,8 @@
     }
   }
 
-  CollectReferencesVisitor()
-  {
-    this.av = new AnnotationVisitor(Opcodes.ASM5, this.av) {
+  CollectReferencesVisitor() {
+    this.av = new AnnotationVisitor(Opcodes.ASM6, this.av) {
       @Override
       public void visitEnum(String name, String desc, String value) {
         addTypeIfClass(desc);
@@ -136,6 +135,7 @@
 
     };
   }
+  
   // internal names
   protected Set<String> referencedTypes = new HashSet<String>();
 
diff --git a/dev/core/src/com/google/gwt/dev/javac/asm/EmptySignatureVisitor.java b/dev/core/src/com/google/gwt/dev/javac/asm/EmptySignatureVisitor.java
index 5e6ef39..1ce3cd8 100644
--- a/dev/core/src/com/google/gwt/dev/javac/asm/EmptySignatureVisitor.java
+++ b/dev/core/src/com/google/gwt/dev/javac/asm/EmptySignatureVisitor.java
@@ -34,7 +34,7 @@
   protected static EmptySignatureVisitor ignore = new EmptySignatureVisitor();
 
   public EmptySignatureVisitor() {
-    super(Opcodes.ASM5);
+    super(Opcodes.ASM6);
   }
 
   /**
diff --git a/dev/core/src/com/google/gwt/dev/javac/asmbridge/EmptyVisitor.java b/dev/core/src/com/google/gwt/dev/javac/asmbridge/EmptyVisitor.java
index 82b7277..4fa5fde 100644
--- a/dev/core/src/com/google/gwt/dev/javac/asmbridge/EmptyVisitor.java
+++ b/dev/core/src/com/google/gwt/dev/javac/asmbridge/EmptyVisitor.java
@@ -27,7 +27,7 @@
  */
 public class EmptyVisitor extends ClassVisitor {
 
-  protected AnnotationVisitor av = new AnnotationVisitor(Opcodes.ASM5) {
+  protected AnnotationVisitor av = new AnnotationVisitor(Opcodes.ASM6) {
 
     @Override
     public AnnotationVisitor visitAnnotation(String name, String desc) {
@@ -41,10 +41,10 @@
   };
 
   public EmptyVisitor() {
-    super(Opcodes.ASM5);
+    super(Opcodes.ASM6);
   }
 
-  protected MethodVisitor mv = new MethodVisitor(Opcodes.ASM5) {
+  protected MethodVisitor mv = new MethodVisitor(Opcodes.ASM6) {
 
     @Override
     public AnnotationVisitor visitAnnotationDefault() {
@@ -63,7 +63,7 @@
     }
   };
 
-  protected FieldVisitor fv = new FieldVisitor(Opcodes.ASM5) {
+  protected FieldVisitor fv = new FieldVisitor(Opcodes.ASM6) {
 
     @Override
     public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
diff --git a/dev/core/src/com/google/gwt/dev/shell/rewrite/ForceClassVersion15.java b/dev/core/src/com/google/gwt/dev/shell/rewrite/ForceClassVersion15.java
index 5a0f0f4..1be0d79 100644
--- a/dev/core/src/com/google/gwt/dev/shell/rewrite/ForceClassVersion15.java
+++ b/dev/core/src/com/google/gwt/dev/shell/rewrite/ForceClassVersion15.java
@@ -25,13 +25,13 @@
 class ForceClassVersion15 extends ClassVisitor {
 
   public ForceClassVersion15(ClassVisitor v) {
-    super(Opcodes.ASM5, v);
+    super(Opcodes.ASM6, v);
   }
 
   @Override
   public void visit(final int version, final int access, final String name,
       final String signature, final String superName, final String[] interfaces) {
-    assert (version >= Opcodes.V1_5 && version <= Opcodes.V1_8);
+    assert (version >= Opcodes.V1_5);
     super.visit(Opcodes.V1_5, access, name, signature, superName, interfaces);
   }
 }
diff --git a/dev/core/src/com/google/gwt/dev/shell/rewrite/HasAnnotation.java b/dev/core/src/com/google/gwt/dev/shell/rewrite/HasAnnotation.java
index 6d69a7d..b99e5c7 100644
--- a/dev/core/src/com/google/gwt/dev/shell/rewrite/HasAnnotation.java
+++ b/dev/core/src/com/google/gwt/dev/shell/rewrite/HasAnnotation.java
@@ -54,7 +54,7 @@
   private final String targetDesc;
 
   public HasAnnotation(ClassVisitor v, Class<? extends Annotation> annotation) {
-    super(Opcodes.ASM5, v);
+    super(Opcodes.ASM6, v);
     targetDesc = Type.getDescriptor(annotation);
   }
 
diff --git a/dev/core/src/com/google/gwt/dev/shell/rewrite/RewriteJsniMethods.java b/dev/core/src/com/google/gwt/dev/shell/rewrite/RewriteJsniMethods.java
index c932d7c..e2fdafb 100644
--- a/dev/core/src/com/google/gwt/dev/shell/rewrite/RewriteJsniMethods.java
+++ b/dev/core/src/com/google/gwt/dev/shell/rewrite/RewriteJsniMethods.java
@@ -206,7 +206,7 @@
 
     public MyMethodAdapter(MethodVisitor mv, int access, String name,
         String desc) {
-      super(Opcodes.ASM5, mv, access, name, desc);
+      super(Opcodes.ASM6, mv, access, name, desc);
       this.descriptor = desc;
       this.name = name;
       isStatic = (access & Opcodes.ACC_STATIC) != 0;
@@ -329,7 +329,7 @@
 
   public RewriteJsniMethods(ClassVisitor v,
       Map<String, String> anonymousClassMap) {
-    super(Opcodes.ASM5, v);
+    super(Opcodes.ASM6, v);
     this.anonymousClassMap = anonymousClassMap;
   }
 
diff --git a/dev/core/src/com/google/gwt/dev/shell/rewrite/RewriteRefsToJsoClasses.java b/dev/core/src/com/google/gwt/dev/shell/rewrite/RewriteRefsToJsoClasses.java
index 48c74e3..d860ab7 100644
--- a/dev/core/src/com/google/gwt/dev/shell/rewrite/RewriteRefsToJsoClasses.java
+++ b/dev/core/src/com/google/gwt/dev/shell/rewrite/RewriteRefsToJsoClasses.java
@@ -54,7 +54,7 @@
     };
 
     public MyMethodAdapter(MethodVisitor mv) {
-      super(Opcodes.ASM5, mv);
+      super(Opcodes.ASM6, mv);
     }
 
     @Override
@@ -132,7 +132,7 @@
    */
   public RewriteRefsToJsoClasses(ClassVisitor cv, Set<String> jsoDescriptors,
       InstanceMethodOracle mapper) {
-    super(Opcodes.ASM5, cv);
+    super(Opcodes.ASM6, cv);
     this.jsoDescriptors = jsoDescriptors;
     this.mapper = mapper;
   }
diff --git a/dev/core/src/com/google/gwt/dev/shell/rewrite/RewriteSingleJsoImplDispatches.java b/dev/core/src/com/google/gwt/dev/shell/rewrite/RewriteSingleJsoImplDispatches.java
index 74b1c65..7246b55 100644
--- a/dev/core/src/com/google/gwt/dev/shell/rewrite/RewriteSingleJsoImplDispatches.java
+++ b/dev/core/src/com/google/gwt/dev/shell/rewrite/RewriteSingleJsoImplDispatches.java
@@ -57,7 +57,7 @@
 public class RewriteSingleJsoImplDispatches extends ClassVisitor {
   private class MyMethodVisitor extends MethodVisitor {
     public MyMethodVisitor(MethodVisitor mv) {
-      super(Opcodes.ASM5, mv);
+      super(Opcodes.ASM6, mv);
     }
 
     /*
@@ -133,7 +133,7 @@
 
   public RewriteSingleJsoImplDispatches(ClassVisitor v, TypeOracle typeOracle,
       SingleJsoImplData jsoData) {
-    super(Opcodes.ASM5, v);
+    super(Opcodes.ASM6, v);
     this.typeOracle = typeOracle;
     this.jsoData = jsoData;
   }
diff --git a/dev/core/src/com/google/gwt/dev/shell/rewrite/UseMirroredClasses.java b/dev/core/src/com/google/gwt/dev/shell/rewrite/UseMirroredClasses.java
index d54f1f6..70dba63 100644
--- a/dev/core/src/com/google/gwt/dev/shell/rewrite/UseMirroredClasses.java
+++ b/dev/core/src/com/google/gwt/dev/shell/rewrite/UseMirroredClasses.java
@@ -72,7 +72,7 @@
     private String className;
 
     protected MethodInterceptor(MethodVisitor mv, String className) {
-      super(Opcodes.ASM5, mv);
+      super(Opcodes.ASM6, mv);
       this.className = className;
     }
 
@@ -144,7 +144,7 @@
   private String className;
 
   public UseMirroredClasses(ClassVisitor cv, String className) {
-    super(Opcodes.ASM5, cv);
+    super(Opcodes.ASM6, cv);
     this.className = className;
   }
 
diff --git a/dev/core/src/com/google/gwt/dev/shell/rewrite/WriteJsoImpl.java b/dev/core/src/com/google/gwt/dev/shell/rewrite/WriteJsoImpl.java
index 5dcdbfd..d06602e 100644
--- a/dev/core/src/com/google/gwt/dev/shell/rewrite/WriteJsoImpl.java
+++ b/dev/core/src/com/google/gwt/dev/shell/rewrite/WriteJsoImpl.java
@@ -264,7 +264,7 @@
    * @param mapper maps methods to the class in which they are declared
    */
   private WriteJsoImpl(ClassVisitor cv, InstanceMethodOracle mapper) {
-    super(Opcodes.ASM5, cv);
+    super(Opcodes.ASM6, cv);
     this.mapper = mapper;
   }
 
diff --git a/user/build.xml b/user/build.xml
index 18ce227..4265082 100755
--- a/user/build.xml
+++ b/user/build.xml
@@ -65,7 +65,9 @@
     <pathelement location="${gwt.tools.lib}/cglib/cglib-3.1.jar"/>
     <pathelement location="${gwt.tools.lib}/mockito/1.9.5/mockito-all-1.9.5.jar"/>
     <pathelement location="${gwt.tools.lib}/objenesis/objenesis-1.2.jar"/>
-    <pathelement location="${gwt.tools.lib}/objectweb/asm-5.0.3/lib/asm-all-5.0.3.jar"/>
+    <pathelement location="${gwt.tools.lib}/objectweb/asm-6.0/asm-6.0.jar"/>
+    <pathelement location="${gwt.tools.lib}/objectweb/asm-6.0/asm-commons-6.0.jar"/>
+    <pathelement location="${gwt.tools.lib}/objectweb/asm-6.0/asm-util-6.0.jar"/>
     <pathelement location="${gwt.tools.lib}/javax/validation/validation-api-1.0.0.GA.jar"/>
     <pathelement location="${gwt.tools.lib}/javax/validation/validation-api-1.0.0.GA-sources.jar"/>
     <pathelement
diff --git a/user/src/com/google/web/bindery/requestfactory/server/RequestFactoryJarExtractor.java b/user/src/com/google/web/bindery/requestfactory/server/RequestFactoryJarExtractor.java
index 8ba540c..f5906e3 100644
--- a/user/src/com/google/web/bindery/requestfactory/server/RequestFactoryJarExtractor.java
+++ b/user/src/com/google/web/bindery/requestfactory/server/RequestFactoryJarExtractor.java
@@ -352,7 +352,7 @@
 
     public AnnotationProcessor(String sourceType, AnnotationVisitor av) {
       // TODO(rluble): should we chain av to super here?
-      super(Opcodes.ASM5);
+      super(Opcodes.ASM6);
       this.sourceType = sourceType;
       this.av = av;
     }
@@ -386,7 +386,7 @@
     private String sourceType;
 
     public ClassProcessor(String sourceType, ClassVisitor cv, State state) {
-      super(Opcodes.ASM5, cv);
+      super(Opcodes.ASM6, cv);
       this.sourceType = sourceType;
       this.state = state;
     }
@@ -519,7 +519,7 @@
 
     public FieldProcessor(String sourceType, FieldVisitor fv) {
       // TODO(rluble): Should we chain fv to super here?
-      super(Opcodes.ASM5);
+      super(Opcodes.ASM6);
       this.sourceType = sourceType;
       this.fv = fv;
     }
@@ -541,7 +541,7 @@
     private final String sourceType;
 
     public MethodProcessor(String sourceType, MethodVisitor mv) {
-      super(Opcodes.ASM5, mv);
+      super(Opcodes.ASM6, mv);
       this.sourceType = sourceType;
     }
 
@@ -630,7 +630,7 @@
    */
   private class NativeMethodDefanger extends ClassVisitor {
     public NativeMethodDefanger(ClassVisitor cv) {
-      super(Opcodes.ASM5, cv);
+      super(Opcodes.ASM6, cv);
     }
 
     @Override
