Update Asm to version 6.0 for Java 9 support.

Change-Id: Ibf9c5e0123d37b9b4a3fe2ef1e1c7a221b0d6ffd
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