diff --git a/pom.xml b/pom.xml
index a69ae23..d5f7c10 100644
--- a/pom.xml
+++ b/pom.xml
@@ -112,7 +112,7 @@
     <dependency>
       <groupId>org.ow2.asm</groupId>
       <artifactId>asm</artifactId>
-      <version>6.0_ALPHA</version>
+      <version>6.0_BETA</version>
     </dependency>
     <dependency>
       <groupId>com.thoughtworks.qdox</groupId>
diff --git a/src/main/java/org/apache/maven/plugin/compiler/module/AsmModuleInfoParser.java b/src/main/java/org/apache/maven/plugin/compiler/module/AsmModuleInfoParser.java
index 577f84e..b51dfd6 100644
--- a/src/main/java/org/apache/maven/plugin/compiler/module/AsmModuleInfoParser.java
+++ b/src/main/java/org/apache/maven/plugin/compiler/module/AsmModuleInfoParser.java
@@ -30,6 +30,7 @@
 import org.codehaus.plexus.component.annotations.Component;
 import org.objectweb.asm.ClassReader;
 import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.ModuleVisitor;
 //import org.objectweb.asm.ModuleVisitor;
 import org.objectweb.asm.Opcodes;
 
@@ -63,22 +64,20 @@
             ClassReader reader = new ClassReader( in );
             reader.accept( new ClassVisitor( Opcodes.ASM6 )
             {
-//  REQUIRES ASM 6.0_ALPHA2
-                
-//                @Override
-//                public ModuleVisitor visitModule( String name, int arg1, String arg2 )
-//                {
-//                    wrapper.builder = JavaModuleDescriptor.newModule( name );
-//
-//                    return new ModuleVisitor( Opcodes.ASM6 )
-//                    {
-//                        @Override
-//                        public void visitRequire( String module, int access, String version )
-//                        {
-//                            wrapper.builder.requires( module );
-//                        }
-//                    };
-//                }
+                @Override
+                public ModuleVisitor visitModule( String name, int arg1, String arg2 )
+                {
+                    wrapper.builder = JavaModuleDescriptor.newModule( name );
+
+                    return new ModuleVisitor( Opcodes.ASM6 )
+                    {
+                        @Override
+                        public void visitRequire( String module, int access, String version )
+                        {
+                            wrapper.builder.requires( module );
+                        }
+                    };
+                }
             }, 0 );
 
             in.close();
