Bug #513574: Entity not recognized on JDK9

Signed-off-by: Jan Supol <jan.supol@oracle.com>
Reviewed-by: Lukas
diff --git a/antbuild.xml b/antbuild.xml
index bb41259..d3c15ca 100644
--- a/antbuild.xml
+++ b/antbuild.xml
@@ -90,7 +90,6 @@
         It may require some configuration of the build.properties to run.
     -->
 <project name="trunk" default="build" basedir="." xmlns:jacoco="antlib:org.jacoco.ant" xmlns:sonar="antlib:org.sonar.ant">
-
     <dirname  property="trunk.build.location_temp" file="${ant.file.trunk}"/>
     <pathconvert targetos="unix" property="trunk.build.location">
         <path>
diff --git a/dbws/org.eclipse.persistence.dbws/.classpath b/dbws/org.eclipse.persistence.dbws/.classpath
index 661b579..e34a74d 100644
--- a/dbws/org.eclipse.persistence.dbws/.classpath
+++ b/dbws/org.eclipse.persistence.dbws/.classpath
@@ -3,9 +3,9 @@
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="src" path="resource"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
-	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar"/>
+	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/javax.ws.rs_2.0.1.v201504171603.jar"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.persistence.core"/>
 	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+</classpath>
\ No newline at end of file
diff --git a/dbws/org.eclipse.persistence.dbws/META-INF/MANIFEST.MF b/dbws/org.eclipse.persistence.dbws/META-INF/MANIFEST.MF
index 67ee5c5..13c6aac 100644
--- a/dbws/org.eclipse.persistence.dbws/META-INF/MANIFEST.MF
+++ b/dbws/org.eclipse.persistence.dbws/META-INF/MANIFEST.MF
@@ -26,7 +26,7 @@
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 HK2-Bundle-Name: org.eclipse.persistence:org.eclipse.persistence.dbws
 Require-Bundle: org.eclipse.persistence.core;bundle-version="2.7.0",
- org.eclipse.persistence.asm;bundle-version="5.1",
+ org.eclipse.persistence.asm;bundle-version="6.0",
  org.eclipse.persistence.jpa;bundle-version="2.7.0",
  org.eclipse.persistence.moxy;bundle-version="2.7.0"
 Bundle-Vendor: Eclipse.org - EclipseLink Project
diff --git a/dbws/org.eclipse.persistence.dbws/dbws.iml b/dbws/org.eclipse.persistence.dbws/dbws.iml
index 133e459..de391d5 100644
--- a/dbws/org.eclipse.persistence.dbws/dbws.iml
+++ b/dbws/org.eclipse.persistence.dbws/dbws.iml
@@ -36,11 +36,11 @@
     <orderEntry type="module-library">
       <library>
         <CLASSES>
-          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar!/" />
+          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar!/" />
         </CLASSES>
         <JAVADOC />
         <SOURCES>
-          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar!/" />
+          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar!/" />
         </SOURCES>
       </library>
     </orderEntry>
diff --git a/foundation/org.eclipse.persistence.core/.classpath b/foundation/org.eclipse.persistence.core/.classpath
index 3e8cc80..b19b736 100644
--- a/foundation/org.eclipse.persistence.core/.classpath
+++ b/foundation/org.eclipse.persistence.core/.classpath
@@ -9,7 +9,7 @@
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/javax.mail_1.4.0.v201005080615.jar"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/javax.resource_1.6.0.v201204270900.jar"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/javax.transaction_1.1.0.v201002051055.jar"/>
-	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar"/>
+	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+</classpath>
\ No newline at end of file
diff --git a/foundation/org.eclipse.persistence.core/META-INF/MANIFEST.MF b/foundation/org.eclipse.persistence.core/META-INF/MANIFEST.MF
index d463f65..f1a6b79 100644
--- a/foundation/org.eclipse.persistence.core/META-INF/MANIFEST.MF
+++ b/foundation/org.eclipse.persistence.core/META-INF/MANIFEST.MF
@@ -176,7 +176,7 @@
 HK2-Bundle-Name: org.eclipse.persistence:org.eclipse.persistence.core
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Require-Bundle: org.eclipse.persistence.antlr;bundle-version="3.5.2";resolution:=optional,
- org.eclipse.persistence.asm;bundle-version="5.1";resolution:=optional
+ org.eclipse.persistence.asm;bundle-version="6.0";resolution:=optional
 Bundle-SymbolicName: org.eclipse.persistence.core
 Eclipse-ExtensibleAPI: true
 Bundle-Name: EclipseLink Core
@@ -224,7 +224,7 @@
  javax.xml.xpath;resolution:=optional,
  org.eclipse.persistence.internal.libraries.antlr.runtime;resolution:=optional,
  org.eclipse.persistence.internal.libraries.antlr.runtime.tree;resolution:=optional,
- org.eclipse.persistence.internal.libraries.asm;version="[5.0.1,6.0)";resolution:=optional,
+ org.eclipse.persistence.internal.libraries.asm;version="[5.0.1,6.1)";resolution:=optional,
  org.eclipse.persistence.jpa.jpql;version="[2.1,3.0)";resolution:=optional,
  org.eclipse.persistence.jpa.jpql.parser;version="[2.1,3.0)";resolution:=optional,
  org.eclipse.persistence.jpa.jpql.utility;version="[2.1,3.0)";resolution:=optional,
diff --git a/foundation/org.eclipse.persistence.core/core.iml b/foundation/org.eclipse.persistence.core/core.iml
index dbb3608..d294441 100644
--- a/foundation/org.eclipse.persistence.core/core.iml
+++ b/foundation/org.eclipse.persistence.core/core.iml
@@ -8,8 +8,8 @@
     <varelement var="jar://$MODULE_DIR$/../../plugins/javax.mail_1.4.0.v201005080615.jar!/" value="MODULE_DIR/../../plugins/javax.mail_1.4.0.v201005080615.jar" />
     <varelement var="jar://$MODULE_DIR$/../../plugins/javax.resource_1.6.0.v201204270900.jar!/" value="MODULE_DIR/../../plugins/javax.resource_1.6.0.v201204270900.jar" />
     <varelement var="jar://$MODULE_DIR$/../../plugins/javax.transaction_1.1.0.v201002051055.jar!/" value="MODULE_DIR/../../plugins/javax.transaction_1.1.0.v201002051055.jar" />
-    <varelement var="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar!/" value="MODULE_DIR/../../plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar" />
-    <varelement var="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar!/" value="src:/MODULE_DIR/../../plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar" />
+    <varelement var="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar!/" value="MODULE_DIR/../../plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar" />
+    <varelement var="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar!/" value="src:/MODULE_DIR/../../plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar" />
     <src_description expected_position="0">
       <src_folder value="file://$MODULE_DIR$/src" expected_position="0" />
       <src_folder value="file://$MODULE_DIR$/resource" expected_position="1" />
@@ -90,11 +90,11 @@
     <orderEntry type="module-library">
       <library>
         <CLASSES>
-          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar!/" />
+          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar!/" />
         </CLASSES>
         <JAVADOC />
         <SOURCES>
-          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar!/" />
+          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar!/" />
         </SOURCES>
       </library>
     </orderEntry>
@@ -132,5 +132,4 @@
       </library>
     </orderEntry>
   </component>
-</module>
-
+</module>
\ No newline at end of file
diff --git a/jpa/eclipselink.jpa.test.jse/.classpath b/jpa/eclipselink.jpa.test.jse/.classpath
index 44eb604..7d58de3 100644
--- a/jpa/eclipselink.jpa.test.jse/.classpath
+++ b/jpa/eclipselink.jpa.test.jse/.classpath
@@ -10,6 +10,6 @@
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/javax.validation_1.1.0.v201304101302.jar"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/javax.transaction_1.1.0.v201002051055.jar" sourcepath="/ECLIPSELINK_HOME/plugins/javax.transaction/src"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.antlr_3.2.0.v201302191141.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.antlr.source_3.2.0.v201302191141.jar"/>
-	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar"/>
+	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar"/>
 	<classpathentry kind="output" path="classes"/>
-</classpath>
+</classpath>
\ No newline at end of file
diff --git a/jpa/eclipselink.jpars.test/.classpath b/jpa/eclipselink.jpars.test/.classpath
index a460602..3a75486 100644
--- a/jpa/eclipselink.jpars.test/.classpath
+++ b/jpa/eclipselink.jpars.test/.classpath
@@ -12,7 +12,7 @@
 	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/javax.ws.rs_2.0.1.v201504171603.jar"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/javax.ejb_3.1.0.v201205171433.jar" sourcepath="/ECLIPSELINK_HOME/plugins/javax.ejb/src"/>
-	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar"/>
+	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.antlr_3.2.0.v201302191141.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.antlr.source_3.2.0.v201302191141.jar"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
 		<attributes>
@@ -26,4 +26,4 @@
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.glassfish.hk2.locator_2.3.0.b10_201505192201.jar"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.glassfish.hk2.utils_2.3.0.b10_201505192201.jar"/>
 	<classpathentry kind="output" path="classes"/>
-</classpath>
+</classpath>
\ No newline at end of file
diff --git a/jpa/org.eclipse.persistence.jpa/.classpath b/jpa/org.eclipse.persistence.jpa/.classpath
index 2bcbeea..48ba33d 100644
--- a/jpa/org.eclipse.persistence.jpa/.classpath
+++ b/jpa/org.eclipse.persistence.jpa/.classpath
@@ -5,7 +5,7 @@
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/javax.transaction_1.1.0.v201002051055.jar"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/javax.validation_1.1.0.v201304101302.jar"/>
-	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar"/>
+	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+</classpath>
\ No newline at end of file
diff --git a/jpa/org.eclipse.persistence.jpa/META-INF/MANIFEST.MF b/jpa/org.eclipse.persistence.jpa/META-INF/MANIFEST.MF
index afff6af..5447e7a 100644
--- a/jpa/org.eclipse.persistence.jpa/META-INF/MANIFEST.MF
+++ b/jpa/org.eclipse.persistence.jpa/META-INF/MANIFEST.MF
@@ -41,7 +41,7 @@
 HK2-Bundle-Name: org.eclipse.persistence:org.eclipse.persistence.jpa
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Require-Bundle: org.eclipse.persistence.core;bundle-version="2.7.0";visibility:=reexport,
- org.eclipse.persistence.asm;bundle-version="5.1";resolution:=optional
+ org.eclipse.persistence.asm;bundle-version="6.0";resolution:=optional
 Bundle-Vendor: Eclipse.org - EclipseLink Project
 Bundle-Version: 2.7.0.qualifier
 Bundle-ManifestVersion: 2
@@ -83,8 +83,8 @@
  org.eclipse.persistence.internal.indirection;version="2.7.0",
  org.eclipse.persistence.internal.jpa.parsing;version="2.7.0",
  org.eclipse.persistence.internal.jpa.parsing.jpql;version="2.7.0",
- org.eclipse.persistence.internal.libraries.asm;version="[5.0.1,6.0)",
- org.eclipse.persistence.internal.libraries.asm.commons;version="[5.0.1,6.0)",
+ org.eclipse.persistence.internal.libraries.asm;version="[5.0.1,6.1)",
+ org.eclipse.persistence.internal.libraries.asm.commons;version="[5.0.1,6.1)",
  org.eclipse.persistence.internal.localization;version="2.7.0",
  org.eclipse.persistence.internal.mappings.converters;version="2.7.0",
  org.eclipse.persistence.internal.queries;version="2.7.0",
diff --git a/jpa/org.eclipse.persistence.jpa/jpa.iml b/jpa/org.eclipse.persistence.jpa/jpa.iml
index 9765e61..39d4bfa 100644
--- a/jpa/org.eclipse.persistence.jpa/jpa.iml
+++ b/jpa/org.eclipse.persistence.jpa/jpa.iml
@@ -3,8 +3,8 @@
   <component name="EclipseModuleManager">
     <varelement var="jar://$MODULE_DIR$/../../plugins/javax.transaction_1.1.0.v201002051055.jar!/" value="MODULE_DIR/../../plugins/javax.transaction_1.1.0.v201002051055.jar" />
     <varelement var="jar://$MODULE_DIR$/../../plugins/javax.validation_1.1.0.v201304101302.jar!/" value="MODULE_DIR/../../plugins/javax.validation_1.1.0.v201304101302.jar" />
-    <varelement var="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar!/" value="MODULE_DIR/../../plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar" />
-    <varelement var="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar!/" value="src:/MODULE_DIR/../../plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar" />
+    <varelement var="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar!/" value="MODULE_DIR/../../plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar" />
+    <varelement var="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar!/" value="src:/MODULE_DIR/../../plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar" />
     <src_description expected_position="0">
       <src_folder value="file://$MODULE_DIR$/src" expected_position="0" />
       <src_folder value="file://$MODULE_DIR$/resource" expected_position="1" />
@@ -55,11 +55,11 @@
     <orderEntry type="module-library">
       <library>
         <CLASSES>
-          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar!/" />
+          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar!/" />
         </CLASSES>
         <JAVADOC />
         <SOURCES>
-          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar!/" />
+          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar!/" />
         </SOURCES>
       </library>
     </orderEntry>
@@ -73,5 +73,4 @@
       </library>
     </orderEntry>
   </component>
-</module>
-
+</module>
\ No newline at end of file
diff --git a/moxy/eclipselink.moxy.test/.classpath b/moxy/eclipselink.moxy.test/.classpath
index 8c55a61..0171ded 100644
--- a/moxy/eclipselink.moxy.test/.classpath
+++ b/moxy/eclipselink.moxy.test/.classpath
@@ -17,7 +17,7 @@
 	<classpathentry kind="var" path="EXTENSION_LIB_EXTERNAL/pax-exam-junit4-3.0.0.M3.jar"/>
 	<classpathentry kind="var" path="EXTENSION_LIB_EXTERNAL/org.osgi.core-4.2.0.jar"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.glassfish.javax.json_1.0.4.v201311181159.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.glassfish.javax.json.source_1.0.4.v201311181159.jar"/>
-	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar"/>
+	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/jaxb-core_2.2.11.v201407311112.jar" sourcepath="/ECLIPSELINK_HOME/plugins/jaxb-core.source_2.2.11.v201407311112.jar"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/javax.validation_1.1.0.v201304101302.jar"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/jaxb-xjc_2.2.11.v201407311112.jar" sourcepath="/ECLIPSELINK_HOME/plugins/jaxb-xjc.source_2.2.11.v201407311112.jar"/>
@@ -25,4 +25,4 @@
 	<classpathentry kind="var" path="EXTENSION_LIB_EXTERNAL/jmockit-1.10.jar" sourcepath="/EXTENSION_LIB_EXTERNAL/jmockit-1.10-sources.jar"/>
 	<classpathentry kind="var" path="EXTENSION_LIB_EXTERNAL/hibernate-validator-5.1.0.Final.jar"/>
 	<classpathentry kind="output" path="classes"/>
-</classpath>
+</classpath>
\ No newline at end of file
diff --git a/moxy/eclipselink.moxy.test/antbuild.properties b/moxy/eclipselink.moxy.test/antbuild.properties
index 19dec79..5d9a8da 100644
--- a/moxy/eclipselink.moxy.test/antbuild.properties
+++ b/moxy/eclipselink.moxy.test/antbuild.properties
@@ -24,7 +24,7 @@
 ejb.jar=javax.ejb_3.1.0.v201205171433.jar
 jms.jar=javax.jms_1.1.0.v200906010428.jar
 transaction.jar=javax.transaction_1.1.0.v201002051055.jar
-asm.jar=org.eclipse.persistence.asm_5.1.0.v201605131250.jar
+asm.jar=org.eclipse.persistence.asm_6.0.0.v201702131300.jar
 
 eclipselink.core.depend=${resource.jar},${ejb.jar},${jms.jar},${transaction.jar},${mail.jar},${javax.validation.jar}
 
diff --git a/moxy/eclipselink.moxy.test/moxy.test.iml b/moxy/eclipselink.moxy.test/moxy.test.iml
index ddf0882..1b8b04d 100644
--- a/moxy/eclipselink.moxy.test/moxy.test.iml
+++ b/moxy/eclipselink.moxy.test/moxy.test.iml
@@ -7,8 +7,8 @@
     <varelement var="jar://$MODULE_DIR$/../../plugins/javax.xml.bind_2.2.0.v201105210648.jar!/" value="MODULE_DIR/../../plugins/javax.xml.bind_2.2.0.v201105210648.jar" />
     <varelement var="jar://$MODULE_DIR$/../../plugins/org.glassfish.javax.json_1.0.4.v201311181159.jar" value="MODULE_DIR/../../plugins/org.glassfish.javax.json_1.0.4.v201311181159.jar" />
     <varelement var="jar://$MODULE_DIR$/../../plugins/org.glassfish.javax.json.source_1.0.4.v201311181159.jar" value="src:/MODULE_DIR/../../plugins/org.glassfish.javax.json.source_1.0.4.v201311181159.jar" />
-    <varelement var="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar!/" value="MODULE_DIR/../../plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar" />
-    <varelement var="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar!/" value="src:/MODULE_DIR/../../plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar" />
+    <varelement var="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar!/" value="MODULE_DIR/../../plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar" />
+    <varelement var="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar!/" value="src:/MODULE_DIR/../../plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar" />
     <varelement var="jar://$MODULE_DIR$/../../plugins/jaxb-core_2.2.11.v201407311112.jar!/" value="MODULE_DIR/../../plugins/jaxb-core_2.2.11.v201407311112.jar" />
     <varelement var="jar://$MODULE_DIR$/../../plugins/jaxb-core.source_2.2.11.v201407311112.jar!/" value="src:/MODULE_DIR/../../plugins/jaxb-core.source_2.2.11.v201407311112.jar" />
     <varelement var="jar://$MODULE_DIR$/../../plugins/javax.validation_1.1.0.v201304101302.jar!/" value="MODULE_DIR/../../plugins/javax.validation_1.1.0.v201304101302.jar" />
@@ -93,11 +93,11 @@
     <orderEntry type="module-library">
       <library>
         <CLASSES>
-          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar!/" />
+          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar!/" />
         </CLASSES>
         <JAVADOC />
         <SOURCES>
-          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar!/" />
+          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar!/" />
         </SOURCES>
       </library>
     </orderEntry>
diff --git a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/osgi/OSGITestHelper.java b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/osgi/OSGITestHelper.java
index 0bf68c1..e84dd88 100644
--- a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/osgi/OSGITestHelper.java
+++ b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/osgi/OSGITestHelper.java
@@ -33,7 +33,7 @@
     private static final String RELEASE_VERSION = System.getProperty("release.version", "2.7.0");
     private static final String JAXB_API_JAR = System.getProperty("jaxb-api.jar", "javax.xml.bind_2.2.12.v201410011542.jar");
     private static final String JAXRS_JAR = System.getProperty("jaxrs.jar", "javax.ws.rs_1.1.1.v20101004-1200.jar");
-    private static final String ASM_JAR = System.getProperty("asm.jar", "org.eclipse.persistence.asm_5.1.0.v201605131250.jar");
+    private static final String ASM_JAR = System.getProperty("asm.jar", "org.eclipse.persistence.asm_6.0.0.v201702131300.jar");
     private static final String BEAN_VALIDATION_LIB = System.getProperty("javax.validation.lib", "javax.validation_1.1.0.v201304101302.jar");
 
     public static Option[] getDefaultOptions() {
@@ -78,4 +78,4 @@
                 junitBundles()
         );
     }
-}
+}
\ No newline at end of file
diff --git a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/osgi/OSGiBundleTest.java b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/osgi/OSGiBundleTest.java
index 0352269..db2a74a 100644
--- a/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/osgi/OSGiBundleTest.java
+++ b/moxy/eclipselink.moxy.test/src/org/eclipse/persistence/testing/osgi/OSGiBundleTest.java
@@ -56,7 +56,7 @@
     @Test
     public void testAsmVersion() {
         Class<?> c = loadClass("org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor");
-        assertClassLoadedByBundle(c, "org.eclipse.persistence.asm", "5.1.0.v201605131250");
+        assertClassLoadedByBundle(c, "org.eclipse.persistence.asm", "6.0.0.v201702131300");
     }
 
     @Test
diff --git a/moxy/org.eclipse.persistence.moxy/.classpath b/moxy/org.eclipse.persistence.moxy/.classpath
index 493092a..ba45d5f 100644
--- a/moxy/org.eclipse.persistence.moxy/.classpath
+++ b/moxy/org.eclipse.persistence.moxy/.classpath
@@ -4,10 +4,10 @@
 	<classpathentry kind="lib" path="resource"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/javax.ws.rs_2.0.1.v201504171603.jar"/>
-	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar"/>
+	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/javax.validation_1.1.0.v201304101302.jar"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/jaxb-core_2.2.11.v201407311112.jar" sourcepath="/ECLIPSELINK_HOME/plugins/jaxb-core.source_2.2.11.v201407311112.jar"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/jaxb-xjc_2.2.11.v201407311112.jar" sourcepath="/ECLIPSELINK_HOME/plugins/jaxb-xjc.source_2.2.11.v201407311112.jar"/>
 	<classpathentry kind="output" path="target/classes"/>
-</classpath>
+</classpath>
\ No newline at end of file
diff --git a/moxy/org.eclipse.persistence.moxy/META-INF/MANIFEST.MF b/moxy/org.eclipse.persistence.moxy/META-INF/MANIFEST.MF
index 08a7978..2bb23c8 100644
--- a/moxy/org.eclipse.persistence.moxy/META-INF/MANIFEST.MF
+++ b/moxy/org.eclipse.persistence.moxy/META-INF/MANIFEST.MF
@@ -16,7 +16,7 @@
 Created-By: 1.6.0_21 (Sun Microsystems Inc.)
 HK2-Bundle-Name: org.eclipse.persistence:org.eclipse.persistence.moxy
 Require-Bundle: org.eclipse.persistence.core;bundle-version="2.7.0";visibility:=reexport,
- org.eclipse.persistence.asm;bundle-version="5.1";resolution:=optional
+ org.eclipse.persistence.asm;bundle-version="6.0";resolution:=optional
 Bundle-Vendor: Eclipse.org - EclipseLink Project
 Bundle-Version: 2.7.0.qualifier
 Bundle-ManifestVersion: 2
@@ -63,7 +63,7 @@
  org.eclipse.persistence.internal.databaseaccess;version="2.7.0",
  org.eclipse.persistence.internal.descriptors;version="2.7.0",
  org.eclipse.persistence.internal.helper;version="2.7.0",
- org.eclipse.persistence.internal.libraries.asm;version="[5.0.1,6.0)";resolution:=optional,
+ org.eclipse.persistence.internal.libraries.asm;version="[5.0.1,6.1)";resolution:=optional,
  org.eclipse.persistence.internal.localization;version="2.7.0",
  org.eclipse.persistence.internal.oxm;version="2.7.0",
  org.eclipse.persistence.internal.oxm.record;version="2.7.0",
diff --git a/moxy/org.eclipse.persistence.moxy/moxy.iml b/moxy/org.eclipse.persistence.moxy/moxy.iml
index 8daf836..8a81116 100644
--- a/moxy/org.eclipse.persistence.moxy/moxy.iml
+++ b/moxy/org.eclipse.persistence.moxy/moxy.iml
@@ -3,8 +3,8 @@
   <component name="EclipseModuleManager">
     <libelement value="file://C:\eclipselink-runtime\moxy\org.eclipse.persistence.moxy\resource" />
     <varelement var="jar://$MODULE_DIR$/../../plugins/javax.ws.rs_2.0.1.v201504171603.jar!/" value="MODULE_DIR/../../plugins/javax.ws.rs_2.0.1.v201504171603.jar" />
-    <varelement var="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar!/" value="MODULE_DIR/../../plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar" />
-    <varelement var="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar!/" value="src:/MODULE_DIR/../../plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar" />
+    <varelement var="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar!/" value="MODULE_DIR/../../plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar" />
+    <varelement var="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar!/" value="src:/MODULE_DIR/../../plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar" />
     <src_description expected_position="0">
       <src_folder value="file://$MODULE_DIR$/src" expected_position="0" />
     </src_description>
@@ -41,11 +41,11 @@
     <orderEntry type="module-library">
       <library>
         <CLASSES>
-          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar!/" />
+          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar!/" />
         </CLASSES>
         <JAVADOC />
         <SOURCES>
-          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar!/" />
+          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar!/" />
         </SOURCES>
       </library>
     </orderEntry>
@@ -82,5 +82,4 @@
       </library>
     </orderEntry>
   </component>
-</module>
-
+</module>
\ No newline at end of file
diff --git a/performance/eclipselink.perf.test/.classpath b/performance/eclipselink.perf.test/.classpath
index 4411cf9..965612b 100644
--- a/performance/eclipselink.perf.test/.classpath
+++ b/performance/eclipselink.perf.test/.classpath
@@ -4,7 +4,7 @@
 	<classpathentry kind="src" path="resource"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
-	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar"/>
+	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar"/>
 	<classpathentry kind="var" path="EXTENSION_LIB_EXTERNAL/jmh-core-0.9.3.jar"/>
 	<classpathentry kind="var" path="EXTENSION_LIB_EXTERNAL/jmh-generator-annprocess-0.9.3.jar"/>
 	<classpathentry kind="var" path="EXTENSION_LIB_EXTERNAL/commons-math3-3.3.jar"/>
@@ -15,4 +15,4 @@
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.glassfish.javax.json_1.0.4.v201311181159.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.glassfish.javax.json.source_1.0.4.v201311181159.jar"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/javax.validation_1.1.0.v201304101302.jar"/>
 	<classpathentry kind="output" path="classes"/>
-</classpath>
+</classpath>
\ No newline at end of file
diff --git a/performance/eclipselink.perf.test/antbuild.properties b/performance/eclipselink.perf.test/antbuild.properties
index 1f07a07..a584dd2 100644
--- a/performance/eclipselink.perf.test/antbuild.properties
+++ b/performance/eclipselink.perf.test/antbuild.properties
@@ -14,7 +14,7 @@
 resource.dir=resource
 report.dir=reports
 
-asm.jar=org.eclipse.persistence.asm_5.1.0.v201605131250.jar
+asm.jar=org.eclipse.persistence.asm_6.0.0.v201702131300.jar
 persistence21.jar=javax.persistence_2.1.1.v201509150925.jar
 json.jar=org.glassfish.javax.json_1.0.4.v201311181159.jar
 jmh-core.jar=jmh-core-0.9.3.jar
@@ -33,4 +33,4 @@
 warmup.iterations=20
 run.iterations=20
 jmh.resultFile=jmh-result.csv
-jmh.resultFormat=csv
+jmh.resultFormat=csv
\ No newline at end of file
diff --git a/plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar b/plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar
deleted file mode 100644
index b447978..0000000
--- a/plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar b/plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar
new file mode 100644
index 0000000..dd42b25
--- /dev/null
+++ b/plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar
Binary files differ
diff --git a/plugins/org.eclipse.persistence.asm/META-INF/MANIFEST.MF b/plugins/org.eclipse.persistence.asm/META-INF/MANIFEST.MF
index 0bc6a57..fdfe7d1 100644
--- a/plugins/org.eclipse.persistence.asm/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.persistence.asm/META-INF/MANIFEST.MF
@@ -1,33 +1,33 @@
 Manifest-Version: 1.0
 Export-Package: org.eclipse.persistence.internal.libraries.asm.signatu
- re;version="5.1.0",org.eclipse.persistence.internal.libraries.asm.com
- mons;version="5.1.0";uses:="org.eclipse.persistence.internal.librarie
+ re;version="6.0.0",org.eclipse.persistence.internal.libraries.asm.com
+ mons;version="6.0.0";uses:="org.eclipse.persistence.internal.librarie
  s.asm,org.eclipse.persistence.internal.libraries.asm.tree,org.eclipse
  .persistence.internal.libraries.asm.signature",org.eclipse.persistenc
- e.internal.libraries.asm.util;version="5.1.0";uses:="org.eclipse.pers
+ e.internal.libraries.asm.util;version="6.0.0";uses:="org.eclipse.pers
  istence.internal.libraries.asm,org.eclipse.persistence.internal.libra
  ries.asm.tree.analysis,org.eclipse.persistence.internal.libraries.asm
  .tree,org.eclipse.persistence.internal.libraries.asm.signature",org.e
- clipse.persistence.internal.libraries.asm.tree.analysis;version="5.1.
+ clipse.persistence.internal.libraries.asm.tree.analysis;version="6.0.
  0";uses:="org.eclipse.persistence.internal.libraries.asm,org.eclipse.
  persistence.internal.libraries.asm.tree",org.eclipse.persistence.inte
- rnal.libraries.asm;version="5.1.0",org.eclipse.persistence.internal.l
- ibraries.asm.xml;version="5.1.0";uses:="org.xml.sax,org.eclipse.persi
+ rnal.libraries.asm;version="6.0.0",org.eclipse.persistence.internal.l
+ ibraries.asm.xml;version="6.0.0";uses:="org.xml.sax,org.eclipse.persi
  stence.internal.libraries.asm,org.xml.sax.helpers,org.xml.sax.ext,jav
  ax.xml.transform.sax,javax.xml.transform,javax.xml.transform.stream,o
  rg.eclipse.persistence.internal.libraries.asm.util",org.eclipse.persi
- stence.internal.libraries.asm.tree;version="5.1.0";uses:="org.eclipse
+ stence.internal.libraries.asm.tree;version="6.0.0";uses:="org.eclipse
  .persistence.internal.libraries.asm"
 Bundle-Name: EclipseLink ASM
-Created-By: 1.6.0_21 (Sun Microsystems Inc.)
+Created-By: 1.8.0_121 (Sun Microsystems Inc.)
 HK2-Bundle-Name: org.eclipse.persistence:org.eclipse.persistence.asm
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Implementation-Vendor: Eclipse.org - EclipseLink Project
 Bundle-Vendor: Eclipse.org - EclipseLink Project
-Bundle-Version: 5.1.0.v201605131250
+Bundle-Version: 6.0.0.v201702131300
 Bundle-ManifestVersion: 2
 Import-Package: javax.xml.transform;resolution:=optional,javax.xml.tra
  nsform.sax;resolution:=optional,javax.xml.transform.stream;resolution
  :=optional,org.xml.sax;resolution:=optional,org.xml.sax.ext;resolutio
  n:=optional,org.xml.sax.helpers;resolution:=optional
-Bundle-SymbolicName: org.eclipse.persistence.asm
+Bundle-SymbolicName: org.eclipse.persistence.asm
\ No newline at end of file
diff --git a/plugins/org.eclipse.persistence.asm/about.html b/plugins/org.eclipse.persistence.asm/about.html
index e66d6c1..6b03e88 100644
--- a/plugins/org.eclipse.persistence.asm/about.html
+++ b/plugins/org.eclipse.persistence.asm/about.html
@@ -3,10 +3,10 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About ASM 5.1.0</title>
+<title>About ASM 6.0.0.ALPHA</title>
 </head>
 <body lang="EN-US">
-<h1>ASM 5.1.0</h1>
+<h1>ASM 6.0.0.ALPHA</h1>
 
 <h2>License </h2>
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).
@@ -29,7 +29,7 @@
   out below. If you did not receive this Content directly from the Eclipse Foundation,
   the following is provided for informational purposes only, and you should look
   to the Redistributor&#8217;s license for terms and conditions of use.</p>
-<h3><a name="ASM" id="ASM"></a>ASM v5.1.0</h3>
+<h3><a name="ASM" id="ASM"></a>ASM v6.0.0.ALPHA</h3>
 <blockquote>
 
   <p>The EclipseLink Project includes ASM for the purpose of
diff --git a/plugins/org.eclipse.persistence.asm/antbuild.xml b/plugins/org.eclipse.persistence.asm/antbuild.xml
index 24f1503..5d84c5e 100644
--- a/plugins/org.eclipse.persistence.asm/antbuild.xml
+++ b/plugins/org.eclipse.persistence.asm/antbuild.xml
@@ -62,7 +62,7 @@
 
         <!-- Properties usually defined in build.properties, set here to avoid easy redefinition. -->
         <!-- Version properties -->
-        <property name="release.version"               value="5.1.0"/>
+        <property name="release.version"               value="6.0.0"/>
         <!-- Project infrastructure properties -->
         <property name="src.dir"                       value="src"/>
         <property name="asm.classes.dir"             value="${asm.build.location}"/> <!-- "." -->
@@ -102,7 +102,7 @@
         </tstamp>
         <property name="build.type"            value="SNAPSHOT"/>
         <property name="svn.revision"          value="NA"/>
-        <property name="version.qualifier"     value="v201605131250"/>
+        <property name="version.qualifier"     value="v201702131300"/>
         <property name="version.string"        value="${release.version}.${version.qualifier}"/>
         <property name="release.designation"   value="EclipseLink ${release.version} Build"/>
         <property name="specification.vendor"  value="Eclipse.org - EclipseLink Project"/>
diff --git a/plugins/org.eclipse.persistence.asm/readme.html b/plugins/org.eclipse.persistence.asm/readme.html
index 618c5eb..3af7104 100644
--- a/plugins/org.eclipse.persistence.asm/readme.html
+++ b/plugins/org.eclipse.persistence.asm/readme.html
@@ -3,11 +3,11 @@
 <HTML xmlns="http://www.w3.org/1999/xhtml">
 <HEAD>
 <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<TITLE>ASM 5.1.0 Readme</TITLE>
+<TITLE>ASM 6.0.0.ALPHA Readme</TITLE>
 </HEAD>
 <BODY>
 <DIV class=Section0>
-<P style="TEXT-ALIGN: center" align=center><B>ASM 5.1.0 Read Me</B> </P>
+<P style="TEXT-ALIGN: center" align=center><B>ASM 6.0.0.ALPHA Read Me</B> </P>
 <P>The <A href="http://www.eclipse.org/eclipselink">EclipseLink</A> project
     includes ASM for the purpose of byte code weaving. The ASM library is
     re-packaged within the source of the
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/AnnotationVisitor.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/AnnotationVisitor.java
index fbd42a6..1596a01 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/AnnotationVisitor.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/AnnotationVisitor.java
@@ -41,7 +41,7 @@
 
     /**
      * The ASM API version implemented by this visitor. The value of this field
-     * must be one of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     * must be one of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      */
     protected final int api;
 
@@ -56,7 +56,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      */
     public AnnotationVisitor(final int api) {
         this(api, null);
@@ -67,13 +67,13 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      * @param av
      *            the annotation visitor to which this visitor must delegate
      *            method calls. May be null.
      */
     public AnnotationVisitor(final int api, final AnnotationVisitor av) {
-        if (api != Opcodes.ASM4 && api != Opcodes.ASM5) {
+        if (api < Opcodes.ASM4 || api > Opcodes.ASM6) {
             throw new IllegalArgumentException();
         }
         this.api = api;
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/AnnotationWriter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/AnnotationWriter.java
index 892d7ad..99c89a4 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/AnnotationWriter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/AnnotationWriter.java
@@ -104,7 +104,7 @@
      */
     AnnotationWriter(final ClassWriter cw, final boolean named,
             final ByteVector bv, final ByteVector parent, final int offset) {
-        super(Opcodes.ASM5);
+        super(Opcodes.ASM6);
         this.cw = cw;
         this.named = named;
         this.bv = bv;
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/ClassReader.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/ClassReader.java
index a0a4e09..d5b491f 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/ClassReader.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/ClassReader.java
@@ -42,7 +42,6 @@
  * @author Eugene Kuleshov
  */
 public class ClassReader {
-
     /**
      * True to enable signatures support.
      */
@@ -166,7 +165,7 @@
     public ClassReader(final byte[] b, final int off, final int len) {
         this.b = b;
         // checks the class version
-        if (readShort(off + 6) > Opcodes.V1_8) {
+        if (readShort(off + 6) > Opcodes.V1_9) {
             throw new IllegalArgumentException();
         }
         // parses the constant pool
@@ -560,6 +559,7 @@
         int tanns = 0;
         int itanns = 0;
         int innerClasses = 0;
+        int module = 0;
         Attribute attributes = null;
 
         u = getAttributes();
@@ -600,6 +600,8 @@
             } else if (ANNOTATIONS
                     && "RuntimeInvisibleTypeAnnotations".equals(attrName)) {
                 itanns = u + 8;
+            } else if ("Module".equals(attrName)) {
+                module = u + 8;
             } else if ("BootstrapMethods".equals(attrName)) {
                 int[] bootstrapMethods = new int[readUnsignedShort(u + 8)];
                 for (int j = 0, v = u + 10; j < bootstrapMethods.length; j++) {
@@ -628,6 +630,11 @@
             classVisitor.visitSource(sourceFile, sourceDebug);
         }
 
+        // visits the module info
+        if (module != 0) {
+            readModule(classVisitor, context, module);
+        }
+        
         // visits the outer class
         if (enclosingOwner != null) {
             classVisitor.visitOuterClass(enclosingOwner, enclosingName,
@@ -698,6 +705,72 @@
     }
 
     /**
+     * Reads the module attribute and visit it.
+     * 
+     * @param classVisitor
+     *           the current class visitor
+     * @param context
+     *           information about the class being parsed.
+     * @param moduleOffset
+     *           the start offset of the module attribute in the class file.
+     * @return
+     */
+    private void readModule(final ClassVisitor classVisitor,
+            final Context context, int u) {
+        ModuleVisitor mv = classVisitor.visitModule();
+        if (mv == null) {
+            return;
+        }
+        char[] buffer = context.buffer;
+        
+        // reads requires
+        u += 2;
+        for (int i = readUnsignedShort(u - 2); i > 0; --i) {
+            //FIXME emulate ACC_PUBLIC wrong value (0x0020)
+            String module = readUTF8(u, buffer);
+            int access = readUnsignedShort(u + 2);
+            if ((access & 0x0020) != 0) {
+                access = access & ~ 0x0020 | Opcodes.ACC_PUBLIC;
+            }
+            mv.visitRequire(module, access);
+            u += 4;
+        }
+        
+        // reads exports
+        u += 2;
+        for (int i = readUnsignedShort(u - 2); i > 0; --i) {
+            String export = readUTF8(u, buffer);
+            int exportToCount = readUnsignedShort(u + 2);
+            u += 4;
+            String[] tos = null;
+            if (exportToCount != 0) {
+                tos = new String[exportToCount];
+                for (int j = 0; j < tos.length; ++j) {
+                    tos[j] = readUTF8(u, buffer);
+                    u += 2;
+                }
+            }
+            mv.visitExport(export, tos);
+        }
+        
+        // read uses
+        u += 2;
+        for (int i = readUnsignedShort(u - 2); i > 0; --i) {
+            mv.visitUse(readClass(u, buffer));
+            u += 2;
+        }
+        
+        // read provides
+        u += 2;
+        for (int i = readUnsignedShort(u - 2); i > 0; --i) {
+            mv.visitProvide(readClass(u, buffer), readClass(u + 2, buffer));
+            u += 4;
+        }
+        
+        mv.visitEnd();
+    }
+    
+    /**
      * Reads a field and makes the given visitor visit it.
      * 
      * @param classVisitor
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/ClassVisitor.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/ClassVisitor.java
index 7380ad3..ebb0dfe 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/ClassVisitor.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/ClassVisitor.java
@@ -43,7 +43,7 @@
 
     /**
      * The ASM API version implemented by this visitor. The value of this field
-     * must be one of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     * must be one of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      */
     protected final int api;
 
@@ -58,7 +58,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      */
     public ClassVisitor(final int api) {
         this(api, null);
@@ -69,13 +69,13 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      * @param cv
      *            the class visitor to which this visitor must delegate method
      *            calls. May be null.
      */
     public ClassVisitor(final int api, final ClassVisitor cv) {
-        if (api != Opcodes.ASM4 && api != Opcodes.ASM5) {
+        if (api < Opcodes.ASM4 || api > Opcodes.ASM6) {
             throw new IllegalArgumentException();
         }
         this.api = api;
@@ -130,6 +130,21 @@
             cv.visitSource(source, debug);
         }
     }
+    
+    /**
+     * Visit the module corresponding to the class.
+     * @return a visitor to visit the module values, or <tt>null</tt> if
+     *         this visitor is not interested in visiting this module.
+     */
+    public ModuleVisitor visitModule() {
+        if (api < Opcodes.ASM6) {
+            throw new RuntimeException();
+        }
+        if (cv != null) {
+            return cv.visitModule();
+        }
+        return null;
+    }
 
     /**
      * Visits the enclosing class of the class. This method must be called only
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/ClassWriter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/ClassWriter.java
index 307dd5f..5c55a58 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/ClassWriter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/ClassWriter.java
@@ -395,6 +395,11 @@
     private ByteVector sourceDebug;
 
     /**
+     * The module attribute of this class.
+     */
+    private ModuleWriter moduleWriter;
+    
+    /**
      * The constant pool item that contains the name of the enclosing class of
      * this class.
      */
@@ -605,7 +610,7 @@
      *            {@link #COMPUTE_FRAMES}.
      */
     public ClassWriter(final int flags) {
-        super(Opcodes.ASM5);
+        super(Opcodes.ASM6);
         index = 1;
         pool = new ByteVector();
         items = new Item[256];
@@ -645,9 +650,9 @@
      * @param flags
      *            option flags that can be used to modify the default behavior
      *            of this class. <i>These option flags do not affect methods
-     *            that are copied as is in the new class. This means that the
-     *            maximum stack size nor the stack frames will be computed for
-     *            these methods</i>. See {@link #COMPUTE_MAXS},
+     *            that are copied as is in the new class. This means that
+     *            neither the maximum stack size nor the stack frames will be
+     *            computed for these methods</i>. See {@link #COMPUTE_MAXS},
      *            {@link #COMPUTE_FRAMES}.
      */
     public ClassWriter(final ClassReader classReader, final int flags) {
@@ -693,6 +698,11 @@
     }
 
     @Override
+    public final ModuleVisitor visitModule() {
+        return moduleWriter = new ModuleWriter(this); 
+    }
+    
+    @Override
     public final void visitOuterClass(final String owner, final String name,
             final String desc) {
         enclosingMethodOwner = newClass(owner);
@@ -893,6 +903,11 @@
             size += 8 + itanns.getSize();
             newUTF8("RuntimeInvisibleTypeAnnotations");
         }
+        if (moduleWriter != null) {
+            ++attributeCount;
+            size += 6 + moduleWriter.getSize();
+            newUTF8("Module");
+        }
         if (attrs != null) {
             attributeCount += attrs.getCount();
             size += attrs.getSize(this, null, 0, -1, -1);
@@ -940,6 +955,10 @@
             out.putShort(newUTF8("SourceDebugExtension")).putInt(len);
             out.putByteArray(sourceDebug.data, 0, len);
         }
+        if (moduleWriter != null) {
+            out.putShort(newUTF8("Module"));
+            moduleWriter.put(out);
+        }
         if (enclosingMethodOwner != 0) {
             out.putShort(newUTF8("EnclosingMethod")).putInt(4);
             out.putShort(enclosingMethodOwner).putShort(enclosingMethod);
@@ -981,6 +1000,7 @@
             anns = null;
             ianns = null;
             attrs = null;
+            moduleWriter = null;
             innerClassesCount = 0;
             innerClasses = null;
             bootstrapMethodsCount = 0;
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/FieldVisitor.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/FieldVisitor.java
index 079f71c..cf01042 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/FieldVisitor.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/FieldVisitor.java
@@ -40,7 +40,7 @@
 
     /**
      * The ASM API version implemented by this visitor. The value of this field
-     * must be one of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     * must be one of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      */
     protected final int api;
 
@@ -55,7 +55,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      */
     public FieldVisitor(final int api) {
         this(api, null);
@@ -66,13 +66,13 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      * @param fv
      *            the field visitor to which this visitor must delegate method
      *            calls. May be null.
      */
     public FieldVisitor(final int api, final FieldVisitor fv) {
-        if (api != Opcodes.ASM4 && api != Opcodes.ASM5) {
+        if (api < Opcodes.ASM4 || api > Opcodes.ASM6) {
             throw new IllegalArgumentException();
         }
         this.api = api;
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/FieldWriter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/FieldWriter.java
index 5f5111e..45befeb 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/FieldWriter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/FieldWriter.java
@@ -118,7 +118,7 @@
      */
     FieldWriter(final ClassWriter cw, final int access, final String name,
             final String desc, final String signature, final Object value) {
-        super(Opcodes.ASM5);
+        super(Opcodes.ASM6);
         if (cw.firstField == null) {
             cw.firstField = this;
         } else {
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/Label.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/Label.java
index 7bc54e2..44eddc8 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/Label.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/Label.java
@@ -29,8 +29,6 @@
  */
 package org.eclipse.persistence.internal.libraries.asm;
 
-import org.eclipse.persistence.internal.libraries.asm.tree.MethodNode;
-
 /**
  * A label represents a position in the bytecode of a method. Labels are used
  * for jump, goto, and switch instructions, and for try catch blocks. A label
@@ -113,7 +111,7 @@
      * Field used to associate user information to a label. Warning: this field
      * is used by the ASM tree package. In order to use it with the ASM tree
      * package you must override the
-     * {@link MethodNode#getLabelNode} method.
+     * {@link org.eclipse.persistence.internal.libraries.asm.tree.MethodNode#getLabelNode} method.
      */
     public Object info;
 
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/MethodVisitor.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/MethodVisitor.java
index 820a7b3..8eca3d8 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/MethodVisitor.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/MethodVisitor.java
@@ -57,7 +57,7 @@
 
     /**
      * The ASM API version implemented by this visitor. The value of this field
-     * must be one of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     * must be one of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      */
     protected final int api;
 
@@ -72,7 +72,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      */
     public MethodVisitor(final int api) {
         this(api, null);
@@ -83,13 +83,13 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      * @param mv
      *            the method visitor to which this visitor must delegate method
      *            calls. May be null.
      */
     public MethodVisitor(final int api, final MethodVisitor mv) {
-        if (api != Opcodes.ASM4 && api != Opcodes.ASM5) {
+        if (api < Opcodes.ASM4 || api > Opcodes.ASM6) {
             throw new IllegalArgumentException();
         }
         this.api = api;
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/MethodWriter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/MethodWriter.java
index 70b2a82..93d9543 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/MethodWriter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/MethodWriter.java
@@ -453,7 +453,7 @@
             final String desc, final String signature,
             final String[] exceptions, final boolean computeMaxs,
             final boolean computeFrames) {
-        super(Opcodes.ASM5);
+        super(Opcodes.ASM6);
         if (cw.firstMethod == null) {
             cw.firstMethod = this;
         } else {
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/ModuleVisitor.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/ModuleVisitor.java
new file mode 100644
index 0000000..60aa89c
--- /dev/null
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/ModuleVisitor.java
@@ -0,0 +1,133 @@
+/***
+ * ASM: a very small and fast Java bytecode manipulation framework
+ * Copyright (c) 2000-2011 INRIA, France Telecom
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holders nor the names of its
+ *    contributors may be used to endorse or promote products derived from
+ *    this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.eclipse.persistence.internal.libraries.asm;
+
+/**
+ * A visitor to visit a Java module. The methods of this class must be called in
+ * the following order: ( <tt>visitRequire</tt> | <tt>visitExport</tt> |
+ * <tt>visitUse</tt> | <tt>visitProvide</tt> )* <tt>visitEnd</tt>.
+ * 
+ * @author Remi Forax
+ */
+public abstract class ModuleVisitor {
+    /**
+     * The ASM API version implemented by this visitor. The value of this field
+     * must be {@link Opcodes#ASM6}.
+     */
+    protected final int api;
+    
+    /**
+     * The module visitor to which this visitor must delegate method calls. May
+     * be null.
+     */
+    protected ModuleVisitor mv;
+    
+    
+    public ModuleVisitor(final int api) {
+        this(api, null);
+    }
+
+    /**
+     * Constructs a new {@link MethodVisitor}.
+     * 
+     * @param api
+     *            the ASM API version implemented by this visitor. Must be {@link Opcodes#ASM6}.
+     * @param mv
+     *            the method visitor to which this visitor must delegate method
+     *            calls. May be null.
+     */
+    public ModuleVisitor(final int api, final ModuleVisitor mv) {
+        if (api != Opcodes.ASM6) {
+            throw new IllegalArgumentException();
+        }
+        this.api = api;
+        this.mv = mv;
+    }
+    
+    /**
+     * Visits a dependence of the current module.
+     * 
+     * @param module the module name of the dependence
+     * @param access the access flag of the dependence among
+     *        ACC_PUBLIC, ACC_SYNTHETIC and ACC_MANDATED.
+     */
+    public void visitRequire(String module, int access) {
+        if (mv != null) {
+            mv.visitRequire(module, access);
+        }
+    }
+    
+    /**
+     * Visit an exported package of the current module.
+     * 
+     * @param packaze the name of the exported package.
+     * @param modules names of the modules that can access to
+     *        the public classes of the exported package or
+     *        <tt>null</tt>.
+     */
+    public void visitExport(String packaze, String... modules) {
+        if (mv != null) {
+            mv.visitExport(packaze, modules);
+        }
+    }
+    
+    /**
+     * Visit a service used by the current module.
+     * The name must be the name of an interface or an
+     * abstract class.
+     * 
+     * @param service the internal name of the service.
+     */
+    public void visitUse(String service) {
+        if (mv != null) {
+            mv.visitUse(service);
+        }
+    }
+    
+    /**
+     * Visit an implementation of a service.
+     * 
+     * @param service the internal name of the service
+     * @param impl the internal name of the implementation
+     *        of the service
+     */
+    public void visitProvide(String service, String impl) {
+        if (mv != null) {
+            mv.visitProvide(service, impl);
+        }
+    }
+    
+    public void visitEnd() {
+        if (mv != null) {
+            mv.visitEnd();
+        }
+    }
+}
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/ModuleWriter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/ModuleWriter.java
new file mode 100644
index 0000000..e7f9dab
--- /dev/null
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/ModuleWriter.java
@@ -0,0 +1,178 @@
+/***
+ * ASM: a very small and fast Java bytecode manipulation framework
+ * Copyright (c) 2000-2011 INRIA, France Telecom
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holders nor the names of its
+ *    contributors may be used to endorse or promote products derived from
+ *    this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.eclipse.persistence.internal.libraries.asm;
+
+/**
+ * @author Remi Forax
+ */
+final class ModuleWriter extends ModuleVisitor {
+    /**
+     * The class writer to which this Module attribute must be added.
+     */
+    private final ClassWriter cw;
+    
+    /**
+     * size in byte of the corresponding Module attribute.
+     */
+    private int size;
+    
+    /**
+     * number of requires items
+     */
+    private int requireCount;
+    
+    /**
+     * The requires items in bytecode form. This byte vector only contains
+     * the items themselves, the number of items is store in requireCount
+     */
+    private ByteVector requires;
+    
+    /**
+     * number of exports items
+     */
+    private int exportCount;
+    
+    /**
+     * The exports items in bytecode form. This byte vector only contains
+     * the items themselves, the number of items is store in exportCount
+     */
+    private ByteVector exports;
+    
+    /**
+     * number of uses items
+     */
+    private int useCount;
+    
+    /**
+     * The uses items in bytecode form. This byte vector only contains
+     * the items themselves, the number of items is store in useCount
+     */
+    private ByteVector uses;
+    
+    /**
+     * number of provides items
+     */
+    private int provideCount;
+    
+    /**
+     * The uses provides in bytecode form. This byte vector only contains
+     * the items themselves, the number of items is store in provideCount
+     */
+    private ByteVector provides;
+    
+    ModuleWriter(final ClassWriter cw) {
+        super(Opcodes.ASM6);
+        this.cw = cw;
+        this.size = 8;
+    }
+    
+    @Override
+    public void visitRequire(String module, int access) {
+        if (requires == null) {
+            requires = new ByteVector();
+        }
+        //FIXME fix bad ACC_PUBLIC value (0x0020)
+        if ((access & Opcodes.ACC_PUBLIC) != 0) {
+            access = access & ~ Opcodes.ACC_PUBLIC | 0x0020;
+        }
+        requires.putShort(cw.newUTF8(module)).putShort(access);
+        requireCount++;
+        size += 4;
+    }
+    
+    @Override
+    public void visitExport(String packaze, String... modules) {
+        if (exports == null) {
+            exports = new ByteVector();
+        }
+        exports.putShort(cw.newUTF8(packaze));
+        if (modules == null) {
+            exports.putShort(0);
+            size += 4;
+        } else {
+            exports.putShort(modules.length);
+            for(String to: modules) {
+                exports.putShort(cw.newUTF8(to));
+            }    
+            size += 4 + 2 * modules.length; 
+        }
+        exportCount++;
+    }
+    
+    @Override
+    public void visitUse(String service) {
+        if (uses == null) {
+            uses = new ByteVector();
+        }
+        uses.putShort(cw.newClass(service));
+        useCount++;
+        size += 2;
+    }
+    
+    @Override
+    public void visitProvide(String service, String impl) {
+        if (provides == null) {
+            provides = new ByteVector();
+        }
+        provides.putShort(cw.newClass(service)).putShort(cw.newClass(impl));
+        provideCount++;
+        size += 4;
+    }
+    
+    @Override
+    public void visitEnd() {
+        // empty
+    }
+
+    int getSize() {
+        return size;
+    }
+
+    void put(ByteVector out) {
+        out.putInt(size);
+        out.putShort(requireCount);
+        if (requires != null) {
+            out.putByteArray(requires.data, 0, requires.length);
+        }
+        out.putShort(exportCount);
+        if (exports != null) {
+            out.putByteArray(exports.data, 0, exports.length);
+        }
+        out.putShort(useCount);
+        if (uses != null) {
+            out.putByteArray(uses.data, 0, uses.length);
+        }
+        out.putShort(provideCount);
+        if (provides != null) {
+            out.putByteArray(provides.data, 0, provides.length);
+        }
+    }
+}
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/Opcodes.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/Opcodes.java
index ce72474..e61eade 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/Opcodes.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/Opcodes.java
@@ -47,6 +47,7 @@
 
     int ASM4 = 4 << 16 | 0 << 8 | 0;
     int ASM5 = 5 << 16 | 0 << 8 | 0;
+    int ASM6 = 6 << 16 | 0 << 8 | 0;
 
     // versions
 
@@ -58,6 +59,7 @@
     int V1_6 = 0 << 16 | 50;
     int V1_7 = 0 << 16 | 51;
     int V1_8 = 0 << 16 | 52;
+    int V1_9 = 0 << 16 | 53;
 
     // access flags
 
@@ -80,6 +82,7 @@
     int ACC_ANNOTATION = 0x2000; // class
     int ACC_ENUM = 0x4000; // class(?) field inner
     int ACC_MANDATED = 0x8000; // parameter
+    int ACC_MODULE = 0x8000; // class
 
     // ASM specific pseudo access flags
 
@@ -146,13 +149,17 @@
      */
     int F_SAME1 = 4;
 
-    Integer TOP = new Integer(0);
-    Integer INTEGER = new Integer(1);
-    Integer FLOAT = new Integer(2);
-    Integer DOUBLE = new Integer(3);
-    Integer LONG = new Integer(4);
-    Integer NULL = new Integer(5);
-    Integer UNINITIALIZED_THIS = new Integer(6);
+    // Do not try to change the following code to use auto-boxing,
+    // these values are compared by reference and not by value
+    // The constructor of Integer was deprecated in 9
+    // but we are stuck with it by backward compatibility
+    @SuppressWarnings("deprecation") Integer TOP = new Integer(0);
+    @SuppressWarnings("deprecation") Integer INTEGER = new Integer(1);
+    @SuppressWarnings("deprecation") Integer FLOAT = new Integer(2);
+    @SuppressWarnings("deprecation") Integer DOUBLE = new Integer(3);
+    @SuppressWarnings("deprecation") Integer LONG = new Integer(4);
+    @SuppressWarnings("deprecation") Integer NULL = new Integer(5);
+    @SuppressWarnings("deprecation") Integer UNINITIALIZED_THIS = new Integer(6);
 
     // opcodes // visit method (- = idem)
 
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/Type.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/Type.java
index 1c6e855..4690212 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/Type.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/Type.java
@@ -377,7 +377,16 @@
      */
     public static Type getReturnType(final String methodDescriptor) {
         char[] buf = methodDescriptor.toCharArray();
-        return getType(buf, methodDescriptor.indexOf(')') + 1);
+        int off = 1;
+        while (true) {
+            char car = buf[off++];
+            if (car == ')') {
+                return getType(buf, off);
+            } else if (car == 'L') {
+                while (buf[off++] != ';') {
+                }
+            }
+        }
     }
 
     /**
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/attrs/package.html b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/attrs/package.html
deleted file mode 100644
index 28d827d..0000000
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/attrs/package.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<html>
-<!--
- * ASM: a very small and fast Java bytecode manipulation framework
- * Copyright (c) 2000-2011 INRIA, France Telecom
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the copyright holders nor the names of its
- *    contributors may be used to endorse or promote products derived from
- *    this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
--->
-<body>
-Provides an implementation for optional class, field and method attributes.
-
-<p>
-
-By default ASM strips optional attributes, in order to keep them in
-the bytecode that is being readed you should pass an array of required attribute
-instances to {@link org.objectweb.asm.ClassReader#accept(org.objectweb.asm.ClassVisitor, org.objectweb.asm.Attribute[], boolean) ClassReader.accept()} method.
-In order to add custom attributes to the manually constructed bytecode concrete
-subclasses of the {@link org.objectweb.asm.Attribute Attribute} can be passed to
-the visitAttribute methods of the
-{@link org.objectweb.asm.ClassVisitor ClassVisitor},
-{@link org.objectweb.asm.FieldVisitor FieldVisitor} and
-{@link org.objectweb.asm.MethodVisitor MethodVisitor} interfaces.
-
-@since ASM 1.4.1
-</body>
-</html>
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/AdviceAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/AdviceAdapter.java
index c1d731d..0c721aa 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/AdviceAdapter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/AdviceAdapter.java
@@ -41,7 +41,7 @@
 import org.eclipse.persistence.internal.libraries.asm.Type;
 
 /**
- * A {@link MethodVisitor} to insert before, after and around
+ * A {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor} to insert before, after and around
  * advices in methods and constructors.
  * <p>
  * The behavior for constructors is like this:
@@ -83,7 +83,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      * @param mv
      *            the method visitor to which this adapter delegates calls.
      * @param access
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/AnalyzerAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/AnalyzerAdapter.java
index 1ccbb7a..f7b2139 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/AnalyzerAdapter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/AnalyzerAdapter.java
@@ -34,18 +34,17 @@
 import java.util.List;
 import java.util.Map;
 
-import org.eclipse.persistence.internal.libraries.asm.ClassReader;
 import org.eclipse.persistence.internal.libraries.asm.Handle;
-import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.Label;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.Type;
 
 /**
  * A {@link MethodVisitor} that keeps track of stack map frame changes between
  * {@link #visitFrame(int, int, Object[], int, Object[]) visitFrame} calls. This
  * adapter must be used with the
- * {@link ClassReader#EXPAND_FRAMES} option. Each
+ * {@link org.eclipse.persistence.internal.libraries.asm.ClassReader#EXPAND_FRAMES} option. Each
  * visit<i>X</i> instruction delegates to the next visitor in the chain, if any,
  * and then simulates the effect of this instruction on the stack map frame,
  * represented by {@link #locals} and {@link #stack}. The next visitor in the
@@ -142,7 +141,7 @@
      */
     public AnalyzerAdapter(final String owner, final int access,
             final String name, final String desc, final MethodVisitor mv) {
-        this(Opcodes.ASM5, owner, access, name, desc, mv);
+        this(Opcodes.ASM6, owner, access, name, desc, mv);
         if (getClass() != AnalyzerAdapter.class) {
             throw new IllegalStateException();
         }
@@ -153,7 +152,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      * @param owner
      *            the owner's class name.
      * @param access
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/AnnotationRemapper.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/AnnotationRemapper.java
index 5f08258..7c0afc4 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/AnnotationRemapper.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/AnnotationRemapper.java
@@ -44,7 +44,7 @@
 
     public AnnotationRemapper(final AnnotationVisitor av,
             final Remapper remapper) {
-        this(Opcodes.ASM5, av, remapper);
+        this(Opcodes.ASM6, av, remapper);
     }
 
     protected AnnotationRemapper(final int api, final AnnotationVisitor av,
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/ClassRemapper.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/ClassRemapper.java
index 403a4b6..d175a7d 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/ClassRemapper.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/ClassRemapper.java
@@ -32,10 +32,11 @@
 
 import org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor;
 import org.eclipse.persistence.internal.libraries.asm.ClassVisitor;
-import org.eclipse.persistence.internal.libraries.asm.Opcodes;
-import org.eclipse.persistence.internal.libraries.asm.TypePath;
 import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
+import org.eclipse.persistence.internal.libraries.asm.ModuleVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
+import org.eclipse.persistence.internal.libraries.asm.TypePath;
 
 /**
  * A {@link ClassVisitor} for type remapping.
@@ -49,7 +50,7 @@
     protected String className;
 
     public ClassRemapper(final ClassVisitor cv, final Remapper remapper) {
-        this(Opcodes.ASM5, cv, remapper);
+        this(Opcodes.ASM6, cv, remapper);
     }
 
     protected ClassRemapper(final int api, final ClassVisitor cv,
@@ -68,6 +69,12 @@
     }
 
     @Override
+    public ModuleVisitor visitModule() {
+        ModuleVisitor mv = super.visitModule();
+        return mv == null ? null: createModuleRemapper(mv); 
+    }
+    
+    @Override
     public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
         AnnotationVisitor av = super.visitAnnotation(remapper.mapDesc(desc),
                 visible);
@@ -76,7 +83,7 @@
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(int typeRef,
-                                                 TypePath typePath, String desc, boolean visible) {
+            TypePath typePath, String desc, boolean visible) {
         AnnotationVisitor av = super.visitTypeAnnotation(typeRef, typePath,
                 remapper.mapDesc(desc), visible);
         return av == null ? null : createAnnotationRemapper(av);
@@ -129,4 +136,8 @@
     protected AnnotationVisitor createAnnotationRemapper(AnnotationVisitor av) {
         return new AnnotationRemapper(av, remapper);
     }
+    
+    protected ModuleVisitor createModuleRemapper(ModuleVisitor mv) {
+        return new ModuleRemapper(mv, remapper);
+    }
 }
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/CodeSizeEvaluator.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/CodeSizeEvaluator.java
index 08295b2..bd3f07f 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/CodeSizeEvaluator.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/CodeSizeEvaluator.java
@@ -30,9 +30,9 @@
 package org.eclipse.persistence.internal.libraries.asm.commons;
 
 import org.eclipse.persistence.internal.libraries.asm.Handle;
-import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.Label;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 
 /**
  * A {@link MethodVisitor} that can be used to approximate method size.
@@ -46,7 +46,7 @@
     private int maxSize;
 
     public CodeSizeEvaluator(final MethodVisitor mv) {
-        this(Opcodes.ASM5, mv);
+        this(Opcodes.ASM6, mv);
     }
 
     protected CodeSizeEvaluator(final int api, final MethodVisitor mv) {
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/FieldRemapper.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/FieldRemapper.java
index a1e859e..7174f0d 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/FieldRemapper.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/FieldRemapper.java
@@ -31,9 +31,9 @@
 package org.eclipse.persistence.internal.libraries.asm.commons;
 
 import org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor;
+import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.TypePath;
-import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 
 /**
  * A {@link FieldVisitor} adapter for type remapping.
@@ -45,7 +45,7 @@
     private final Remapper remapper;
 
     public FieldRemapper(final FieldVisitor fv, final Remapper remapper) {
-        this(Opcodes.ASM5, fv, remapper);
+        this(Opcodes.ASM6, fv, remapper);
     }
 
     protected FieldRemapper(final int api, final FieldVisitor fv,
@@ -63,7 +63,7 @@
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(int typeRef,
-                                                 TypePath typePath, String desc, boolean visible) {
+            TypePath typePath, String desc, boolean visible) {
         AnnotationVisitor av = super.visitTypeAnnotation(typeRef, typePath,
                 remapper.mapDesc(desc), visible);
         return av == null ? null : new AnnotationRemapper(av, remapper);
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/GeneratorAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/GeneratorAdapter.java
index 1498873..74067f0 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/GeneratorAdapter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/GeneratorAdapter.java
@@ -41,7 +41,7 @@
 import org.eclipse.persistence.internal.libraries.asm.Type;
 
 /**
- * A {@link MethodVisitor} with convenient methods to generate
+ * A {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor} with convenient methods to generate
  * code. For example, using this adapter, the class below
  * 
  * <pre>
@@ -260,7 +260,7 @@
      */
     public GeneratorAdapter(final MethodVisitor mv, final int access,
             final String name, final String desc) {
-        this(Opcodes.ASM5, mv, access, name, desc);
+        this(Opcodes.ASM6, mv, access, name, desc);
         if (getClass() != GeneratorAdapter.class) {
             throw new IllegalStateException();
         }
@@ -271,7 +271,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      * @param mv
      *            the method visitor to which this adapter delegates calls.
      * @param access
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/InstructionAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/InstructionAdapter.java
index 8b540e2..ba5a081 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/InstructionAdapter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/InstructionAdapter.java
@@ -57,7 +57,7 @@
      *             If a subclass calls this constructor.
      */
     public InstructionAdapter(final MethodVisitor mv) {
-        this(Opcodes.ASM5, mv);
+        this(Opcodes.ASM6, mv);
         if (getClass() != InstructionAdapter.class) {
             throw new IllegalStateException();
         }
@@ -68,7 +68,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      * @param mv
      *            the method visitor to which this adapter delegates calls.
      */
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/JSRInlinerAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/JSRInlinerAdapter.java
index 9ac0a29..87e1b45 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/JSRInlinerAdapter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/JSRInlinerAdapter.java
@@ -39,9 +39,9 @@
 import java.util.Map;
 import java.util.Set;
 
-import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.Label;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.Type;
 import org.eclipse.persistence.internal.libraries.asm.tree.AbstractInsnNode;
 import org.eclipse.persistence.internal.libraries.asm.tree.InsnList;
@@ -55,7 +55,7 @@
 import org.eclipse.persistence.internal.libraries.asm.tree.TryCatchBlockNode;
 
 /**
- * A {@link MethodVisitor} that removes JSR instructions and
+ * A {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor} that removes JSR instructions and
  * inlines the referenced subroutines.
  * 
  * <b>Explanation of how it works</b> TODO
@@ -113,7 +113,7 @@
     public JSRInlinerAdapter(final MethodVisitor mv, final int access,
             final String name, final String desc, final String signature,
             final String[] exceptions) {
-        this(Opcodes.ASM5, mv, access, name, desc, signature, exceptions);
+        this(Opcodes.ASM6, mv, access, name, desc, signature, exceptions);
         if (getClass() != JSRInlinerAdapter.class) {
             throw new IllegalStateException();
         }
@@ -124,7 +124,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      * @param mv
      *            the <code>MethodVisitor</code> to send the resulting inlined
      *            method code to (use <code>null</code> for none).
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/LocalVariablesSorter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/LocalVariablesSorter.java
index 1d924d1..139056d 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/LocalVariablesSorter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/LocalVariablesSorter.java
@@ -91,7 +91,7 @@
      */
     public LocalVariablesSorter(final int access, final String desc,
             final MethodVisitor mv) {
-        this(Opcodes.ASM5, access, desc, mv);
+        this(Opcodes.ASM6, access, desc, mv);
         if (getClass() != LocalVariablesSorter.class) {
             throw new IllegalStateException();
         }
@@ -102,7 +102,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      * @param access
      *            access flags of the adapted method.
      * @param desc
@@ -175,8 +175,8 @@
 
     @Override
     public AnnotationVisitor visitLocalVariableAnnotation(int typeRef,
-                                                          TypePath typePath, Label[] start, Label[] end, int[] index,
-                                                          String desc, boolean visible) {
+            TypePath typePath, Label[] start, Label[] end, int[] index,
+            String desc, boolean visible) {
         Type t = Type.getType(desc);
         int[] newIndex = new int[index.length];
         for (int i = 0; i < newIndex.length; ++i) {
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/MethodRemapper.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/MethodRemapper.java
index 6225750..3747499 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/MethodRemapper.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/MethodRemapper.java
@@ -47,7 +47,7 @@
     protected final Remapper remapper;
 
     public MethodRemapper(final MethodVisitor mv, final Remapper remapper) {
-        this(Opcodes.ASM5, mv, remapper);
+        this(Opcodes.ASM6, mv, remapper);
     }
 
     protected MethodRemapper(final int api, final MethodVisitor mv,
@@ -71,7 +71,7 @@
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(int typeRef,
-                                                 TypePath typePath, String desc, boolean visible) {
+            TypePath typePath, String desc, boolean visible) {
         AnnotationVisitor av = super.visitTypeAnnotation(typeRef, typePath,
                 remapper.mapDesc(desc), visible);
         return av == null ? av : new AnnotationRemapper(av, remapper);
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/ModuleRemapper.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/ModuleRemapper.java
new file mode 100644
index 0000000..b0d68c3
--- /dev/null
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/ModuleRemapper.java
@@ -0,0 +1,80 @@
+/***
+ * ASM: a very small and fast Java bytecode manipulation framework
+ * Copyright (c) 2000-2011 INRIA, France Telecom
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holders nor the names of its
+ *    contributors may be used to endorse or promote products derived from
+ *    this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.eclipse.persistence.internal.libraries.asm.commons;
+
+import org.eclipse.persistence.internal.libraries.asm.ModuleVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
+
+/**
+ * A {@link ModuleVisitor} adapter for type remapping.
+ * 
+ * @author Remi Forax
+ */
+public class ModuleRemapper extends ModuleVisitor {
+    private final Remapper remapper;
+
+    public ModuleRemapper(final ModuleVisitor mv, final Remapper remapper) {
+        this(Opcodes.ASM6, mv, remapper);
+    }
+
+    protected ModuleRemapper(final int api, final ModuleVisitor mv,
+            final Remapper remapper) {
+        super(api, mv);
+        this.remapper = remapper;
+    }
+
+    @Override
+    public void visitRequire(String module, int access) {
+        super.visitRequire(remapper.mapModuleName(module), access);
+    }
+    
+    @Override
+    public void visitExport(String packaze, String... modules) {
+        String[] newTos = null;
+        if (modules != null) {
+            newTos = new String[modules.length];
+            for(int i = 0 ; i < modules.length; i++) {
+                newTos[i] = remapper.mapModuleName(modules[i]);
+            }
+        }
+        super.visitExport(remapper.mapPackageName(packaze), newTos);
+    }
+    
+    @Override
+    public void visitUse(String service) {
+        super.visitUse(remapper.mapType(service));
+    }
+    
+    @Override
+    public void visitProvide(String service, String impl) {
+        super.visitProvide(remapper.mapType(service), remapper.mapType(impl));
+    }
+}
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/Remapper.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/Remapper.java
index d080e87..ec3dded 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/Remapper.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/Remapper.java
@@ -30,9 +30,9 @@
 
 package org.eclipse.persistence.internal.libraries.asm.commons;
 
-import org.eclipse.persistence.internal.libraries.asm.signature.SignatureReader;
 import org.eclipse.persistence.internal.libraries.asm.Handle;
 import org.eclipse.persistence.internal.libraries.asm.Type;
+import org.eclipse.persistence.internal.libraries.asm.signature.SignatureReader;
 import org.eclipse.persistence.internal.libraries.asm.signature.SignatureVisitor;
 import org.eclipse.persistence.internal.libraries.asm.signature.SignatureWriter;
 
@@ -226,6 +226,28 @@
     }
 
     /**
+     * Map package name to the new name. Subclasses can override.
+     * 
+     * @param name name of the package
+     * @return new name of the package
+     */
+    public String mapPackageName(String name) {
+        String fakeName = map(name + ".FakeClassName");
+        int index;
+        return fakeName == null || (index = fakeName.lastIndexOf('.')) == -1 ? name: fakeName.substring(0, index);
+    }
+    
+    /**
+     * Map module name to the new name. Subclasses can override.
+     * 
+     * @param name name of the module
+     * @return new name of the module
+     */
+    public String mapModuleName(String name) {
+        return name;
+    }
+    
+    /**
      * Map type name to the new name. Subclasses can override.
      * 
      * @param typeName
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingAnnotationAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingAnnotationAdapter.java
index 3dc460d..832f42d 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingAnnotationAdapter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingAnnotationAdapter.java
@@ -46,7 +46,7 @@
 
     public RemappingAnnotationAdapter(final AnnotationVisitor av,
             final Remapper remapper) {
-        this(Opcodes.ASM5, av, remapper);
+        this(Opcodes.ASM6, av, remapper);
     }
 
     protected RemappingAnnotationAdapter(final int api,
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingClassAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingClassAdapter.java
index d9564e2..95bc01a 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingClassAdapter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingClassAdapter.java
@@ -34,6 +34,7 @@
 import org.eclipse.persistence.internal.libraries.asm.ClassVisitor;
 import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
+import org.eclipse.persistence.internal.libraries.asm.ModuleVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.TypePath;
 
@@ -51,7 +52,7 @@
     protected String className;
 
     public RemappingClassAdapter(final ClassVisitor cv, final Remapper remapper) {
-        this(Opcodes.ASM5, cv, remapper);
+        this(Opcodes.ASM6, cv, remapper);
     }
 
     protected RemappingClassAdapter(final int api, final ClassVisitor cv,
@@ -70,6 +71,11 @@
     }
 
     @Override
+    public ModuleVisitor visitModule() {
+        throw new RuntimeException("RemappingClassAdapter is deprecated, use ClassRemapper instead");
+    }
+    
+    @Override
     public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
         AnnotationVisitor av = super.visitAnnotation(remapper.mapDesc(desc),
                 visible);
@@ -78,7 +84,7 @@
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(int typeRef,
-                                                 TypePath typePath, String desc, boolean visible) {
+            TypePath typePath, String desc, boolean visible) {
         AnnotationVisitor av = super.visitTypeAnnotation(typeRef, typePath,
                 remapper.mapDesc(desc), visible);
         return av == null ? null : createRemappingAnnotationAdapter(av);
@@ -86,7 +92,7 @@
 
     @Override
     public FieldVisitor visitField(int access, String name, String desc,
-                                   String signature, Object value) {
+            String signature, Object value) {
         FieldVisitor fv = super.visitField(access,
                 remapper.mapFieldName(className, name, desc),
                 remapper.mapDesc(desc), remapper.mapSignature(signature, true),
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingFieldAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingFieldAdapter.java
index bc41a3b..4e7185a 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingFieldAdapter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingFieldAdapter.java
@@ -31,9 +31,9 @@
 package org.eclipse.persistence.internal.libraries.asm.commons;
 
 import org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor;
+import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.TypePath;
-import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 
 /**
  * A {@link FieldVisitor} adapter for type remapping.
@@ -47,7 +47,7 @@
     private final Remapper remapper;
 
     public RemappingFieldAdapter(final FieldVisitor fv, final Remapper remapper) {
-        this(Opcodes.ASM5, fv, remapper);
+        this(Opcodes.ASM6, fv, remapper);
     }
 
     protected RemappingFieldAdapter(final int api, final FieldVisitor fv,
@@ -65,7 +65,7 @@
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(int typeRef,
-                                                 TypePath typePath, String desc, boolean visible) {
+            TypePath typePath, String desc, boolean visible) {
         AnnotationVisitor av = super.visitTypeAnnotation(typeRef, typePath,
                 remapper.mapDesc(desc), visible);
         return av == null ? null : new RemappingAnnotationAdapter(av, remapper);
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingMethodAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingMethodAdapter.java
index 8f90e24..ba6c3f0 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingMethodAdapter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingMethodAdapter.java
@@ -50,7 +50,7 @@
 
     public RemappingMethodAdapter(final int access, final String desc,
             final MethodVisitor mv, final Remapper remapper) {
-        this(Opcodes.ASM5, access, desc, mv, remapper);
+        this(Opcodes.ASM6, access, desc, mv, remapper);
     }
 
     protected RemappingMethodAdapter(final int api, final int access,
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingSignatureAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingSignatureAdapter.java
index c7d196c..39d00dd 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingSignatureAdapter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/RemappingSignatureAdapter.java
@@ -50,7 +50,7 @@
 
     public RemappingSignatureAdapter(final SignatureVisitor v,
             final Remapper remapper) {
-        this(Opcodes.ASM5, v, remapper);
+        this(Opcodes.ASM6, v, remapper);
     }
 
     protected RemappingSignatureAdapter(final int api,
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/SerialVersionUIDAdder.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/SerialVersionUIDAdder.java
index e5c7251..4674da8 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/SerialVersionUIDAdder.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/SerialVersionUIDAdder.java
@@ -39,9 +39,9 @@
 import java.util.Collection;
 
 import org.eclipse.persistence.internal.libraries.asm.ClassVisitor;
-import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 
 /**
  * A {@link ClassVisitor} that adds a serial version unique identifier to a
@@ -170,7 +170,7 @@
      *             If a subclass calls this constructor.
      */
     public SerialVersionUIDAdder(final ClassVisitor cv) {
-        this(Opcodes.ASM5, cv);
+        this(Opcodes.ASM6, cv);
         if (getClass() != SerialVersionUIDAdder.class) {
             throw new IllegalStateException();
         }
@@ -181,7 +181,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      * @param cv
      *            a {@link ClassVisitor} to which this visitor will delegate
      *            calls.
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/SignatureRemapper.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/SignatureRemapper.java
index 693e3a1..e8e607b 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/SignatureRemapper.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/SignatureRemapper.java
@@ -49,7 +49,7 @@
     private Stack<String> classNames = new Stack<String>();
 
     public SignatureRemapper(final SignatureVisitor v, final Remapper remapper) {
-        this(Opcodes.ASM5, v, remapper);
+        this(Opcodes.ASM6, v, remapper);
     }
 
     protected SignatureRemapper(final int api, final SignatureVisitor v,
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/StaticInitMerger.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/StaticInitMerger.java
index cfd7062..b61f294 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/StaticInitMerger.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/StaticInitMerger.java
@@ -29,9 +29,9 @@
  */
 package org.eclipse.persistence.internal.libraries.asm.commons;
 
-import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.ClassVisitor;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 
 /**
  * A {@link ClassVisitor} that merges clinit methods into a single one.
@@ -49,7 +49,7 @@
     private int counter;
 
     public StaticInitMerger(final String prefix, final ClassVisitor cv) {
-        this(Opcodes.ASM5, prefix, cv);
+        this(Opcodes.ASM6, prefix, cv);
     }
 
     protected StaticInitMerger(final int api, final String prefix,
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/TryCatchBlockSorter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/TryCatchBlockSorter.java
index 9623205..f804873 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/TryCatchBlockSorter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/commons/TryCatchBlockSorter.java
@@ -33,10 +33,10 @@
 import java.util.Collections;
 import java.util.Comparator;
 
+import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.tree.MethodNode;
 import org.eclipse.persistence.internal.libraries.asm.tree.TryCatchBlockNode;
-import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
 
 /**
  * A {@link MethodVisitor} adapter to sort the exception handlers. The handlers
@@ -57,7 +57,7 @@
     public TryCatchBlockSorter(final MethodVisitor mv, final int access,
             final String name, final String desc, final String signature,
             final String[] exceptions) {
-        this(Opcodes.ASM5, mv, access, name, desc, signature, exceptions);
+        this(Opcodes.ASM6, mv, access, name, desc, signature, exceptions);
     }
 
     protected TryCatchBlockSorter(final int api, final MethodVisitor mv,
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/AnnotationConstantsCollector.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/AnnotationConstantsCollector.java
index 902e7b8..90aedf9 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/AnnotationConstantsCollector.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/AnnotationConstantsCollector.java
@@ -45,7 +45,7 @@
 
     public AnnotationConstantsCollector(final AnnotationVisitor av,
             final ConstantPool cp) {
-        super(Opcodes.ASM5, av);
+        super(Opcodes.ASM6, av);
         this.cp = cp;
     }
 
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/ClassConstantsCollector.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/ClassConstantsCollector.java
index 596899e..5282773 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/ClassConstantsCollector.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/ClassConstantsCollector.java
@@ -31,11 +31,12 @@
 
 import org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Attribute;
-import org.eclipse.persistence.internal.libraries.asm.Opcodes;
-import org.eclipse.persistence.internal.libraries.asm.TypePath;
 import org.eclipse.persistence.internal.libraries.asm.ClassVisitor;
 import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
+import org.eclipse.persistence.internal.libraries.asm.ModuleVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
+import org.eclipse.persistence.internal.libraries.asm.TypePath;
 
 /**
  * A {@link ClassVisitor} that collects the {@link Constant}s of the classes it
@@ -48,7 +49,7 @@
     private final ConstantPool cp;
 
     public ClassConstantsCollector(final ClassVisitor cv, final ConstantPool cp) {
-        super(Opcodes.ASM5, cv);
+        super(Opcodes.ASM6, cv);
         this.cp = cp;
     }
 
@@ -91,6 +92,12 @@
     }
 
     @Override
+    public ModuleVisitor visitModule() {
+        cp.newUTF8("Module");
+        return new ModuleConstantsCollector(cv.visitModule(), cp);
+    }
+    
+    @Override
     public void visitOuterClass(final String owner, final String name,
             final String desc) {
         cp.newUTF8("EnclosingMethod");
@@ -103,7 +110,7 @@
 
     @Override
     public AnnotationVisitor visitAnnotation(final String desc,
-                                             final boolean visible) {
+            final boolean visible) {
         cp.newUTF8(desc);
         if (visible) {
             cp.newUTF8("RuntimeVisibleAnnotations");
@@ -116,7 +123,7 @@
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(int typeRef,
-                                                 TypePath typePath, String desc, boolean visible) {
+            TypePath typePath, String desc, boolean visible) {
         cp.newUTF8(desc);
         if (visible) {
             cp.newUTF8("RuntimeVisibleTypeAnnotations");
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/ClassOptimizer.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/ClassOptimizer.java
index f271323..2caca10 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/ClassOptimizer.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/ClassOptimizer.java
@@ -34,13 +34,13 @@
 
 import org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Attribute;
-import org.eclipse.persistence.internal.libraries.asm.Opcodes;
-import org.eclipse.persistence.internal.libraries.asm.TypePath;
-import org.eclipse.persistence.internal.libraries.asm.commons.Remapper;
 import org.eclipse.persistence.internal.libraries.asm.ClassVisitor;
 import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Label;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
+import org.eclipse.persistence.internal.libraries.asm.TypePath;
+import org.eclipse.persistence.internal.libraries.asm.commons.Remapper;
 import org.eclipse.persistence.internal.libraries.asm.commons.ClassRemapper;
 
 /**
@@ -60,7 +60,7 @@
     List<String> syntheticClassFields = new ArrayList<String>();
 
     public ClassOptimizer(final ClassVisitor cv, final Remapper remapper) {
-        super(Opcodes.ASM5, cv, remapper);
+        super(Opcodes.ASM6, cv, remapper);
     }
 
     FieldVisitor syntheticFieldVisitor(final int access, final String name,
@@ -100,14 +100,14 @@
 
     @Override
     public AnnotationVisitor visitAnnotation(final String desc,
-                                             final boolean visible) {
+            final boolean visible) {
         // remove annotations
         return null;
     }
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(int typeRef,
-                                                 TypePath typePath, String desc, boolean visible) {
+            TypePath typePath, String desc, boolean visible) {
         // remove annotations
         return null;
     }
@@ -161,7 +161,7 @@
             hasClinitMethod = true;
             MethodVisitor mv = super.visitMethod(access, name, desc, null,
                     exceptions);
-            return new MethodVisitor(Opcodes.ASM5, mv) {
+            return new MethodVisitor(Opcodes.ASM6, mv) {
                 @Override
                 public void visitCode() {
                     super.visitCode();
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/FieldConstantsCollector.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/FieldConstantsCollector.java
index 0692076..2a2b867 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/FieldConstantsCollector.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/FieldConstantsCollector.java
@@ -31,9 +31,9 @@
 
 import org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Attribute;
+import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.TypePath;
-import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 
 /**
  * A {@link FieldVisitor} that collects the {@link Constant}s of the fields it
@@ -46,13 +46,13 @@
     private final ConstantPool cp;
 
     public FieldConstantsCollector(final FieldVisitor fv, final ConstantPool cp) {
-        super(Opcodes.ASM5, fv);
+        super(Opcodes.ASM6, fv);
         this.cp = cp;
     }
 
     @Override
     public AnnotationVisitor visitAnnotation(final String desc,
-                                             final boolean visible) {
+            final boolean visible) {
         cp.newUTF8(desc);
         if (visible) {
             cp.newUTF8("RuntimeVisibleAnnotations");
@@ -65,7 +65,7 @@
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(int typeRef,
-                                                 TypePath typePath, String desc, boolean visible) {
+            TypePath typePath, String desc, boolean visible) {
         cp.newUTF8(desc);
         if (visible) {
             cp.newUTF8("RuntimeVisibleTypeAnnotations");
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/JarOptimizer.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/JarOptimizer.java
index 51faed3..e08139e 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/JarOptimizer.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/JarOptimizer.java
@@ -49,9 +49,9 @@
 
 import org.eclipse.persistence.internal.libraries.asm.ClassReader;
 import org.eclipse.persistence.internal.libraries.asm.ClassVisitor;
-import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 
 /**
  * A Jar file optimizer.
@@ -146,7 +146,7 @@
         String owner;
 
         public ClassDump() {
-            super(Opcodes.ASM5);
+            super(Opcodes.ASM6);
         }
 
         @Override
@@ -186,7 +186,7 @@
         String method;
 
         public ClassVerifier() {
-            super(Opcodes.ASM5);
+            super(Opcodes.ASM6);
         }
 
         @Override
@@ -201,7 +201,7 @@
                 final String desc, final String signature,
                 final String[] exceptions) {
             method = name + desc;
-            return new MethodVisitor(Opcodes.ASM5) {
+            return new MethodVisitor(Opcodes.ASM6) {
                 @Override
                 public void visitFieldInsn(final int opcode,
                         final String owner, final String name, final String desc) {
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/MethodConstantsCollector.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/MethodConstantsCollector.java
index 2f592c2..ec47bd2 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/MethodConstantsCollector.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/MethodConstantsCollector.java
@@ -31,10 +31,10 @@
 
 import org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Handle;
-import org.eclipse.persistence.internal.libraries.asm.Opcodes;
-import org.eclipse.persistence.internal.libraries.asm.TypePath;
 import org.eclipse.persistence.internal.libraries.asm.Label;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
+import org.eclipse.persistence.internal.libraries.asm.TypePath;
 
 /**
  * An {@link MethodVisitor} that collects the {@link Constant}s of the methods
@@ -48,7 +48,7 @@
 
     public MethodConstantsCollector(final MethodVisitor mv,
             final ConstantPool cp) {
-        super(Opcodes.ASM5, mv);
+        super(Opcodes.ASM6, mv);
         this.cp = cp;
     }
 
@@ -82,7 +82,7 @@
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(int typeRef,
-                                                 TypePath typePath, String desc, boolean visible) {
+            TypePath typePath, String desc, boolean visible) {
         cp.newUTF8(desc);
         if (visible) {
             cp.newUTF8("RuntimeVisibleTypeAnnotations");
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/MethodOptimizer.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/MethodOptimizer.java
index 97b8bdd..051ea3d 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/MethodOptimizer.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/MethodOptimizer.java
@@ -33,13 +33,13 @@
 
 import org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Attribute;
-import org.eclipse.persistence.internal.libraries.asm.Opcodes;
-import org.eclipse.persistence.internal.libraries.asm.TypePath;
-import org.eclipse.persistence.internal.libraries.asm.commons.Remapper;
 import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Label;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.Type;
+import org.eclipse.persistence.internal.libraries.asm.TypePath;
+import org.eclipse.persistence.internal.libraries.asm.commons.Remapper;
 import org.eclipse.persistence.internal.libraries.asm.commons.MethodRemapper;
 
 /**
@@ -54,7 +54,7 @@
 
     public MethodOptimizer(ClassOptimizer classOptimizer, MethodVisitor mv,
             Remapper remapper) {
-        super(Opcodes.ASM5, mv, remapper);
+        super(Opcodes.ASM6, mv, remapper);
         this.classOptimizer = classOptimizer;
     }
 
@@ -81,7 +81,7 @@
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(int typeRef,
-                                                 TypePath typePath, String desc, boolean visible) {
+            TypePath typePath, String desc, boolean visible) {
         return null;
     }
 
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/ModuleConstantsCollector.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/ModuleConstantsCollector.java
new file mode 100644
index 0000000..7eba191
--- /dev/null
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/ModuleConstantsCollector.java
@@ -0,0 +1,84 @@
+/***
+ * ASM: a very small and fast Java bytecode manipulation framework
+ * Copyright (c) 2000-2011 INRIA, France Telecom
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holders nor the names of its
+ *    contributors may be used to endorse or promote products derived from
+ *    this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.eclipse.persistence.internal.libraries.asm.optimizer;
+
+import org.eclipse.persistence.internal.libraries.asm.ModuleVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
+
+/**
+ * A {@link ModuleVisitor} that collects the {@link Constant}s of the
+ * module declaration it visits.
+ * 
+ * @author Remi Forax
+ */
+public class ModuleConstantsCollector extends ModuleVisitor {
+
+    private final ConstantPool cp;
+
+    public ModuleConstantsCollector(final ModuleVisitor mv, final ConstantPool cp) {
+        super(Opcodes.ASM6, mv);
+        this.cp = cp;
+    }
+
+    @Override
+    public void visitRequire(String module, int access) {
+        cp.newUTF8(module);
+        mv.visitRequire(module, access);
+    }
+    
+    @Override
+    public void visitExport(String packaze, String... modules) {
+        cp.newUTF8(packaze);
+        if (modules != null && modules.length > 0) {
+            for(String to: modules) {
+                cp.newUTF8(to);
+            }
+        }
+        mv.visitExport(packaze, modules);
+    }
+
+    @Override
+    public void visitUse(String service) {
+        cp.newClass(service);
+        mv.visitUse(service);
+    }
+    
+    @Override
+    public void visitProvide(String service, String impl) {
+        cp.newClass(service);
+        cp.newClass(impl);
+        mv.visitProvide(service, impl);
+    }
+    
+    @Override
+    public void visitEnd() {
+        mv.visitEnd();
+    }
+}
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/Shrinker.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/Shrinker.java
index 09c0120..f0701cc 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/Shrinker.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/Shrinker.java
@@ -46,8 +46,8 @@
 import org.eclipse.persistence.internal.libraries.asm.ClassReader;
 import org.eclipse.persistence.internal.libraries.asm.ClassWriter;
 import org.eclipse.persistence.internal.libraries.asm.Handle;
-import org.eclipse.persistence.internal.libraries.asm.commons.Remapper;
 import org.eclipse.persistence.internal.libraries.asm.Type;
+import org.eclipse.persistence.internal.libraries.asm.commons.Remapper;
 import org.eclipse.persistence.internal.libraries.asm.commons.SimpleRemapper;
 
 /**
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-annotations.properties b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-annotations.properties
index 03fec2e..5e77482 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-annotations.properties
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-annotations.properties
@@ -30,24 +30,24 @@
 
 # class mappings
 
-org/objectweb/asm/AnnotationWriter/remove=true
+org/eclipse/persistence/internal/libraries/asm/AnnotationWriter/remove=true
 
 # field mappings
 
-org/objectweb/asm/ClassWriter.anns=-
-org/objectweb/asm/ClassWriter.ianns=-
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.anns=-
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.ianns=-
 
-org/objectweb/asm/FieldWriter.anns=-
-org/objectweb/asm/FieldWriter.ianns=-
+org/eclipse/persistence/internal/libraries/asm/FieldWriter.anns=-
+org/eclipse/persistence/internal/libraries/asm/FieldWriter.ianns=-
 
-org/objectweb/asm/MethodWriter.annd=-
-org/objectweb/asm/MethodWriter.anns=-
-org/objectweb/asm/MethodWriter.ianns=-
-org/objectweb/asm/MethodWriter.panns=-
-org/objectweb/asm/MethodWriter.ipanns=-
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.annd=-
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.anns=-
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.ianns=-
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.panns=-
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.ipanns=-
 
 # method mappings
 
-org/objectweb/asm/ClassReader.readAnnotationValue(I[CLjava/lang/String;Lorg/objectweb/asm/AnnotationVisitor;)I=-
-org/objectweb/asm/ClassReader.readAnnotationValues(I[CZLorg/objectweb/asm/AnnotationVisitor;)I=-
-org/objectweb/asm/ClassReader.readParameterAnnotations(I[CZLorg/objectweb/asm/MethodVisitor;)V=-
+org/eclipse/persistence/internal/libraries/asm/ClassReader.readAnnotationValue(I[CLjava/lang/String;Lorg/eclipse/persistence/internal/libraries/asm/AnnotationVisitor;)I=-
+org/eclipse/persistence/internal/libraries/asm/ClassReader.readAnnotationValues(I[CZLorg/eclipse/persistence/internal/libraries/asm/AnnotationVisitor;)I=-
+org/eclipse/persistence/internal/libraries/asm/ClassReader.readParameterAnnotations(I[CZLorg/eclipse/persistence/internal/libraries/asm/MethodVisitor;)V=-
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-frames.properties b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-frames.properties
index ecf580f..990de82 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-frames.properties
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-frames.properties
@@ -30,33 +30,33 @@
 
 # class mappings
 
-org/objectweb/asm/Frame/remove=true
+org/eclipse/persistence/internal/libraries/asm/Frame/remove=true
 
 # field mappings
 
-org/objectweb/asm/ClassWriter.typeCount=-
-org/objectweb/asm/ClassWriter.typeTable=-
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.typeCount=-
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.typeTable=-
 
-org/objectweb/asm/Label.frame=-
+org/eclipse/persistence/internal/libraries/asm/Label.frame=-
 
-org/objectweb/asm/MethodWriter.frameCount=-
-org/objectweb/asm/MethodWriter.stackMap=-
-org/objectweb/asm/MethodWriter.previousFrameOffset=-
-org/objectweb/asm/MethodWriter.previousFrame=-
-org/objectweb/asm/MethodWriter.frameIndex=-
-org/objectweb/asm/MethodWriter.frame=-
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.frameCount=-
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.stackMap=-
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.previousFrameOffset=-
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.previousFrame=-
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.frameIndex=-
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.frame=-
 
 # method mappings
 
-org/objectweb/asm/ClassReader.readFrameType([Ljava/lang/Object;II[C[Lorg/objectweb/asm/Label;)I=-
+org/eclipse/persistence/internal/libraries/asm/ClassReader.readFrameType([Ljava/lang/Object;II[C[Lorg/eclipse/persistence/internal/libraries/asm/Label;)I=-
 
-org/objectweb/asm/ClassWriter.addType(Ljava/lang/String;)I=-
-org/objectweb/asm/ClassWriter.addUninitializedType(Ljava/lang/String;I)I=-
-org/objectweb/asm/ClassWriter.addType(Lorg/objectweb/asm/Item;)Lorg/objectweb/asm/Item;=-
-org/objectweb/asm/ClassWriter.getMergedType(II)I=-
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.addType(Ljava/lang/String;)I=-
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.addUninitializedType(Ljava/lang/String;I)I=-
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.addType(Lorg/eclipse/persistence/internal/libraries/asm/Item;)Lorg/eclipse/persistence/internal/libraries/asm/Item;=-
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.getMergedType(II)I=-
 
-org/objectweb/asm/MethodWriter.startFrame(III)V=-
-org/objectweb/asm/MethodWriter.endFrame()V=-
-org/objectweb/asm/MethodWriter.writeFrame()V=-
-org/objectweb/asm/MethodWriter.writeFrameTypes(II)V=-
-org/objectweb/asm/MethodWriter.writeFrameType(Ljava/lang/Object;)V=-
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.startFrame(III)V=-
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.endFrame()V=-
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.writeFrame()V=-
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.writeFrameTypes(II)V=-
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.writeFrameType(Ljava/lang/Object;)V=-
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-resize.properties b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-resize.properties
index 97f7e34..0c65cff 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-resize.properties
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-resize.properties
@@ -34,4 +34,4 @@
 
 # method mappings
 
-org/objectweb/asm/MethodWriter.resizeInstructions()V=-
\ No newline at end of file
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.resizeInstructions()V=-
\ No newline at end of file
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-signatures.properties b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-signatures.properties
index 6a48623..8f8e166 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-signatures.properties
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-signatures.properties
@@ -30,14 +30,14 @@
 
 # class mappings
 
-org/objectweb/asm/signature/SignatureReader/remove=true
-org/objectweb/asm/signature/SignatureVisitor/remove=true
-org/objectweb/asm/signature/SignatureWriter/remove=true
+org/eclipse/persistence/internal/libraries/asm/signature/SignatureReader/remove=true
+org/eclipse/persistence/internal/libraries/asm/signature/SignatureVisitor/remove=true
+org/eclipse/persistence/internal/libraries/asm/signature/SignatureWriter/remove=true
 
 # field mappings
 
-org/objectweb/asm/ClassWriter.signature=-
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.signature=-
 
-org/objectweb/asm/FieldWriter.signature=-
+org/eclipse/persistence/internal/libraries/asm/FieldWriter.signature=-
 
-org/objectweb/asm/MethodWriter.signature=-
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.signature=-
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-writer.properties b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-writer.properties
index 1c83ca2..40d8a25 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-writer.properties
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink-writer.properties
@@ -30,37 +30,38 @@
 
 # class mappings
 
-org/objectweb/asm/AnnotationWriter/remove=true
-org/objectweb/asm/ByteVector/remove=true
-org/objectweb/asm/ClassWriter/remove=true
-org/objectweb/asm/Edge/remove=true
-org/objectweb/asm/FieldWriter/remove=true
-org/objectweb/asm/Frame/remove=true
-org/objectweb/asm/Handler/remove=true
-org/objectweb/asm/Item/remove=true
-org/objectweb/asm/MethodWriter/remove=true
+org/eclipse/persistence/internal/libraries/asm/AnnotationWriter/remove=true
+org/eclipse/persistence/internal/libraries/asm/ByteVector/remove=true
+org/eclipse/persistence/internal/libraries/asm/ClassWriter/remove=true
+org/eclipse/persistence/internal/libraries/asm/Edge/remove=true
+org/eclipse/persistence/internal/libraries/asm/FieldWriter/remove=true
+org/eclipse/persistence/internal/libraries/asm/Frame/remove=true
+org/eclipse/persistence/internal/libraries/asm/Handler/remove=true
+org/eclipse/persistence/internal/libraries/asm/Item/remove=true
+org/eclipse/persistence/internal/libraries/asm/MethodWriter/remove=true
+org/eclipse/persistence/internal/libraries/asm/ModuleWriter/remove=true
 
 # field mappings
 
-org/objectweb/asm/Label.position=-
-org/objectweb/asm/Label.referenceCount=-
-org/objectweb/asm/Label.srcAndRefPositions=-
-org/objectweb/asm/Label.inputStackTop=-
-org/objectweb/asm/Label.outputStackMax=-
-org/objectweb/asm/Label.frame=-
-org/objectweb/asm/Label.successor=-
-org/objectweb/asm/Label.successors=-
-org/objectweb/asm/Label.next=-
+org/eclipse/persistence/internal/libraries/asm/Label.position=-
+org/eclipse/persistence/internal/libraries/asm/Label.referenceCount=-
+org/eclipse/persistence/internal/libraries/asm/Label.srcAndRefPositions=-
+org/eclipse/persistence/internal/libraries/asm/Label.inputStackTop=-
+org/eclipse/persistence/internal/libraries/asm/Label.outputStackMax=-
+org/eclipse/persistence/internal/libraries/asm/Label.frame=-
+org/eclipse/persistence/internal/libraries/asm/Label.successor=-
+org/eclipse/persistence/internal/libraries/asm/Label.successors=-
+org/eclipse/persistence/internal/libraries/asm/Label.next=-
 
 # method mappings
 
-org/objectweb/asm/ClassReader.copyPool(Lorg/objectweb/asm/ClassWriter;)V=-
+org/eclipse/persistence/internal/libraries/asm/ClassReader.copyPool(Lorg/eclipse/persistence/internal/libraries/asm/ClassWriter;)V=-
 
-org/objectweb/asm/Label.addReference(II)V=-
-org/objectweb/asm/Label.put(Lorg/objectweb/asm/MethodWriter;Lorg/objectweb/asm/ByteVector;IZ)V=-
-org/objectweb/asm/Label.resolve(Lorg/objectweb/asm/MethodWriter;I[B)Z=-
-org/objectweb/asm/Label.getFirst()Lorg/objectweb/asm/Label;=-
-org/objectweb/asm/Label.inSubroutine(J)Z=-
-org/objectweb/asm/Label.inSameSubroutine(Lorg/objectweb/asm/Label;)Z=-
-org/objectweb/asm/Label.addToSubroutine(JI)V=-
-org/objectweb/asm/Label.visitSubroutine(Lorg/objectweb/asm/Label;JI)V=-
+org/eclipse/persistence/internal/libraries/asm/Label.addReference(II)V=-
+org/eclipse/persistence/internal/libraries/asm/Label.put(Lorg/eclipse/persistence/internal/libraries/asm/MethodWriter;Lorg/eclipse/persistence/internal/libraries/asm/ByteVector;IZ)V=-
+org/eclipse/persistence/internal/libraries/asm/Label.resolve(Lorg/eclipse/persistence/internal/libraries/asm/MethodWriter;I[B)Z=-
+org/eclipse/persistence/internal/libraries/asm/Label.getFirst()Lorg/eclipse/persistence/internal/libraries/asm/Label;=-
+org/eclipse/persistence/internal/libraries/asm/Label.inSubroutine(J)Z=-
+org/eclipse/persistence/internal/libraries/asm/Label.inSameSubroutine(Lorg/eclipse/persistence/internal/libraries/asm/Label;)Z=-
+org/eclipse/persistence/internal/libraries/asm/Label.addToSubroutine(JI)V=-
+org/eclipse/persistence/internal/libraries/asm/Label.visitSubroutine(Lorg/eclipse/persistence/internal/libraries/asm/Label;JI)V=-
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink.properties b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink.properties
index f17e8c4..80ee89f 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink.properties
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/optimizer/shrink.properties
@@ -30,353 +30,369 @@
 
 # class mappings
 
-#org/objectweb/asm/Edge=org/objectweb/asm/a
-#org/objectweb/asm/Item=org/objectweb/asm/b
-#org/objectweb/asm/FieldWriter=org/objectweb/asm/c
-#org/objectweb/asm/MethodWriter=org/objectweb/asm/d
-#org/objectweb/asm/AnnotationWriter=org/objectweb/asm/e
-#org/objectweb/asm/Context=org/objectweb/asm/f
+#org/eclipse/persistence/internal/libraries/asm/Edge=org/objectweb/asm/a
+#org/eclipse/persistence/internal/libraries/asm/Item=org/eclipse/persistence/internal/libraries/asm/b
+#org/eclipse/persistence/internal/libraries/asm/FieldWriter=org/eclipse/persistence/internal/libraries/asm/c
+#org/eclipse/persistence/internal/libraries/asm/MethodWriter=org/eclipse/persistence/internal/libraries/asm/d
+#org/eclipse/persistence/internal/libraries/asm/AnnotationWriter=org/eclipse/persistence/internal/libraries/asm/e
+#org/eclipse/persistence/internal/libraries/asm/Context=org/eclipse/persistence/internal/libraries/asm/f
 
 java/lang/StringBuilder=java/lang/StringBuffer
 
 
 # field mappings
 
-org/objectweb/asm/AnnotationWriter.cw=a
-org/objectweb/asm/AnnotationWriter.size=b
-org/objectweb/asm/AnnotationWriter.named=c
-org/objectweb/asm/AnnotationWriter.bv=d
-org/objectweb/asm/AnnotationWriter.parent=e
-org/objectweb/asm/AnnotationWriter.offset=f
-org/objectweb/asm/AnnotationWriter.next=g
-org/objectweb/asm/AnnotationWriter.prev=h
+org/eclipse/persistence/internal/libraries/asm/AnnotationWriter.cw=a
+org/eclipse/persistence/internal/libraries/asm/AnnotationWriter.size=b
+org/eclipse/persistence/internal/libraries/asm/AnnotationWriter.named=c
+org/eclipse/persistence/internal/libraries/asm/AnnotationWriter.bv=d
+org/eclipse/persistence/internal/libraries/asm/AnnotationWriter.parent=e
+org/eclipse/persistence/internal/libraries/asm/AnnotationWriter.offset=f
+org/eclipse/persistence/internal/libraries/asm/AnnotationWriter.next=g
+org/eclipse/persistence/internal/libraries/asm/AnnotationWriter.prev=h
 
-org/objectweb/asm/Attribute.next=a
-org/objectweb/asm/Attribute.value=b
+org/eclipse/persistence/internal/libraries/asm/Attribute.next=a
+org/eclipse/persistence/internal/libraries/asm/Attribute.value=b
 
-org/objectweb/asm/ByteVector.data=a
-org/objectweb/asm/ByteVector.length=b
+org/eclipse/persistence/internal/libraries/asm/ByteVector.data=a
+org/eclipse/persistence/internal/libraries/asm/ByteVector.length=b
 
-org/objectweb/asm/ClassReader.items=a
-org/objectweb/asm/ClassReader.strings=c
-org/objectweb/asm/ClassReader.maxStringLength=d
-#org/objectweb/asm/ClassReader.header=e
+org/eclipse/persistence/internal/libraries/asm/ClassReader.items=a
+org/eclipse/persistence/internal/libraries/asm/ClassReader.strings=c
+org/eclipse/persistence/internal/libraries/asm/ClassReader.maxStringLength=d
+#org/eclipse/persistence/internal/libraries/asm/ClassReader.header=e
 
-org/objectweb/asm/Context.attrs=a
-org/objectweb/asm/Context.flags=b
-org/objectweb/asm/Context.buffer=c
-org/objectweb/asm/Context.bootstrapMethods=d
-org/objectweb/asm/Context.access=e
-org/objectweb/asm/Context.name=f
-org/objectweb/asm/Context.desc=g
-org/objectweb/asm/Context.labels=h
-org/objectweb/asm/Context.typeRef=i
-org/objectweb/asm/Context.typePath=j
-org/objectweb/asm/Context.offset=k
-org/objectweb/asm/Context.start=l
-org/objectweb/asm/Context.end=m
-org/objectweb/asm/Context.index=n
-org/objectweb/asm/Context.offset=o
-org/objectweb/asm/Context.mode=p
-org/objectweb/asm/Context.localCount=q
-org/objectweb/asm/Context.localDiff=r
-org/objectweb/asm/Context.local=s
-org/objectweb/asm/Context.stackCount=t
-org/objectweb/asm/Context.stack=u
+org/eclipse/persistence/internal/libraries/asm/Context.attrs=a
+org/eclipse/persistence/internal/libraries/asm/Context.flags=b
+org/eclipse/persistence/internal/libraries/asm/Context.buffer=c
+org/eclipse/persistence/internal/libraries/asm/Context.bootstrapMethods=d
+org/eclipse/persistence/internal/libraries/asm/Context.access=e
+org/eclipse/persistence/internal/libraries/asm/Context.name=f
+org/eclipse/persistence/internal/libraries/asm/Context.desc=g
+org/eclipse/persistence/internal/libraries/asm/Context.labels=h
+org/eclipse/persistence/internal/libraries/asm/Context.typeRef=i
+org/eclipse/persistence/internal/libraries/asm/Context.typePath=j
+org/eclipse/persistence/internal/libraries/asm/Context.offset=k
+org/eclipse/persistence/internal/libraries/asm/Context.start=l
+org/eclipse/persistence/internal/libraries/asm/Context.end=m
+org/eclipse/persistence/internal/libraries/asm/Context.index=n
+org/eclipse/persistence/internal/libraries/asm/Context.offset=o
+org/eclipse/persistence/internal/libraries/asm/Context.mode=p
+org/eclipse/persistence/internal/libraries/asm/Context.localCount=q
+org/eclipse/persistence/internal/libraries/asm/Context.localDiff=r
+org/eclipse/persistence/internal/libraries/asm/Context.local=s
+org/eclipse/persistence/internal/libraries/asm/Context.stackCount=t
+org/eclipse/persistence/internal/libraries/asm/Context.stack=u
 
-org/objectweb/asm/ClassWriter.TYPE=a
-org/objectweb/asm/ClassWriter.version=b
-org/objectweb/asm/ClassWriter.index=c
-org/objectweb/asm/ClassWriter.pool=d
-org/objectweb/asm/ClassWriter.items=e
-org/objectweb/asm/ClassWriter.threshold=f
-org/objectweb/asm/ClassWriter.key=g
-org/objectweb/asm/ClassWriter.key2=h
-org/objectweb/asm/ClassWriter.key3=i
-org/objectweb/asm/ClassWriter.key4=j
-org/objectweb/asm/ClassWriter.access=k
-org/objectweb/asm/ClassWriter.name=l
-org/objectweb/asm/ClassWriter.signature=m
-org/objectweb/asm/ClassWriter.superName=n
-org/objectweb/asm/ClassWriter.interfaceCount=o
-org/objectweb/asm/ClassWriter.interfaces=p
-org/objectweb/asm/ClassWriter.sourceFile=q
-org/objectweb/asm/ClassWriter.sourceDebug=r
-org/objectweb/asm/ClassWriter.enclosingMethodOwner=s
-org/objectweb/asm/ClassWriter.enclosingMethod=t
-org/objectweb/asm/ClassWriter.anns=u
-org/objectweb/asm/ClassWriter.ianns=v
-org/objectweb/asm/ClassWriter.tanns=N
-org/objectweb/asm/ClassWriter.itanns=O
-org/objectweb/asm/ClassWriter.attrs=w
-org/objectweb/asm/ClassWriter.innerClassesCount=x
-org/objectweb/asm/ClassWriter.innerClasses=y
-org/objectweb/asm/ClassWriter.bootstrapMethodsCount=z
-org/objectweb/asm/ClassWriter.bootstrapMethods=A
-org/objectweb/asm/ClassWriter.firstField=B
-org/objectweb/asm/ClassWriter.lastField=C
-org/objectweb/asm/ClassWriter.firstMethod=D
-org/objectweb/asm/ClassWriter.lastMethod=E
-org/objectweb/asm/ClassWriter.computeMaxs=F
-org/objectweb/asm/ClassWriter.typeCount=G
-org/objectweb/asm/ClassWriter.typeTable=H
-org/objectweb/asm/ClassWriter.thisName=I
-org/objectweb/asm/ClassWriter.computeFrames=J
-org/objectweb/asm/ClassWriter.computeMaxs=K
-org/objectweb/asm/ClassWriter.invalidFrames=L
-org/objectweb/asm/ClassWriter.cr=M
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.TYPE=a
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.version=b
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.index=c
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.pool=d
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.items=e
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.threshold=f
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.key=g
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.key2=h
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.key3=i
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.key4=j
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.access=k
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.name=l
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.signature=m
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.superName=n
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.interfaceCount=o
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.interfaces=p
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.sourceFile=q
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.sourceDebug=r
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.enclosingMethodOwner=s
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.enclosingMethod=t
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.anns=u
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.ianns=v
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.tanns=N
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.itanns=O
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.attrs=w
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.innerClassesCount=x
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.innerClasses=y
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.bootstrapMethodsCount=z
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.bootstrapMethods=A
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.firstField=B
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.lastField=C
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.firstMethod=D
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.lastMethod=E
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.computeMaxs=F
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.typeCount=G
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.typeTable=H
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.thisName=I
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.computeFrames=J
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.computeMaxs=K
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.invalidFrames=L
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.cr=M
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.moduleWriter=N
     
-org/objectweb/asm/Edge.info=a
-org/objectweb/asm/Edge.successor=b
-org/objectweb/asm/Edge.next=c
+org/eclipse/persistence/internal/libraries/asm/Edge.info=a
+org/eclipse/persistence/internal/libraries/asm/Edge.successor=b
+org/eclipse/persistence/internal/libraries/asm/Edge.next=c
 
-org/objectweb/asm/Handler.start=a
-org/objectweb/asm/Handler.end=b
-org/objectweb/asm/Handler.handler=c
-org/objectweb/asm/Handler.desc=d
-org/objectweb/asm/Handler.type=e
-org/objectweb/asm/Handler.next=f
+org/eclipse/persistence/internal/libraries/asm/Handler.start=a
+org/eclipse/persistence/internal/libraries/asm/Handler.end=b
+org/eclipse/persistence/internal/libraries/asm/Handler.handler=c
+org/eclipse/persistence/internal/libraries/asm/Handler.desc=d
+org/eclipse/persistence/internal/libraries/asm/Handler.type=e
+org/eclipse/persistence/internal/libraries/asm/Handler.next=f
 
-org/objectweb/asm/FieldWriter.cw=b
-org/objectweb/asm/FieldWriter.access=c
-org/objectweb/asm/FieldWriter.name=d
-org/objectweb/asm/FieldWriter.desc=e
-org/objectweb/asm/FieldWriter.signature=f
-org/objectweb/asm/FieldWriter.value=g
-org/objectweb/asm/FieldWriter.anns=h
-org/objectweb/asm/FieldWriter.ianns=i
-org/objectweb/asm/FieldWriter.tanns=k
-org/objectweb/asm/FieldWriter.itanns=l
-org/objectweb/asm/FieldWriter.attrs=j
+org/eclipse/persistence/internal/libraries/asm/FieldWriter.cw=b
+org/eclipse/persistence/internal/libraries/asm/FieldWriter.access=c
+org/eclipse/persistence/internal/libraries/asm/FieldWriter.name=d
+org/eclipse/persistence/internal/libraries/asm/FieldWriter.desc=e
+org/eclipse/persistence/internal/libraries/asm/FieldWriter.signature=f
+org/eclipse/persistence/internal/libraries/asm/FieldWriter.value=g
+org/eclipse/persistence/internal/libraries/asm/FieldWriter.anns=h
+org/eclipse/persistence/internal/libraries/asm/FieldWriter.ianns=i
+org/eclipse/persistence/internal/libraries/asm/FieldWriter.tanns=k
+org/eclipse/persistence/internal/libraries/asm/FieldWriter.itanns=l
+org/eclipse/persistence/internal/libraries/asm/FieldWriter.attrs=j
 
-org/objectweb/asm/Item.index=a
-org/objectweb/asm/Item.type=b
-org/objectweb/asm/Item.intVal=c
-org/objectweb/asm/Item.longVal=d
-org/objectweb/asm/Item.strVal1=g
-org/objectweb/asm/Item.strVal2=h
-org/objectweb/asm/Item.strVal3=i
-org/objectweb/asm/Item.hashCode=j
-org/objectweb/asm/Item.next=k
+org/eclipse/persistence/internal/libraries/asm/Item.index=a
+org/eclipse/persistence/internal/libraries/asm/Item.type=b
+org/eclipse/persistence/internal/libraries/asm/Item.intVal=c
+org/eclipse/persistence/internal/libraries/asm/Item.longVal=d
+org/eclipse/persistence/internal/libraries/asm/Item.strVal1=g
+org/eclipse/persistence/internal/libraries/asm/Item.strVal2=h
+org/eclipse/persistence/internal/libraries/asm/Item.strVal3=i
+org/eclipse/persistence/internal/libraries/asm/Item.hashCode=j
+org/eclipse/persistence/internal/libraries/asm/Item.next=k
 
-org/objectweb/asm/Label.status=a
-org/objectweb/asm/Label.line=b
-org/objectweb/asm/Label.position=c
-org/objectweb/asm/Label.referenceCount=d
-org/objectweb/asm/Label.srcAndRefPositions=e
-org/objectweb/asm/Label.inputStackTop=f
-org/objectweb/asm/Label.outputStackMax=g
-org/objectweb/asm/Label.frame=h
-org/objectweb/asm/Label.successor=i
-org/objectweb/asm/Label.successors=j
-org/objectweb/asm/Label.next=k
+org/eclipse/persistence/internal/libraries/asm/Label.status=a
+org/eclipse/persistence/internal/libraries/asm/Label.line=b
+org/eclipse/persistence/internal/libraries/asm/Label.position=c
+org/eclipse/persistence/internal/libraries/asm/Label.referenceCount=d
+org/eclipse/persistence/internal/libraries/asm/Label.srcAndRefPositions=e
+org/eclipse/persistence/internal/libraries/asm/Label.inputStackTop=f
+org/eclipse/persistence/internal/libraries/asm/Label.outputStackMax=g
+org/eclipse/persistence/internal/libraries/asm/Label.frame=h
+org/eclipse/persistence/internal/libraries/asm/Label.successor=i
+org/eclipse/persistence/internal/libraries/asm/Label.successors=j
+org/eclipse/persistence/internal/libraries/asm/Label.next=k
 
-org/objectweb/asm/Frame.SIZE=a
-org/objectweb/asm/Frame.owner=b
-org/objectweb/asm/Frame.inputLocals=c
-org/objectweb/asm/Frame.inputStack=d
-org/objectweb/asm/Frame.outputLocals=e
-org/objectweb/asm/Frame.outputStack=f
-org/objectweb/asm/Frame.outputStackTop=g
-org/objectweb/asm/Frame.initializationCount=h
-org/objectweb/asm/Frame.initializations=i
+org/eclipse/persistence/internal/libraries/asm/Frame.SIZE=a
+org/eclipse/persistence/internal/libraries/asm/Frame.owner=b
+org/eclipse/persistence/internal/libraries/asm/Frame.inputLocals=c
+org/eclipse/persistence/internal/libraries/asm/Frame.inputStack=d
+org/eclipse/persistence/internal/libraries/asm/Frame.outputLocals=e
+org/eclipse/persistence/internal/libraries/asm/Frame.outputStack=f
+org/eclipse/persistence/internal/libraries/asm/Frame.outputStackTop=g
+org/eclipse/persistence/internal/libraries/asm/Frame.initializationCount=h
+org/eclipse/persistence/internal/libraries/asm/Frame.initializations=i
 
-org/objectweb/asm/MethodWriter.cw=b
-org/objectweb/asm/MethodWriter.access=c
-org/objectweb/asm/MethodWriter.name=d
-org/objectweb/asm/MethodWriter.desc=e
-org/objectweb/asm/MethodWriter.descriptor=f
-org/objectweb/asm/MethodWriter.signature=g
-org/objectweb/asm/MethodWriter.classReaderOffset=h
-org/objectweb/asm/MethodWriter.classReaderLength=i
-org/objectweb/asm/MethodWriter.exceptionCount=j
-org/objectweb/asm/MethodWriter.exceptions=k
-org/objectweb/asm/MethodWriter.annd=l
-org/objectweb/asm/MethodWriter.anns=m
-org/objectweb/asm/MethodWriter.ianns=n
-org/objectweb/asm/MethodWriter.tanns=U
-org/objectweb/asm/MethodWriter.itanns=V
-org/objectweb/asm/MethodWriter.panns=o
-org/objectweb/asm/MethodWriter.ipanns=p
-org/objectweb/asm/MethodWriter.attrs=q
-org/objectweb/asm/MethodWriter.code=r
-org/objectweb/asm/MethodWriter.maxStack=s
-org/objectweb/asm/MethodWriter.maxLocals=t
-org/objectweb/asm/MethodWriter.currentLocals=T
-org/objectweb/asm/MethodWriter.frameCount=u
-org/objectweb/asm/MethodWriter.stackMap=v
-org/objectweb/asm/MethodWriter.previousFrameOffset=w
-org/objectweb/asm/MethodWriter.previousFrame=x
-#org/objectweb/asm/MethodWriter.frameIndex=y
-org/objectweb/asm/MethodWriter.frame=z
-org/objectweb/asm/MethodWriter.handlerCount=A
-org/objectweb/asm/MethodWriter.firstHandler=B
-org/objectweb/asm/MethodWriter.lastHandler=C
-org/objectweb/asm/MethodWriter.methodParametersCount=Z
-org/objectweb/asm/MethodWriter.methodParameters=$
-org/objectweb/asm/MethodWriter.localVarCount=D
-org/objectweb/asm/MethodWriter.localVar=E
-org/objectweb/asm/MethodWriter.localVarTypeCount=F
-org/objectweb/asm/MethodWriter.localVarType=G
-org/objectweb/asm/MethodWriter.lineNumberCount=H
-org/objectweb/asm/MethodWriter.lineNumber=I
-org/objectweb/asm/MethodWriter.lastCodeOffset=Y
-org/objectweb/asm/MethodWriter.ctanns=W
-org/objectweb/asm/MethodWriter.ictanns=X
-org/objectweb/asm/MethodWriter.cattrs=J
-org/objectweb/asm/MethodWriter.resize=K
-org/objectweb/asm/MethodWriter.subroutines=L
-org/objectweb/asm/MethodWriter.compute=M
-org/objectweb/asm/MethodWriter.labels=N
-org/objectweb/asm/MethodWriter.previousBlock=O
-org/objectweb/asm/MethodWriter.currentBlock=P
-org/objectweb/asm/MethodWriter.stackSize=Q
-org/objectweb/asm/MethodWriter.maxStackSize=R
-org/objectweb/asm/MethodWriter.synthetics=S
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.cw=b
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.access=c
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.name=d
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.desc=e
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.descriptor=f
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.signature=g
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.classReaderOffset=h
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.classReaderLength=i
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.exceptionCount=j
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.exceptions=k
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.annd=l
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.anns=m
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.ianns=n
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.tanns=U
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.itanns=V
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.panns=o
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.ipanns=p
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.attrs=q
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.code=r
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.maxStack=s
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.maxLocals=t
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.currentLocals=T
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.frameCount=u
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.stackMap=v
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.previousFrameOffset=w
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.previousFrame=x
+#org/eclipse/persistence/internal/libraries/asm/MethodWriter.frameIndex=y
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.frame=z
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.handlerCount=A
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.firstHandler=B
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.lastHandler=C
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.methodParametersCount=Z
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.methodParameters=$
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.localVarCount=D
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.localVar=E
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.localVarTypeCount=F
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.localVarType=G
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.lineNumberCount=H
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.lineNumber=I
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.lastCodeOffset=Y
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.ctanns=W
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.ictanns=X
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.cattrs=J
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.resize=K
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.subroutines=L
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.compute=M
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.labels=N
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.previousBlock=O
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.currentBlock=P
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.stackSize=Q
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.maxStackSize=R
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.synthetics=S
 
-org/objectweb/asm/Type.sort=a
-org/objectweb/asm/Type.buf=b
-org/objectweb/asm/Type.off=c
-org/objectweb/asm/Type.len=d
+org/eclipse/persistence/internal/libraries/asm/Type.sort=a
+org/eclipse/persistence/internal/libraries/asm/Type.buf=b
+org/eclipse/persistence/internal/libraries/asm/Type.off=c
+org/eclipse/persistence/internal/libraries/asm/Type.len=d
 
-org/objectweb/asm/TypeReference.value=a
+org/eclipse/persistence/internal/libraries/asm/TypeReference.value=a
 
-org/objectweb/asm/TypePath.b=a
-org/objectweb/asm/TypePath.offset=b
+org/eclipse/persistence/internal/libraries/asm/TypePath.b=a
+org/eclipse/persistence/internal/libraries/asm/TypePath.offset=b
 
-org/objectweb/asm/Handle.tag=a
-org/objectweb/asm/Handle.owner=b
-org/objectweb/asm/Handle.name=c
-org/objectweb/asm/Handle.desc=d
-org/objectweb/asm/Handle.itf=e
+org/eclipse/persistence/internal/libraries/asm/Handle.tag=a
+org/eclipse/persistence/internal/libraries/asm/Handle.owner=b
+org/eclipse/persistence/internal/libraries/asm/Handle.name=c
+org/eclipse/persistence/internal/libraries/asm/Handle.desc=d
+org/eclipse/persistence/internal/libraries/asm/Handle.itf=e
 
-org/objectweb/asm/signature/SignatureReader.signature=a
+org/eclipse/persistence/internal/libraries/asm/ModuleWriter.cw=a
+org/eclipse/persistence/internal/libraries/asm/ModuleWriter.size=b
+org/eclipse/persistence/internal/libraries/asm/ModuleWriter.requireCount=c
+org/eclipse/persistence/internal/libraries/asm/ModuleWriter.requires=d
+org/eclipse/persistence/internal/libraries/asm/ModuleWriter.exportCount=e
+org/eclipse/persistence/internal/libraries/asm/ModuleWriter.exports=f
+org/eclipse/persistence/internal/libraries/asm/ModuleWriter.useCount=g
+org/eclipse/persistence/internal/libraries/asm/ModuleWriter.uses=h
+org/eclipse/persistence/internal/libraries/asm/ModuleWriter.provideCount=i
+org/eclipse/persistence/internal/libraries/asm/ModuleWriter.provides=j
 
-org/objectweb/asm/signature/SignatureWriter.buf=a
-org/objectweb/asm/signature/SignatureWriter.hasFormals=b
-org/objectweb/asm/signature/SignatureWriter.hasParameters=c
-org/objectweb/asm/signature/SignatureWriter.argumentStack=d
+org/eclipse/persistence/internal/libraries/asm/signature/SignatureReader.signature=a
+
+org/eclipse/persistence/internal/libraries/asm/signature/SignatureWriter.buf=a
+org/eclipse/persistence/internal/libraries/asm/signature/SignatureWriter.hasFormals=b
+org/eclipse/persistence/internal/libraries/asm/signature/SignatureWriter.hasParameters=c
+org/eclipse/persistence/internal/libraries/asm/signature/SignatureWriter.argumentStack=d
 
 # method mappings
 
-org/objectweb/asm/AnnotationWriter.getSize()I=a
-org/objectweb/asm/AnnotationWriter.put([Lorg/objectweb/asm/AnnotationWriter;ILorg/objectweb/asm/ByteVector;)V=a
-org/objectweb/asm/AnnotationWriter.put(Lorg/objectweb/asm/ByteVector;)V=a
-org/objectweb/asm/AnnotationWriter.putTarget(ILorg/objectweb/asm/TypePath;Lorg/objectweb/asm/ByteVector;)V=a
+org/eclipse/persistence/internal/libraries/asm/AnnotationWriter.getSize()I=a
+org/eclipse/persistence/internal/libraries/asm/AnnotationWriter.put([Lorg/eclipse/persistence/internal/libraries/asm/AnnotationWriter;ILorg/eclipse/persistence/internal/libraries/asm/ByteVector;)V=a
+org/eclipse/persistence/internal/libraries/asm/AnnotationWriter.put(Lorg/eclipse/persistence/internal/libraries/asm/ByteVector;)V=a
+org/eclipse/persistence/internal/libraries/asm/AnnotationWriter.putTarget(ILorg/eclipse/persistence/internal/libraries/asm/TypePath;Lorg/eclipse/persistence/internal/libraries/asm/ByteVector;)V=a
 
-org/objectweb/asm/Attribute.getCount()I=a
-org/objectweb/asm/Attribute.getSize(Lorg/objectweb/asm/ClassWriter;[BIII)I=a
-org/objectweb/asm/Attribute.put(Lorg/objectweb/asm/ClassWriter;[BIIILorg/objectweb/asm/ByteVector;)V=a
+org/eclipse/persistence/internal/libraries/asm/Attribute.getCount()I=a
+org/eclipse/persistence/internal/libraries/asm/Attribute.getSize(Lorg/eclipse/persistence/internal/libraries/asm/ClassWriter;[BIII)I=a
+org/eclipse/persistence/internal/libraries/asm/Attribute.put(Lorg/eclipse/persistence/internal/libraries/asm/ClassWriter;[BIIILorg/eclipse/persistence/internal/libraries/asm/ByteVector;)V=a
 
-org/objectweb/asm/ByteVector.enlarge(I)V=a
-org/objectweb/asm/ByteVector.put11(II)Lorg/objectweb/asm/ByteVector;=a
-org/objectweb/asm/ByteVector.put12(II)Lorg/objectweb/asm/ByteVector;=b
-org/objectweb/asm/ByteVector.encodeUTF8(Ljava/lang/String;II)Lorg/objectweb/asm/ByteVector;=c
+org/eclipse/persistence/internal/libraries/asm/ByteVector.enlarge(I)V=a
+org/eclipse/persistence/internal/libraries/asm/ByteVector.put11(II)Lorg/eclipse/persistence/internal/libraries/asm/ByteVector;=a
+org/eclipse/persistence/internal/libraries/asm/ByteVector.put12(II)Lorg/eclipse/persistence/internal/libraries/asm/ByteVector;=b
+org/eclipse/persistence/internal/libraries/asm/ByteVector.encodeUTF8(Ljava/lang/String;II)Lorg/eclipse/persistence/internal/libraries/asm/ByteVector;=c
 
-org/objectweb/asm/ClassReader.copyPool(Lorg/objectweb/asm/ClassWriter;)V=a
-org/objectweb/asm/ClassReader.copyBootstrapMethods(Lorg/objectweb/asm/ClassWriter;[Lorg/objectweb/asm/Item;[C)V=a
-org/objectweb/asm/ClassReader.readField(Lorg/objectweb/asm/ClassVisitor;Lorg/objectweb/asm/Context;I)I=a
-org/objectweb/asm/ClassReader.readMethod(Lorg/objectweb/asm/ClassVisitor;Lorg/objectweb/asm/Context;I)I=b
-org/objectweb/asm/ClassReader.readCode(Lorg/objectweb/asm/MethodVisitor;Lorg/objectweb/asm/Context;I)V=a
-org/objectweb/asm/ClassReader.readTypeAnnotations(Lorg/objectweb/asm/MethodVisitor;Lorg/objectweb/asm/Context;IZ)[I=a
-org/objectweb/asm/ClassReader.readAnnotationTarget(Lorg/objectweb/asm/Context;I)I=a
-org/objectweb/asm/ClassReader.readAnnotationValues(I[CZLorg/objectweb/asm/AnnotationVisitor;)I=a
-org/objectweb/asm/ClassReader.readAnnotationValue(I[CLjava/lang/String;Lorg/objectweb/asm/AnnotationVisitor;)I=a
-org/objectweb/asm/ClassReader.getAttributes()I=a
-org/objectweb/asm/ClassReader.readAttribute([Lorg/objectweb/asm/Attribute;Ljava/lang/String;II[CI[Lorg/objectweb/asm/Label;)Lorg/objectweb/asm/Attribute;=a
-org/objectweb/asm/ClassReader.readClass(Ljava/io/InputStream;Z)[B=a
-org/objectweb/asm/ClassReader.readParameterAnnotations(Lorg/objectweb/asm/MethodVisitor;Lorg/objectweb/asm/Context;IZ)V=b
-org/objectweb/asm/ClassReader.readUTF(II[C)Ljava/lang/String;=a
-org/objectweb/asm/ClassReader.getImplicitFrame(Lorg/objectweb/asm/Context;)V=a
-org/objectweb/asm/ClassReader.readFrame(IZZLorg/objectweb/asm/Context;)I=a
-org/objectweb/asm/ClassReader.readFrameType([Ljava/lang/Object;II[C[Lorg/objectweb/asm/Label;)I=a
+org/eclipse/persistence/internal/libraries/asm/ClassReader.copyPool(Lorg/eclipse/persistence/internal/libraries/asm/ClassWriter;)V=a
+org/eclipse/persistence/internal/libraries/asm/ClassReader.copyBootstrapMethods(Lorg/eclipse/persistence/internal/libraries/asm/ClassWriter;[Lorg/eclipse/persistence/internal/libraries/asm/Item;[C)V=a
+org/eclipse/persistence/internal/libraries/asm/ClassReader.readField(Lorg/eclipse/persistence/internal/libraries/asm/ClassVisitor;Lorg/eclipse/persistence/internal/libraries/asm/Context;I)I=a
+org/eclipse/persistence/internal/libraries/asm/ClassReader.readMethod(Lorg/eclipse/persistence/internal/libraries/asm/ClassVisitor;Lorg/eclipse/persistence/internal/libraries/asm/Context;I)I=b
+org/eclipse/persistence/internal/libraries/asm/ClassReader.readCode(Lorg/eclipse/persistence/internal/libraries/asm/MethodVisitor;Lorg/eclipse/persistence/internal/libraries/asm/Context;I)V=a
+org/eclipse/persistence/internal/libraries/asm/ClassReader.readTypeAnnotations(Lorg/eclipse/persistence/internal/libraries/asm/MethodVisitor;Lorg/eclipse/persistence/internal/libraries/asm/Context;IZ)[I=a
+org/eclipse/persistence/internal/libraries/asm/ClassReader.readAnnotationTarget(Lorg/eclipse/persistence/internal/libraries/asm/Context;I)I=a
+org/eclipse/persistence/internal/libraries/asm/ClassReader.readAnnotationValues(I[CZLorg/eclipse/persistence/internal/libraries/asm/AnnotationVisitor;)I=a
+org/eclipse/persistence/internal/libraries/asm/ClassReader.readAnnotationValue(I[CLjava/lang/String;Lorg/eclipse/persistence/internal/libraries/asm/AnnotationVisitor;)I=a
+org/eclipse/persistence/internal/libraries/asm/ClassReader.getAttributes()I=a
+org/eclipse/persistence/internal/libraries/asm/ClassReader.readAttribute([Lorg/eclipse/persistence/internal/libraries/asm/Attribute;Ljava/lang/String;II[CI[Lorg/eclipse/persistence/internal/libraries/asm/Label;)Lorg/eclipse/persistence/internal/libraries/asm/Attribute;=a
+org/eclipse/persistence/internal/libraries/asm/ClassReader.readClass(Ljava/io/InputStream;Z)[B=a
+org/eclipse/persistence/internal/libraries/asm/ClassReader.readParameterAnnotations(Lorg/eclipse/persistence/internal/libraries/asm/MethodVisitor;Lorg/eclipse/persistence/internal/libraries/asm/Context;IZ)V=b
+org/eclipse/persistence/internal/libraries/asm/ClassReader.readUTF(II[C)Ljava/lang/String;=a
+org/eclipse/persistence/internal/libraries/asm/ClassReader.getImplicitFrame(Lorg/eclipse/persistence/internal/libraries/asm/Context;)V=a
+org/eclipse/persistence/internal/libraries/asm/ClassReader.readFrame(IZZLorg/eclipse/persistence/internal/libraries/asm/Context;)I=a
+org/eclipse/persistence/internal/libraries/asm/ClassReader.readFrameType([Ljava/lang/Object;II[C[Lorg/eclipse/persistence/internal/libraries/asm/Label;)I=a
+org/eclipse/persistence/internal/libraries/asm/ClassReader.readModule(Lorg/eclipse/persistence/internal/libraries/asm/ClassVisitor;Lorg/eclipse/persistence/internal/libraries/asm/Context;I)V=c
 
-org/objectweb/asm/ClassWriter.get(Lorg/objectweb/asm/Item;)Lorg/objectweb/asm/Item;=a
-org/objectweb/asm/ClassWriter.newClassItem(Ljava/lang/String;)Lorg/objectweb/asm/Item;=a
-org/objectweb/asm/ClassWriter.newConstItem(Ljava/lang/Object;)Lorg/objectweb/asm/Item;=a
-org/objectweb/asm/ClassWriter.newDouble(D)Lorg/objectweb/asm/Item;=a
-org/objectweb/asm/ClassWriter.newFloat(F)Lorg/objectweb/asm/Item;=a
-org/objectweb/asm/ClassWriter.newInteger(I)Lorg/objectweb/asm/Item;=a
-org/objectweb/asm/ClassWriter.newLong(J)Lorg/objectweb/asm/Item;=a
-org/objectweb/asm/ClassWriter.newMethodItem(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lorg/objectweb/asm/Item;=a
-org/objectweb/asm/ClassWriter.newString(Ljava/lang/String;)Lorg/objectweb/asm/Item;=b
-org/objectweb/asm/ClassWriter.put122(III)V=a
-org/objectweb/asm/ClassWriter.put112(III)V=b
-org/objectweb/asm/ClassWriter.put(Lorg/objectweb/asm/Item;)V=b
-org/objectweb/asm/ClassWriter.newFieldItem(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/objectweb/asm/Item;=a
-org/objectweb/asm/ClassWriter.addType(Ljava/lang/String;)I=c
-org/objectweb/asm/ClassWriter.addUninitializedType(Ljava/lang/String;I)I=a
-org/objectweb/asm/ClassWriter.addType(Lorg/objectweb/asm/Item;)Lorg/objectweb/asm/Item;=c
-org/objectweb/asm/ClassWriter.getMergedType(II)I=a
-org/objectweb/asm/ClassWriter.newNameTypeItem(Ljava/lang/String;Ljava/lang/String;)Lorg/objectweb/asm/Item;=a
-org/objectweb/asm/ClassWriter.newMethodTypeItem(Ljava/lang/String;)Lorg/objectweb/asm/Item;=c
-org/objectweb/asm/ClassWriter.newHandleItem(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lorg/objectweb/asm/Item;=a
-org/objectweb/asm/ClassWriter.newInvokeDynamicItem(Ljava/lang/String;Ljava/lang/String;Lorg/objectweb/asm/Handle;[Ljava/lang/Object;)Lorg/objectweb/asm/Item;=a
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.get(Lorg/eclipse/persistence/internal/libraries/asm/Item;)Lorg/eclipse/persistence/internal/libraries/asm/Item;=a
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.newClassItem(Ljava/lang/String;)Lorg/eclipse/persistence/internal/libraries/asm/Item;=a
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.newConstItem(Ljava/lang/Object;)Lorg/eclipse/persistence/internal/libraries/asm/Item;=a
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.newDouble(D)Lorg/eclipse/persistence/internal/libraries/asm/Item;=a
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.newFloat(F)Lorg/eclipse/persistence/internal/libraries/asm/Item;=a
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.newInteger(I)Lorg/eclipse/persistence/internal/libraries/asm/Item;=a
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.newLong(J)Lorg/eclipse/persistence/internal/libraries/asm/Item;=a
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.newMethodItem(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lorg/eclipse/persistence/internal/libraries/asm/Item;=a
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.newString(Ljava/lang/String;)Lorg/eclipse/persistence/internal/libraries/asm/Item;=b
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.put122(III)V=a
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.put112(III)V=b
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.put(Lorg/eclipse/persistence/internal/libraries/asm/Item;)V=b
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.newFieldItem(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/persistence/internal/libraries/asm/Item;=a
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.addType(Ljava/lang/String;)I=c
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.addUninitializedType(Ljava/lang/String;I)I=a
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.addType(Lorg/eclipse/persistence/internal/libraries/asm/Item;)Lorg/eclipse/persistence/internal/libraries/asm/Item;=c
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.getMergedType(II)I=a
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.newNameTypeItem(Ljava/lang/String;Ljava/lang/String;)Lorg/eclipse/persistence/internal/libraries/asm/Item;=a
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.newMethodTypeItem(Ljava/lang/String;)Lorg/eclipse/persistence/internal/libraries/asm/Item;=c
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.newHandleItem(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lorg/eclipse/persistence/internal/libraries/asm/Item;=a
+org/eclipse/persistence/internal/libraries/asm/ClassWriter.newInvokeDynamicItem(Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/persistence/internal/libraries/asm/Handle;[Ljava/lang/Object;)Lorg/eclipse/persistence/internal/libraries/asm/Item;=a
 
-org/objectweb/asm/FieldWriter.getSize()I=a
-org/objectweb/asm/FieldWriter.put(Lorg/objectweb/asm/ByteVector;)V=a
+org/eclipse/persistence/internal/libraries/asm/FieldWriter.getSize()I=a
+org/eclipse/persistence/internal/libraries/asm/FieldWriter.put(Lorg/eclipse/persistence/internal/libraries/asm/ByteVector;)V=a
 
-org/objectweb/asm/Item.isEqualTo(Lorg/objectweb/asm/Item;)Z=a
-org/objectweb/asm/Item.set(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V=a
-org/objectweb/asm/Item.set(D)V=a
-org/objectweb/asm/Item.set(F)V=a
-org/objectweb/asm/Item.set(I)V=a
-org/objectweb/asm/Item.set(J)V=a
-org/objectweb/asm/Item.set(Ljava/lang/String;Ljava/lang/String;I)V=a
-org/objectweb/asm/Item.set(II)V=a
+org/eclipse/persistence/internal/libraries/asm/Item.isEqualTo(Lorg/eclipse/persistence/internal/libraries/asm/Item;)Z=a
+org/eclipse/persistence/internal/libraries/asm/Item.set(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V=a
+org/eclipse/persistence/internal/libraries/asm/Item.set(D)V=a
+org/eclipse/persistence/internal/libraries/asm/Item.set(F)V=a
+org/eclipse/persistence/internal/libraries/asm/Item.set(I)V=a
+org/eclipse/persistence/internal/libraries/asm/Item.set(J)V=a
+org/eclipse/persistence/internal/libraries/asm/Item.set(Ljava/lang/String;Ljava/lang/String;I)V=a
+org/eclipse/persistence/internal/libraries/asm/Item.set(II)V=a
 
-org/objectweb/asm/Label.addReference(II)V=a
-org/objectweb/asm/Label.put(Lorg/objectweb/asm/MethodWriter;Lorg/objectweb/asm/ByteVector;IZ)V=a
-org/objectweb/asm/Label.resolve(Lorg/objectweb/asm/MethodWriter;I[B)Z=a
-org/objectweb/asm/Label.getFirst()Lorg/objectweb/asm/Label;=a
-org/objectweb/asm/Label.inSubroutine(J)Z=a
-org/objectweb/asm/Label.inSameSubroutine(Lorg/objectweb/asm/Label;)Z=a
-org/objectweb/asm/Label.addToSubroutine(JI)V=a
-org/objectweb/asm/Label.visitSubroutine(Lorg/objectweb/asm/Label;JI)V=b
+org/eclipse/persistence/internal/libraries/asm/Label.addReference(II)V=a
+org/eclipse/persistence/internal/libraries/asm/Label.put(Lorg/eclipse/persistence/internal/libraries/asm/MethodWriter;Lorg/eclipse/persistence/internal/libraries/asm/ByteVector;IZ)V=a
+org/eclipse/persistence/internal/libraries/asm/Label.resolve(Lorg/eclipse/persistence/internal/libraries/asm/MethodWriter;I[B)Z=a
+org/eclipse/persistence/internal/libraries/asm/Label.getFirst()Lorg/eclipse/persistence/internal/libraries/asm/Label;=a
+org/eclipse/persistence/internal/libraries/asm/Label.inSubroutine(J)Z=a
+org/eclipse/persistence/internal/libraries/asm/Label.inSameSubroutine(Lorg/eclipse/persistence/internal/libraries/asm/Label;)Z=a
+org/eclipse/persistence/internal/libraries/asm/Label.addToSubroutine(JI)V=a
+org/eclipse/persistence/internal/libraries/asm/Label.visitSubroutine(Lorg/eclipse/persistence/internal/libraries/asm/Label;JI)V=b
 
-org/objectweb/asm/Frame.get(I)I=a
-org/objectweb/asm/Frame.set(II)V=a
-org/objectweb/asm/Frame.push(I)V=b
-org/objectweb/asm/Frame.push(Lorg/objectweb/asm/ClassWriter;Ljava/lang/String;)V=a
-org/objectweb/asm/Frame.type(Lorg/objectweb/asm/ClassWriter;Ljava/lang/String;)I=b
-org/objectweb/asm/Frame.pop()I=a
-org/objectweb/asm/Frame.pop(Ljava/lang/String;)V=a
-org/objectweb/asm/Frame.pop(I)V=c
-org/objectweb/asm/Frame.init(I)V=d
-org/objectweb/asm/Frame.init(Lorg/objectweb/asm/ClassWriter;I)I=a
-org/objectweb/asm/Frame.initInputFrame(Lorg/objectweb/asm/ClassWriter;I[Lorg/objectweb/asm/Type;I)V=a
-org/objectweb/asm/Frame.execute(IILorg/objectweb/asm/ClassWriter;Lorg/objectweb/asm/Item;)V=a
-org/objectweb/asm/Frame.merge(Lorg/objectweb/asm/ClassWriter;Lorg/objectweb/asm/Frame;I)Z=a
-org/objectweb/asm/Frame.merge(Lorg/objectweb/asm/ClassWriter;I[II)Z=a
+org/eclipse/persistence/internal/libraries/asm/Frame.get(I)I=a
+org/eclipse/persistence/internal/libraries/asm/Frame.set(II)V=a
+org/eclipse/persistence/internal/libraries/asm/Frame.push(I)V=b
+org/eclipse/persistence/internal/libraries/asm/Frame.push(Lorg/eclipse/persistence/internal/libraries/asm/ClassWriter;Ljava/lang/String;)V=a
+org/eclipse/persistence/internal/libraries/asm/Frame.type(Lorg/eclipse/persistence/internal/libraries/asm/ClassWriter;Ljava/lang/String;)I=b
+org/eclipse/persistence/internal/libraries/asm/Frame.pop()I=a
+org/eclipse/persistence/internal/libraries/asm/Frame.pop(Ljava/lang/String;)V=a
+org/eclipse/persistence/internal/libraries/asm/Frame.pop(I)V=c
+org/eclipse/persistence/internal/libraries/asm/Frame.init(I)V=d
+org/eclipse/persistence/internal/libraries/asm/Frame.init(Lorg/eclipse/persistence/internal/libraries/asm/ClassWriter;I)I=a
+org/eclipse/persistence/internal/libraries/asm/Frame.initInputFrame(Lorg/eclipse/persistence/internal/libraries/asm/ClassWriter;I[Lorg/eclipse/persistence/internal/libraries/asm/Type;I)V=a
+org/eclipse/persistence/internal/libraries/asm/Frame.execute(IILorg/eclipse/persistence/internal/libraries/asm/ClassWriter;Lorg/eclipse/persistence/internal/libraries/asm/Item;)V=a
+org/eclipse/persistence/internal/libraries/asm/Frame.merge(Lorg/eclipse/persistence/internal/libraries/asm/ClassWriter;Lorg/eclipse/persistence/internal/libraries/asm/Frame;I)Z=a
+org/eclipse/persistence/internal/libraries/asm/Frame.merge(Lorg/eclipse/persistence/internal/libraries/asm/ClassWriter;I[II)Z=a
 
-org/objectweb/asm/Handler.remove(Lorg/objectweb/asm/Handler;Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;)Lorg/objectweb/asm/Handler;=a
+org/eclipse/persistence/internal/libraries/asm/Handler.remove(Lorg/eclipse/persistence/internal/libraries/asm/Handler;Lorg/eclipse/persistence/internal/libraries/asm/Label;Lorg/eclipse/persistence/internal/libraries/asm/Label;)Lorg/eclipse/persistence/internal/libraries/asm/Handler;=a
 
-org/objectweb/asm/MethodWriter.visitSwitchInsn(Lorg/objectweb/asm/Label;[Lorg/objectweb/asm/Label;)V=a
-org/objectweb/asm/MethodWriter.addSuccessor(ILorg/objectweb/asm/Label;)V=a
-org/objectweb/asm/MethodWriter.getNewOffset([I[III)I=a
-org/objectweb/asm/MethodWriter.getSize()I=a
-org/objectweb/asm/MethodWriter.put(Lorg/objectweb/asm/ByteVector;)V=a
-org/objectweb/asm/MethodWriter.readInt([BI)I=a
-org/objectweb/asm/MethodWriter.readShort([BI)S=b
-org/objectweb/asm/MethodWriter.readUnsignedShort([BI)I=c
-org/objectweb/asm/MethodWriter.writeShort([BII)V=a
-org/objectweb/asm/MethodWriter.visitFrame(Lorg/objectweb/asm/Frame;)V=b
-org/objectweb/asm/MethodWriter.visitImplicitFirstFrame()V=f
-org/objectweb/asm/MethodWriter.startFrame(III)I=a
-org/objectweb/asm/MethodWriter.endFrame()V=b
-org/objectweb/asm/MethodWriter.writeFrame()V=c
-org/objectweb/asm/MethodWriter.resizeInstructions()V=d
-org/objectweb/asm/MethodWriter.noSuccessor()V=e
-org/objectweb/asm/MethodWriter.writeFrameTypes(II)V=a
-org/objectweb/asm/MethodWriter.writeFrameType(Ljava/lang/Object;)V=a
-org/objectweb/asm/MethodWriter.getNewOffset([I[ILorg/objectweb/asm/Label;)V=a
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.visitSwitchInsn(Lorg/eclipse/persistence/internal/libraries/asm/Label;[Lorg/eclipse/persistence/internal/libraries/asm/Label;)V=a
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.addSuccessor(ILorg/eclipse/persistence/internal/libraries/asm/Label;)V=a
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.getNewOffset([I[III)I=a
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.getSize()I=a
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.put(Lorg/eclipse/persistence/internal/libraries/asm/ByteVector;)V=a
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.readInt([BI)I=a
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.readShort([BI)S=b
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.readUnsignedShort([BI)I=c
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.writeShort([BII)V=a
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.visitFrame(Lorg/eclipse/persistence/internal/libraries/asm/Frame;)V=b
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.visitImplicitFirstFrame()V=f
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.startFrame(III)I=a
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.endFrame()V=b
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.writeFrame()V=c
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.resizeInstructions()V=d
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.noSuccessor()V=e
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.writeFrameTypes(II)V=a
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.writeFrameType(Ljava/lang/Object;)V=a
+org/eclipse/persistence/internal/libraries/asm/MethodWriter.getNewOffset([I[ILorg/eclipse/persistence/internal/libraries/asm/Label;)V=a
 
-org/objectweb/asm/Type.getType([CI)Lorg/objectweb/asm/Type;=a
-org/objectweb/asm/Type.getDescriptor(Ljava/lang/StringBuilder;)V=a
-org/objectweb/asm/Type.getDescriptor(Ljava/lang/StringBuilder;Ljava/lang/Class;)V=a
+org/eclipse/persistence/internal/libraries/asm/Type.getType([CI)Lorg/eclipse/persistence/internal/libraries/asm/Type;=a
+org/eclipse/persistence/internal/libraries/asm/Type.getDescriptor(Ljava/lang/StringBuilder;)V=a
+org/eclipse/persistence/internal/libraries/asm/Type.getDescriptor(Ljava/lang/StringBuilder;Ljava/lang/Class;)V=a
 
-org/objectweb/asm/signature/SignatureReader.parseType(Ljava/lang/String;ILorg/objectweb/asm/signature/SignatureVisitor;)I=a
+org/eclipse/persistence/internal/libraries/asm/ModuleWriter.getSize()I=a
+org/eclipse/persistence/internal/libraries/asm/ModuleWriter.put(Lorg/eclipse/persistence/internal/libraries/asm/ByteVector;)V=a
 
-org/objectweb/asm/signature/SignatureWriter.endFormals()V=a
-org/objectweb/asm/signature/SignatureWriter.endArguments()V=b
+org/eclipse/persistence/internal/libraries/asm/signature/SignatureReader.parseType(Ljava/lang/String;ILorg/eclipse/persistence/internal/libraries/asm/signature/SignatureVisitor;)I=a
+
+org/eclipse/persistence/internal/libraries/asm/signature/SignatureWriter.endFormals()V=a
+org/eclipse/persistence/internal/libraries/asm/signature/SignatureWriter.endArguments()V=b
      
\ No newline at end of file
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/signature/SignatureReader.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/signature/SignatureReader.java
index 98085ff..89f07fc 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/signature/SignatureReader.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/signature/SignatureReader.java
@@ -29,9 +29,6 @@
  */
 package org.eclipse.persistence.internal.libraries.asm.signature;
 
-import org.eclipse.persistence.internal.libraries.asm.ClassVisitor;
-import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
-
 /**
  * A type signature parser to make a signature visitor visit an existing
  * signature.
@@ -63,10 +60,10 @@
      * constructor (see {@link #SignatureReader(String) SignatureReader}). This
      * method is intended to be called on a {@link SignatureReader} that was
      * created using a <i>ClassSignature</i> (such as the <code>signature</code>
-     * parameter of the {@link ClassVisitor#visit
+     * parameter of the {@link org.eclipse.persistence.internal.libraries.asm.ClassVisitor#visit
      * ClassVisitor.visit} method) or a <i>MethodTypeSignature</i> (such as the
      * <code>signature</code> parameter of the
-     * {@link ClassVisitor#visitMethod
+     * {@link org.eclipse.persistence.internal.libraries.asm.ClassVisitor#visitMethod
      * ClassVisitor.visitMethod} method).
      * 
      * @param v
@@ -122,8 +119,8 @@
      * method is intended to be called on a {@link SignatureReader} that was
      * created using a <i>FieldTypeSignature</i>, such as the
      * <code>signature</code> parameter of the
-     * {@link ClassVisitor#visitField ClassVisitor.visitField}
-     * or {@link MethodVisitor#visitLocalVariable
+     * {@link org.eclipse.persistence.internal.libraries.asm.ClassVisitor#visitField ClassVisitor.visitField}
+     * or {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitLocalVariable
      * MethodVisitor.visitLocalVariable} methods.
      * 
      * @param v
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/signature/SignatureVisitor.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/signature/SignatureVisitor.java
index 626a094..c5480f5 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/signature/SignatureVisitor.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/signature/SignatureVisitor.java
@@ -73,7 +73,7 @@
 
     /**
      * The ASM API version implemented by this visitor. The value of this field
-     * must be one of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     * must be one of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      */
     protected final int api;
 
@@ -82,10 +82,10 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      */
     public SignatureVisitor(final int api) {
-        if (api != Opcodes.ASM4 && api != Opcodes.ASM5) {
+        if (api < Opcodes.ASM4 || api > Opcodes.ASM6) {
             throw new IllegalArgumentException();
         }
         this.api = api;
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/signature/SignatureWriter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/signature/SignatureWriter.java
index a4ae058..e544fb8 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/signature/SignatureWriter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/signature/SignatureWriter.java
@@ -66,7 +66,7 @@
      * Constructs a new {@link SignatureWriter} object.
      */
     public SignatureWriter() {
-        super(Opcodes.ASM5);
+        super(Opcodes.ASM6);
     }
 
     // ------------------------------------------------------------------------
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/AbstractInsnNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/AbstractInsnNode.java
index 7d1d87b..6808b7d 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/AbstractInsnNode.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/AbstractInsnNode.java
@@ -134,7 +134,7 @@
      * number nodes). This list is a list of {@link TypeAnnotationNode} objects.
      * May be <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.tree.TypeAnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.TypeAnnotationNode
      * @label visible
      */
     public List<TypeAnnotationNode> visibleTypeAnnotations;
@@ -145,7 +145,7 @@
      * number nodes). This list is a list of {@link TypeAnnotationNode} objects.
      * May be <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.tree.TypeAnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.TypeAnnotationNode
      * @label invisible
      */
     public List<TypeAnnotationNode> invisibleTypeAnnotations;
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/AnnotationNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/AnnotationNode.java
index 53277e3..38d9c4a 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/AnnotationNode.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/AnnotationNode.java
@@ -33,7 +33,6 @@
 import java.util.List;
 
 import org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor;
-import org.eclipse.persistence.internal.libraries.asm.Type;
 import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 
 /**
@@ -53,7 +52,7 @@
      * as two consecutive elements in the list. The name is a {@link String},
      * and the value may be a {@link Byte}, {@link Boolean}, {@link Character},
      * {@link Short}, {@link Integer}, {@link Long}, {@link Float},
-     * {@link Double}, {@link String} or {@link Type}, or an
+     * {@link Double}, {@link String} or {@link org.eclipse.persistence.internal.libraries.asm.Type}, or an
      * two elements String array (for enumeration values), a
      * {@link AnnotationNode}, or a {@link List} of values of one of the
      * preceding types. The list may be <tt>null</tt> if there is no name value
@@ -72,7 +71,7 @@
      *             If a subclass calls this constructor.
      */
     public AnnotationNode(final String desc) {
-        this(Opcodes.ASM5, desc);
+        this(Opcodes.ASM6, desc);
         if (getClass() != AnnotationNode.class) {
             throw new IllegalStateException();
         }
@@ -83,7 +82,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      * @param desc
      *            the class descriptor of the annotation class.
      */
@@ -99,7 +98,7 @@
      *            where the visited values must be stored.
      */
     AnnotationNode(final List<Object> values) {
-        super(Opcodes.ASM5);
+        super(Opcodes.ASM6);
         this.values = values;
     }
 
@@ -172,8 +171,8 @@
      * versions of the ASM API than the given version.
      * 
      * @param api
-     *            an ASM API version. Must be one of {@link Opcodes#ASM4} or
-     *            {@link Opcodes#ASM5}.
+     *            an ASM API version. Must be one of {@link Opcodes#ASM4},
+     *            {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      */
     public void check(final int api) {
         // nothing to do
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ClassNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ClassNode.java
index 08898a3..bc22f94 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ClassNode.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ClassNode.java
@@ -33,9 +33,13 @@
 import java.util.Arrays;
 import java.util.List;
 
-import org.eclipse.persistence.internal.libraries.asm.*;
 import org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Attribute;
+import org.eclipse.persistence.internal.libraries.asm.ClassVisitor;
+import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
+import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
+import org.eclipse.persistence.internal.libraries.asm.ModuleVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.TypePath;
 
 /**
@@ -51,14 +55,14 @@
     public int version;
 
     /**
-     * The class's access flags (see {@link Opcodes}). This
+     * The class's access flags (see {@link org.eclipse.persistence.internal.libraries.asm.Opcodes}). This
      * field also indicates if the class is deprecated.
      */
     public int access;
 
     /**
      * The internal name of the class (see
-     * {@link Type#getInternalName() getInternalName}).
+     * {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName() getInternalName}).
      */
     public String name;
 
@@ -69,7 +73,7 @@
 
     /**
      * The internal of name of the super class (see
-     * {@link Type#getInternalName() getInternalName}). For
+     * {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName() getInternalName}). For
      * interfaces, the super class is {@link Object}. May be <tt>null</tt>, but
      * only for the {@link Object} class.
      */
@@ -77,7 +81,7 @@
 
     /**
      * The internal names of the class's interfaces (see
-     * {@link Type#getInternalName() getInternalName}). This
+     * {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName() getInternalName}). This
      * list is a list of {@link String} objects.
      */
     public List<String> interfaces;
@@ -95,6 +99,11 @@
     public String sourceDebug;
 
     /**
+     * Module information. May be <tt>null</tt>.
+     */
+    public ModuleNode module;
+    
+    /**
      * The internal name of the enclosing class of the class. May be
      * <tt>null</tt>.
      */
@@ -116,7 +125,7 @@
      * The runtime visible annotations of this class. This list is a list of
      * {@link AnnotationNode} objects. May be <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.tree.AnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.AnnotationNode
      * @label visible
      */
     public List<AnnotationNode> visibleAnnotations;
@@ -125,7 +134,7 @@
      * The runtime invisible annotations of this class. This list is a list of
      * {@link AnnotationNode} objects. May be <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.tree.AnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.AnnotationNode
      * @label invisible
      */
     public List<AnnotationNode> invisibleAnnotations;
@@ -134,7 +143,7 @@
      * The runtime visible type annotations of this class. This list is a list
      * of {@link TypeAnnotationNode} objects. May be <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.tree.TypeAnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.TypeAnnotationNode
      * @label visible
      */
     public List<TypeAnnotationNode> visibleTypeAnnotations;
@@ -143,7 +152,7 @@
      * The runtime invisible type annotations of this class. This list is a list
      * of {@link TypeAnnotationNode} objects. May be <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.tree.TypeAnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.TypeAnnotationNode
      * @label invisible
      */
     public List<TypeAnnotationNode> invisibleTypeAnnotations;
@@ -152,7 +161,7 @@
      * The non standard attributes of this class. This list is a list of
      * {@link Attribute} objects. May be <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.Attribute
+     * @associates org.eclipse.persistence.internal.libraries.asm.Attribute
      */
     public List<Attribute> attrs;
 
@@ -160,7 +169,7 @@
      * Informations about the inner classes of this class. This list is a list
      * of {@link InnerClassNode} objects.
      * 
-     * @associates org.objectweb.asm.tree.InnerClassNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.InnerClassNode
      */
     public List<InnerClassNode> innerClasses;
 
@@ -168,7 +177,7 @@
      * The fields of this class. This list is a list of {@link FieldNode}
      * objects.
      * 
-     * @associates org.objectweb.asm.tree.FieldNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.FieldNode
      */
     public List<FieldNode> fields;
 
@@ -176,7 +185,7 @@
      * The methods of this class. This list is a list of {@link MethodNode}
      * objects.
      * 
-     * @associates org.objectweb.asm.tree.MethodNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.MethodNode
      */
     public List<MethodNode> methods;
 
@@ -189,7 +198,7 @@
      *             If a subclass calls this constructor.
      */
     public ClassNode() {
-        this(Opcodes.ASM5);
+        this(Opcodes.ASM6);
         if (getClass() != ClassNode.class) {
             throw new IllegalStateException();
         }
@@ -200,7 +209,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      */
     public ClassNode(final int api) {
         super(api);
@@ -233,6 +242,11 @@
         sourceFile = file;
         sourceDebug = debug;
     }
+    
+    @Override
+    public ModuleVisitor visitModule() {
+        return module = new ModuleNode(); 
+    }
 
     @Override
     public void visitOuterClass(final String owner, final String name,
@@ -244,7 +258,7 @@
 
     @Override
     public AnnotationVisitor visitAnnotation(final String desc,
-                                             final boolean visible) {
+            final boolean visible) {
         AnnotationNode an = new AnnotationNode(desc);
         if (visible) {
             if (visibleAnnotations == null) {
@@ -262,7 +276,7 @@
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(int typeRef,
-                                                 TypePath typePath, String desc, boolean visible) {
+            TypePath typePath, String desc, boolean visible) {
         TypeAnnotationNode an = new TypeAnnotationNode(typeRef, typePath, desc);
         if (visible) {
             if (visibleTypeAnnotations == null) {
@@ -296,7 +310,7 @@
 
     @Override
     public FieldVisitor visitField(final int access, final String name,
-                                   final String desc, final String signature, final Object value) {
+            final String desc, final String signature, final Object value) {
         FieldNode fn = new FieldNode(access, name, desc, signature, value);
         fields.add(fn);
         return fn;
@@ -326,8 +340,8 @@
      * API than the given version.
      * 
      * @param api
-     *            an ASM API version. Must be one of {@link Opcodes#ASM4} or
-     *            {@link Opcodes#ASM5}.
+     *            an ASM API version. Must be one of {@link Opcodes#ASM4},
+     *            {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      */
     public void check(final int api) {
         if (api == Opcodes.ASM4) {
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/FieldInsnNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/FieldInsnNode.java
index bbaf83e..3212fa9 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/FieldInsnNode.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/FieldInsnNode.java
@@ -32,7 +32,6 @@
 import java.util.Map;
 
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
-import org.eclipse.persistence.internal.libraries.asm.Type;
 
 /**
  * A node that represents a field instruction. A field instruction is an
@@ -44,7 +43,7 @@
 
     /**
      * The internal name of the field's owner class (see
-     * {@link Type#getInternalName() getInternalName}).
+     * {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName() getInternalName}).
      */
     public String owner;
 
@@ -54,7 +53,7 @@
     public String name;
 
     /**
-     * The field's descriptor (see {@link Type}).
+     * The field's descriptor (see {@link org.eclipse.persistence.internal.libraries.asm.Type}).
      */
     public String desc;
 
@@ -66,12 +65,12 @@
      *            opcode must be GETSTATIC, PUTSTATIC, GETFIELD or PUTFIELD.
      * @param owner
      *            the internal name of the field's owner class (see
-     *            {@link Type#getInternalName()
+     *            {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName()
      *            getInternalName}).
      * @param name
      *            the field's name.
      * @param desc
-     *            the field's descriptor (see {@link Type}).
+     *            the field's descriptor (see {@link org.eclipse.persistence.internal.libraries.asm.Type}).
      */
     public FieldInsnNode(final int opcode, final String owner,
             final String name, final String desc) {
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/FieldNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/FieldNode.java
index 019bbd1..a66ec4c 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/FieldNode.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/FieldNode.java
@@ -32,9 +32,10 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.eclipse.persistence.internal.libraries.asm.*;
 import org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Attribute;
+import org.eclipse.persistence.internal.libraries.asm.ClassVisitor;
+import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.TypePath;
 
@@ -46,7 +47,7 @@
 public class FieldNode extends FieldVisitor {
 
     /**
-     * The field's access flags (see {@link Opcodes}). This
+     * The field's access flags (see {@link org.eclipse.persistence.internal.libraries.asm.Opcodes}). This
      * field also indicates if the field is synthetic and/or deprecated.
      */
     public int access;
@@ -57,7 +58,7 @@
     public String name;
 
     /**
-     * The field's descriptor (see {@link Type}).
+     * The field's descriptor (see {@link org.eclipse.persistence.internal.libraries.asm.Type}).
      */
     public String desc;
 
@@ -77,7 +78,7 @@
      * The runtime visible annotations of this field. This list is a list of
      * {@link AnnotationNode} objects. May be <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.tree.AnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.AnnotationNode
      * @label visible
      */
     public List<AnnotationNode> visibleAnnotations;
@@ -86,7 +87,7 @@
      * The runtime invisible annotations of this field. This list is a list of
      * {@link AnnotationNode} objects. May be <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.tree.AnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.AnnotationNode
      * @label invisible
      */
     public List<AnnotationNode> invisibleAnnotations;
@@ -95,7 +96,7 @@
      * The runtime visible type annotations of this field. This list is a list
      * of {@link TypeAnnotationNode} objects. May be <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.tree.TypeAnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.TypeAnnotationNode
      * @label visible
      */
     public List<TypeAnnotationNode> visibleTypeAnnotations;
@@ -104,7 +105,7 @@
      * The runtime invisible type annotations of this field. This list is a list
      * of {@link TypeAnnotationNode} objects. May be <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.tree.TypeAnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.TypeAnnotationNode
      * @label invisible
      */
     public List<TypeAnnotationNode> invisibleTypeAnnotations;
@@ -113,7 +114,7 @@
      * The non standard attributes of this field. This list is a list of
      * {@link Attribute} objects. May be <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.Attribute
+     * @associates org.eclipse.persistence.internal.libraries.asm.Attribute
      */
     public List<Attribute> attrs;
 
@@ -124,12 +125,12 @@
      * 
      * @param access
      *            the field's access flags (see
-     *            {@link Opcodes}). This parameter also
+     *            {@link org.eclipse.persistence.internal.libraries.asm.Opcodes}). This parameter also
      *            indicates if the field is synthetic and/or deprecated.
      * @param name
      *            the field's name.
      * @param desc
-     *            the field's descriptor (see {@link Type
+     *            the field's descriptor (see {@link org.eclipse.persistence.internal.libraries.asm.Type
      *            Type}).
      * @param signature
      *            the field's signature.
@@ -143,7 +144,7 @@
      */
     public FieldNode(final int access, final String name, final String desc,
             final String signature, final Object value) {
-        this(Opcodes.ASM5, access, name, desc, signature, value);
+        this(Opcodes.ASM6, access, name, desc, signature, value);
         if (getClass() != FieldNode.class) {
             throw new IllegalStateException();
         }
@@ -158,12 +159,12 @@
      *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
      * @param access
      *            the field's access flags (see
-     *            {@link Opcodes}). This parameter also
+     *            {@link org.eclipse.persistence.internal.libraries.asm.Opcodes}). This parameter also
      *            indicates if the field is synthetic and/or deprecated.
      * @param name
      *            the field's name.
      * @param desc
-     *            the field's descriptor (see {@link Type
+     *            the field's descriptor (see {@link org.eclipse.persistence.internal.libraries.asm.Type
      *            Type}).
      * @param signature
      *            the field's signature.
@@ -189,7 +190,7 @@
 
     @Override
     public AnnotationVisitor visitAnnotation(final String desc,
-                                             final boolean visible) {
+            final boolean visible) {
         AnnotationNode an = new AnnotationNode(desc);
         if (visible) {
             if (visibleAnnotations == null) {
@@ -207,7 +208,7 @@
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(int typeRef,
-                                                 TypePath typePath, String desc, boolean visible) {
+            TypePath typePath, String desc, boolean visible) {
         TypeAnnotationNode an = new TypeAnnotationNode(typeRef, typePath, desc);
         if (visible) {
             if (visibleTypeAnnotations == null) {
@@ -246,8 +247,8 @@
      * API than the given version.
      * 
      * @param api
-     *            an ASM API version. Must be one of {@link Opcodes#ASM4} or
-     *            {@link Opcodes#ASM5}.
+     *            an ASM API version. Must be one of {@link Opcodes#ASM4},
+     *            {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      */
     public void check(final int api) {
         if (api == Opcodes.ASM4) {
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/FrameNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/FrameNode.java
index 7e570d6..db71d43 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/FrameNode.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/FrameNode.java
@@ -34,8 +34,8 @@
 import java.util.List;
 import java.util.Map;
 
-import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 
 /**
  * A node that represents a stack map frame. These nodes are pseudo instruction
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/InnerClassNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/InnerClassNode.java
index f422b5f..38ef768 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/InnerClassNode.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/InnerClassNode.java
@@ -30,7 +30,6 @@
 package org.eclipse.persistence.internal.libraries.asm.tree;
 
 import org.eclipse.persistence.internal.libraries.asm.ClassVisitor;
-import org.eclipse.persistence.internal.libraries.asm.Type;
 
 /**
  * A node that represents an inner class.
@@ -41,13 +40,13 @@
 
     /**
      * The internal name of an inner class (see
-     * {@link Type#getInternalName() getInternalName}).
+     * {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName() getInternalName}).
      */
     public String name;
 
     /**
      * The internal name of the class to which the inner class belongs (see
-     * {@link Type#getInternalName() getInternalName}). May be
+     * {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName() getInternalName}). May be
      * <tt>null</tt>.
      */
     public String outerName;
@@ -69,11 +68,11 @@
      * 
      * @param name
      *            the internal name of an inner class (see
-     *            {@link Type#getInternalName()
+     *            {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName()
      *            getInternalName}).
      * @param outerName
      *            the internal name of the class to which the inner class
-     *            belongs (see {@link Type#getInternalName()
+     *            belongs (see {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName()
      *            getInternalName}). May be <tt>null</tt>.
      * @param innerName
      *            the (simple) name of the inner class inside its enclosing
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/InvokeDynamicInsnNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/InvokeDynamicInsnNode.java
index 1b9f8cf..0363a3e 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/InvokeDynamicInsnNode.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/InvokeDynamicInsnNode.java
@@ -32,9 +32,8 @@
 import java.util.Map;
 
 import org.eclipse.persistence.internal.libraries.asm.Handle;
-import org.eclipse.persistence.internal.libraries.asm.Opcodes;
-import org.eclipse.persistence.internal.libraries.asm.Type;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 
 /**
  * A node that represents an invokedynamic instruction.
@@ -69,7 +68,7 @@
      * @param name
      *            invokedynamic name.
      * @param desc
-     *            invokedynamic descriptor (see {@link Type}).
+     *            invokedynamic descriptor (see {@link org.eclipse.persistence.internal.libraries.asm.Type}).
      * @param bsm
      *            the bootstrap method.
      * @param bsmArgs
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/LdcInsnNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/LdcInsnNode.java
index 65ba3d3..109016c 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/LdcInsnNode.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/LdcInsnNode.java
@@ -31,9 +31,8 @@
 
 import java.util.Map;
 
-import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
-import org.eclipse.persistence.internal.libraries.asm.Type;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 
 /**
  * A node that represents an LDC instruction.
@@ -45,7 +44,7 @@
     /**
      * The constant to be loaded on the stack. This parameter must be a non null
      * {@link Integer}, a {@link Float}, a {@link Long}, a {@link Double}, a
-     * {@link String} or a {@link Type}.
+     * {@link String} or a {@link org.eclipse.persistence.internal.libraries.asm.Type}.
      */
     public Object cst;
 
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/LocalVariableAnnotationNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/LocalVariableAnnotationNode.java
index 44ae8ca..c25c20a 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/LocalVariableAnnotationNode.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/LocalVariableAnnotationNode.java
@@ -93,7 +93,7 @@
      */
     public LocalVariableAnnotationNode(int typeRef, TypePath typePath,
             LabelNode[] start, LabelNode[] end, int[] index, String desc) {
-        this(Opcodes.ASM5, typeRef, typePath, start, end, index, desc);
+        this(Opcodes.ASM6, typeRef, typePath, start, end, index, desc);
     }
 
     /**
@@ -101,7 +101,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      * @param typeRef
      *            a reference to the annotated type. See {@link TypeReference}.
      * @param start
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/MethodInsnNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/MethodInsnNode.java
index 00dd737..e9d1003 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/MethodInsnNode.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/MethodInsnNode.java
@@ -32,7 +32,6 @@
 import java.util.Map;
 
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
-import org.eclipse.persistence.internal.libraries.asm.Type;
 import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 
 /**
@@ -45,7 +44,7 @@
 
     /**
      * The internal name of the method's owner class (see
-     * {@link Type#getInternalName() getInternalName}).
+     * {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName() getInternalName}).
      */
     public String owner;
 
@@ -55,7 +54,7 @@
     public String name;
 
     /**
-     * The method's descriptor (see {@link Type}).
+     * The method's descriptor (see {@link org.eclipse.persistence.internal.libraries.asm.Type}).
      */
     public String desc;
 
@@ -73,12 +72,12 @@
      *            INVOKEINTERFACE.
      * @param owner
      *            the internal name of the method's owner class (see
-     *            {@link Type#getInternalName()
+     *            {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName()
      *            getInternalName}).
      * @param name
      *            the method's name.
      * @param desc
-     *            the method's descriptor (see {@link Type}).
+     *            the method's descriptor (see {@link org.eclipse.persistence.internal.libraries.asm.Type}).
      */
     @Deprecated
     public MethodInsnNode(final int opcode, final String owner,
@@ -95,12 +94,12 @@
      *            INVOKEINTERFACE.
      * @param owner
      *            the internal name of the method's owner class (see
-     *            {@link Type#getInternalName()
+     *            {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName()
      *            getInternalName}).
      * @param name
      *            the method's name.
      * @param desc
-     *            the method's descriptor (see {@link Type}).
+     *            the method's descriptor (see {@link org.eclipse.persistence.internal.libraries.asm.Type}).
      * @param itf
      *            if the method's owner class is an interface.
      */
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/MethodNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/MethodNode.java
index 7370ca1..3546a0b 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/MethodNode.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/MethodNode.java
@@ -87,7 +87,7 @@
      * The runtime visible annotations of this method. This list is a list of
      * {@link AnnotationNode} objects. May be <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.tree.AnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.AnnotationNode
      * @label visible
      */
     public List<AnnotationNode> visibleAnnotations;
@@ -96,7 +96,7 @@
      * The runtime invisible annotations of this method. This list is a list of
      * {@link AnnotationNode} objects. May be <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.tree.AnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.AnnotationNode
      * @label invisible
      */
     public List<AnnotationNode> invisibleAnnotations;
@@ -105,7 +105,7 @@
      * The runtime visible type annotations of this method. This list is a list
      * of {@link TypeAnnotationNode} objects. May be <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.tree.TypeAnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.TypeAnnotationNode
      * @label visible
      */
     public List<TypeAnnotationNode> visibleTypeAnnotations;
@@ -114,7 +114,7 @@
      * The runtime invisible type annotations of this method. This list is a
      * list of {@link TypeAnnotationNode} objects. May be <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.tree.TypeAnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.TypeAnnotationNode
      * @label invisible
      */
     public List<TypeAnnotationNode> invisibleTypeAnnotations;
@@ -123,7 +123,7 @@
      * The non standard attributes of this method. This list is a list of
      * {@link Attribute} objects. May be <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.Attribute
+     * @associates org.eclipse.persistence.internal.libraries.asm.Attribute
      */
     public List<Attribute> attrs;
 
@@ -141,7 +141,7 @@
      * The runtime visible parameter annotations of this method. These lists are
      * lists of {@link AnnotationNode} objects. May be <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.tree.AnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.AnnotationNode
      * @label invisible parameters
      */
     public List<AnnotationNode>[] visibleParameterAnnotations;
@@ -150,7 +150,7 @@
      * The runtime invisible parameter annotations of this method. These lists
      * are lists of {@link AnnotationNode} objects. May be <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.tree.AnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.AnnotationNode
      * @label visible parameters
      */
     public List<AnnotationNode>[] invisibleParameterAnnotations;
@@ -159,7 +159,7 @@
      * The instructions of this method. This list is a list of
      * {@link AbstractInsnNode} objects.
      * 
-     * @associates org.objectweb.asm.tree.AbstractInsnNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.AbstractInsnNode
      * @label instructions
      */
     public InsnList instructions;
@@ -168,7 +168,7 @@
      * The try catch blocks of this method. This list is a list of
      * {@link TryCatchBlockNode} objects.
      * 
-     * @associates org.objectweb.asm.tree.TryCatchBlockNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.TryCatchBlockNode
      */
     public List<TryCatchBlockNode> tryCatchBlocks;
 
@@ -186,7 +186,7 @@
      * The local variables of this method. This list is a list of
      * {@link LocalVariableNode} objects. May be <tt>null</tt>
      * 
-     * @associates org.objectweb.asm.tree.LocalVariableNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.LocalVariableNode
      */
     public List<LocalVariableNode> localVariables;
 
@@ -194,7 +194,7 @@
      * The visible local variable annotations of this method. This list is a
      * list of {@link LocalVariableAnnotationNode} objects. May be <tt>null</tt>
      * 
-     * @associates org.objectweb.asm.tree.LocalVariableAnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.LocalVariableAnnotationNode
      */
     public List<LocalVariableAnnotationNode> visibleLocalVariableAnnotations;
 
@@ -202,7 +202,7 @@
      * The invisible local variable annotations of this method. This list is a
      * list of {@link LocalVariableAnnotationNode} objects. May be <tt>null</tt>
      * 
-     * @associates org.objectweb.asm.tree.LocalVariableAnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.LocalVariableAnnotationNode
      */
     public List<LocalVariableAnnotationNode> invisibleLocalVariableAnnotations;
 
@@ -220,7 +220,7 @@
      *             If a subclass calls this constructor.
      */
     public MethodNode() {
-        this(Opcodes.ASM5);
+        this(Opcodes.ASM6);
         if (getClass() != MethodNode.class) {
             throw new IllegalStateException();
         }
@@ -231,7 +231,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      */
     public MethodNode(final int api) {
         super(api);
@@ -262,7 +262,7 @@
      */
     public MethodNode(final int access, final String name, final String desc,
             final String signature, final String[] exceptions) {
-        this(Opcodes.ASM5, access, name, desc, signature, exceptions);
+        this(Opcodes.ASM6, access, name, desc, signature, exceptions);
         if (getClass() != MethodNode.class) {
             throw new IllegalStateException();
         }
@@ -273,7 +273,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      * @param access
      *            the method's access flags (see {@link Opcodes}). This
      *            parameter also indicates if the method is synthetic and/or
@@ -353,7 +353,7 @@
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(int typeRef,
-                                                 TypePath typePath, String desc, boolean visible) {
+            TypePath typePath, String desc, boolean visible) {
         TypeAnnotationNode an = new TypeAnnotationNode(typeRef, typePath, desc);
         if (visible) {
             if (visibleTypeAnnotations == null) {
@@ -659,8 +659,8 @@
      * versions of the ASM API than the given version.
      * 
      * @param api
-     *            an ASM API version. Must be one of {@link Opcodes#ASM4} or
-     *            {@link Opcodes#ASM5}.
+     *            an ASM API version. Must be one of {@link Opcodes#ASM4},
+     *            {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      */
     public void check(final int api) {
         if (api == Opcodes.ASM4) {
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ModuleExportNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ModuleExportNode.java
new file mode 100644
index 0000000..9fbdce0
--- /dev/null
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ModuleExportNode.java
@@ -0,0 +1,75 @@
+/***
+ * ASM: a very small and fast Java bytecode manipulation framework
+ * Copyright (c) 2000-2011 INRIA, France Telecom
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holders nor the names of its
+ *    contributors may be used to endorse or promote products derived from
+ *    this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.eclipse.persistence.internal.libraries.asm.tree;
+
+import java.util.List;
+
+import org.eclipse.persistence.internal.libraries.asm.ModuleVisitor;
+
+/**
+ * A node that represents an exported package with its name and the module that can access to it.
+ * 
+ * @author Remi Forax
+ */
+public class ModuleExportNode {
+    /**
+     * The package name.
+     */
+    public String packaze;
+
+    /**
+     * A list of modules that can access to this exported package.
+     * May be <tt>null</tt>.
+     */
+    public List<String> modules;
+
+    /**
+     * Constructs a new {@link ModuleExportNode}.
+     * 
+     * @param packaze
+     *            the parameter's name.
+     * @param modules
+     *            a list of modules that can access to this exported package.
+     */
+    public ModuleExportNode(final String packaze, final List<String> modules) {
+        this.packaze = packaze;
+        this.modules = modules;
+    }
+
+    /**
+     * Makes the given module visitor visit this export declaration.
+     * 
+     * @param mv
+     *            a module visitor.
+     */
+    public void accept(final ModuleVisitor mv) {
+        mv.visitExport(packaze, (modules == null)? null: modules.toArray(new String[0]));
+    }
+}
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ModuleNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ModuleNode.java
new file mode 100644
index 0000000..99e81c7
--- /dev/null
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ModuleNode.java
@@ -0,0 +1,157 @@
+/***
+ * ASM: a very small and fast Java bytecode manipulation framework
+ * Copyright (c) 2000-2011 INRIA, France Telecom
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holders nor the names of its
+ *    contributors may be used to endorse or promote products derived from
+ *    this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.eclipse.persistence.internal.libraries.asm.tree;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.persistence.internal.libraries.asm.ClassVisitor;
+import org.eclipse.persistence.internal.libraries.asm.ModuleVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
+
+/**
+ * A node that represents a module declaration.
+ * 
+ * @author Remi Forax
+ */
+public class ModuleNode extends ModuleVisitor {
+    /**
+     * A list of modules can are required by the current module.
+     * May be <tt>null</tt>.
+     */
+    public List<ModuleRequireNode> requires;
+    
+    /**
+     * A list of packages that are exported by the current module.
+     * May be <tt>null</tt>.
+     */
+    public List<ModuleExportNode> exports;
+    
+    /**
+     * A list of classes in their internal forms that are used
+     * as a service by the current module. May be <tt>null</tt>.
+     */
+    public List<String> uses;
+   
+    /**
+     * A list of services along with their implementations provided
+     * by the current module. May be <tt>null</tt>.
+     */
+    public List<ModuleProvideNode> provides;
+
+    public ModuleNode() {
+        super(Opcodes.ASM6);
+    }
+    
+    public ModuleNode(final int api,
+      List<ModuleRequireNode> requires,
+      List<ModuleExportNode> exports,
+      List<String> uses,
+      List<ModuleProvideNode> provides) {
+        super(Opcodes.ASM6);
+        this.requires = requires;
+        this.exports = exports;
+        this.uses = uses;
+        this.provides = provides;
+        if (getClass() != ModuleNode.class) {
+            throw new IllegalStateException();
+        }
+    }
+    
+    @Override
+    public void visitRequire(String module, int access) {
+        if (requires == null) {
+            requires = new ArrayList<ModuleRequireNode>(5);
+        }
+        requires.add(new ModuleRequireNode(module, access));
+    }
+    
+    @Override
+    public void visitExport(String packaze, String... modules) {
+        if (exports == null) {
+            exports = new ArrayList<ModuleExportNode>(5);
+        }
+        List<String> moduleList = null;
+        if (modules != null) {
+            moduleList = new ArrayList<String>(modules.length);
+            for(int i = 0; i < modules.length; i++) {
+                moduleList.add(modules[i]);
+            }
+        }
+        exports.add(new ModuleExportNode(packaze, moduleList));
+    }
+    
+    @Override
+    public void visitUse(String service) {
+        if (uses == null) {
+            uses = new ArrayList<String>(5);
+        }
+        uses.add(service);
+    }
+    
+    @Override
+    public void visitProvide(String service, String impl) {
+        if (provides == null) {
+            provides = new ArrayList<ModuleProvideNode>(5);
+        }
+        provides.add(new ModuleProvideNode(service, impl));
+    }
+    
+    @Override
+    public void visitEnd() {
+    }
+    
+    public void accept(final ClassVisitor cv) {
+        ModuleVisitor mv = cv.visitModule();
+        if (mv == null) {
+            return;
+        }
+        if (requires != null) {
+            for(int i = 0; i < requires.size(); i++) {
+                requires.get(i).accept(mv);
+            }
+        }
+        if (exports != null) {
+            for(int i = 0; i < exports.size(); i++) {
+                exports.get(i).accept(mv);
+            }
+        }
+        if (uses != null) {
+            for(int i = 0; i < uses.size(); i++) {
+                mv.visitUse(uses.get(i));
+            }
+        }
+        if (provides != null) {
+            for(int i = 0; i < provides.size(); i++) {
+                provides.get(i).accept(mv);
+            }
+        }
+    }
+}
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ModuleProvideNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ModuleProvideNode.java
new file mode 100644
index 0000000..9743699
--- /dev/null
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ModuleProvideNode.java
@@ -0,0 +1,72 @@
+/***
+ * ASM: a very small and fast Java bytecode manipulation framework
+ * Copyright (c) 2000-2011 INRIA, France Telecom
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holders nor the names of its
+ *    contributors may be used to endorse or promote products derived from
+ *    this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.eclipse.persistence.internal.libraries.asm.tree;
+
+import org.eclipse.persistence.internal.libraries.asm.ModuleVisitor;
+
+/**
+ * A node that represents a service and its implementation provided by the current module.
+ * 
+ * @author Remi Forax
+ */
+public class ModuleProvideNode {
+    /**
+     * The service name (in its internal form).
+     */
+    public String service;
+
+    /**
+     * The implementation name (in its internal form).
+     */
+    public String impl;
+
+    /**
+     * Constructs a new {@link ModuleProvideNode}.
+     * 
+     * @param service
+     *            the service name (in its internal form).
+     * @param impl
+     *            the implementation name (in its internal form).
+     */
+    public ModuleProvideNode(final String service, final String impl) {
+        this.service = service;
+        this.impl = impl;
+    }
+
+    /**
+     * Makes the given module visitor visit this require declaration.
+     * 
+     * @param mv
+     *            a module visitor.
+     */
+    public void accept(final ModuleVisitor mv) {
+        mv.visitProvide(service, impl);
+    }
+}
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ModuleRequireNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ModuleRequireNode.java
new file mode 100644
index 0000000..e4c98b8
--- /dev/null
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ModuleRequireNode.java
@@ -0,0 +1,76 @@
+/***
+ * ASM: a very small and fast Java bytecode manipulation framework
+ * Copyright (c) 2000-2011 INRIA, France Telecom
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holders nor the names of its
+ *    contributors may be used to endorse or promote products derived from
+ *    this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.eclipse.persistence.internal.libraries.asm.tree;
+
+import org.eclipse.persistence.internal.libraries.asm.ModuleVisitor;
+
+/**
+ * A node that represents a required module with its name and access of a module descriptor.
+ * 
+ * @author Remi Forax
+ */
+public class ModuleRequireNode {
+    /**
+     * The name of the required module.
+     */
+    public String module;
+
+    /**
+     * The access flags (see {@link org.eclipse.persistence.internal.libraries.asm.Opcodes}).
+     * Valid values are <tt>ACC_PUBLIC</tt>, <tt>ACC_SYNTHETIC</tt> and
+     * <tt>ACC_MANDATED</tt>.
+     */
+    public int access;
+
+    /**
+     * Constructs a new {@link ModuleRequireNode}.
+     * 
+     * @param module
+     *            the name of the required module.
+     * @param access
+     *            The access flags. Valid values are
+     *            <tt>ACC_PUBLIC</tt>, <tt>ACC_SYNTHETIC</tt> or/and
+     *            <tt>ACC_MANDATED</tt> (see {@link org.eclipse.persistence.internal.libraries.asm.Opcodes}).
+     */
+    public ModuleRequireNode(final String module, final int access) {
+        this.module = module;
+        this.access = access;
+    }
+
+    /**
+     * Makes the given module visitor visit this require declaration.
+     * 
+     * @param mv
+     *            a module visitor.
+     */
+    public void accept(final ModuleVisitor mv) {
+        mv.visitRequire(module, access);
+    }
+}
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/MultiANewArrayInsnNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/MultiANewArrayInsnNode.java
index dcf7a4d..eb04eba 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/MultiANewArrayInsnNode.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/MultiANewArrayInsnNode.java
@@ -31,9 +31,8 @@
 
 import java.util.Map;
 
-import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
-import org.eclipse.persistence.internal.libraries.asm.Type;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 
 /**
  * A node that represents a MULTIANEWARRAY instruction.
@@ -43,7 +42,7 @@
 public class MultiANewArrayInsnNode extends AbstractInsnNode {
 
     /**
-     * An array type descriptor (see {@link Type}).
+     * An array type descriptor (see {@link org.eclipse.persistence.internal.libraries.asm.Type}).
      */
     public String desc;
 
@@ -56,7 +55,7 @@
      * Constructs a new {@link MultiANewArrayInsnNode}.
      * 
      * @param desc
-     *            an array type descriptor (see {@link Type}).
+     *            an array type descriptor (see {@link org.eclipse.persistence.internal.libraries.asm.Type}).
      * @param dims
      *            number of dimensions of the array to allocate.
      */
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ParameterNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ParameterNode.java
index 3276043..88b4765 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ParameterNode.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/ParameterNode.java
@@ -29,7 +29,6 @@
  */
 package org.eclipse.persistence.internal.libraries.asm.tree;
 
-import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
 
 /**
@@ -44,7 +43,7 @@
     public String name;
 
     /**
-     * The parameter's access flags (see {@link Opcodes}).
+     * The parameter's access flags (see {@link org.eclipse.persistence.internal.libraries.asm.Opcodes}).
      * Valid values are <tt>ACC_FINAL</tt>, <tt>ACC_SYNTHETIC</tt> and
      * <tt>ACC_MANDATED</tt>.
      */
@@ -56,7 +55,7 @@
      * @param access
      *            The parameter's access flags. Valid values are
      *            <tt>ACC_FINAL</tt>, <tt>ACC_SYNTHETIC</tt> or/and
-     *            <tt>ACC_MANDATED</tt> (see {@link Opcodes}).
+     *            <tt>ACC_MANDATED</tt> (see {@link org.eclipse.persistence.internal.libraries.asm.Opcodes}).
      * @param name
      *            the parameter's name.
      */
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/TryCatchBlockNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/TryCatchBlockNode.java
index dcd9795..b4801e1 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/TryCatchBlockNode.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/TryCatchBlockNode.java
@@ -66,7 +66,7 @@
      * list is a list of {@link TypeAnnotationNode} objects. May be
      * <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.tree.TypeAnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.TypeAnnotationNode
      * @label visible
      */
     public List<TypeAnnotationNode> visibleTypeAnnotations;
@@ -76,7 +76,7 @@
      * This list is a list of {@link TypeAnnotationNode} objects. May be
      * <tt>null</tt>.
      * 
-     * @associates org.objectweb.asm.tree.TypeAnnotationNode
+     * @associates org.eclipse.persistence.internal.libraries.asm.tree.TypeAnnotationNode
      * @label invisible
      */
     public List<TypeAnnotationNode> invisibleTypeAnnotations;
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/TypeAnnotationNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/TypeAnnotationNode.java
index 4e2481a..22de38f 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/TypeAnnotationNode.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/TypeAnnotationNode.java
@@ -70,7 +70,7 @@
      */
     public TypeAnnotationNode(final int typeRef, final TypePath typePath,
             final String desc) {
-        this(Opcodes.ASM5, typeRef, typePath, desc);
+        this(Opcodes.ASM6, typeRef, typePath, desc);
         if (getClass() != TypeAnnotationNode.class) {
             throw new IllegalStateException();
         }
@@ -81,7 +81,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      * @param typeRef
      *            a reference to the annotated type. See {@link TypeReference}.
      * @param typePath
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/TypeInsnNode.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/TypeInsnNode.java
index 17e890a..65f582f 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/TypeInsnNode.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/TypeInsnNode.java
@@ -32,7 +32,6 @@
 import java.util.Map;
 
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
-import org.eclipse.persistence.internal.libraries.asm.Type;
 
 /**
  * A node that represents a type instruction. A type instruction is an
@@ -44,7 +43,7 @@
 
     /**
      * The operand of this instruction. This operand is an internal name (see
-     * {@link Type}).
+     * {@link org.eclipse.persistence.internal.libraries.asm.Type}).
      */
     public String desc;
 
@@ -56,7 +55,7 @@
      *            opcode must be NEW, ANEWARRAY, CHECKCAST or INSTANCEOF.
      * @param desc
      *            the operand of the instruction to be constructed. This operand
-     *            is an internal name (see {@link Type}).
+     *            is an internal name (see {@link org.eclipse.persistence.internal.libraries.asm.Type}).
      */
     public TypeInsnNode(final int opcode, final String desc) {
         super(opcode);
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/Analyzer.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/Analyzer.java
index edcf9e3..930453b 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/Analyzer.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/Analyzer.java
@@ -34,10 +34,10 @@
 import java.util.List;
 import java.util.Map;
 
-import org.eclipse.persistence.internal.libraries.asm.tree.IincInsnNode;
 import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.Type;
 import org.eclipse.persistence.internal.libraries.asm.tree.AbstractInsnNode;
+import org.eclipse.persistence.internal.libraries.asm.tree.IincInsnNode;
 import org.eclipse.persistence.internal.libraries.asm.tree.InsnList;
 import org.eclipse.persistence.internal.libraries.asm.tree.JumpInsnNode;
 import org.eclipse.persistence.internal.libraries.asm.tree.LabelNode;
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/BasicInterpreter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/BasicInterpreter.java
index 3006374..7d85e2d 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/BasicInterpreter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/BasicInterpreter.java
@@ -53,7 +53,7 @@
         Opcodes {
 
     public BasicInterpreter() {
-        super(ASM5);
+        super(ASM6);
     }
 
     protected BasicInterpreter(final int api) {
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/BasicVerifier.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/BasicVerifier.java
index b04f734..3cb40c5 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/BasicVerifier.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/BasicVerifier.java
@@ -47,7 +47,7 @@
 public class BasicVerifier extends BasicInterpreter {
 
     public BasicVerifier() {
-        super(ASM5);
+        super(ASM6);
     }
 
     protected BasicVerifier(final int api) {
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/SimpleVerifier.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/SimpleVerifier.java
index 771bdfa..af29b63 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/SimpleVerifier.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/SimpleVerifier.java
@@ -107,7 +107,7 @@
     public SimpleVerifier(final Type currentClass,
             final Type currentSuperClass,
             final List<Type> currentClassInterfaces, final boolean isInterface) {
-        this(ASM5, currentClass, currentSuperClass, currentClassInterfaces,
+        this(ASM6, currentClass, currentSuperClass, currentClassInterfaces,
                 isInterface);
     }
 
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/SourceInterpreter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/SourceInterpreter.java
index 623a80e..b9148ab 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/SourceInterpreter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/tree/analysis/SourceInterpreter.java
@@ -50,7 +50,7 @@
         Opcodes {
 
     public SourceInterpreter() {
-        super(ASM5);
+        super(ASM6);
     }
 
     protected SourceInterpreter(final int api) {
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/ASMifiable.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/ASMifiable.java
index 9893c17..09fb0f4 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/ASMifiable.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/ASMifiable.java
@@ -31,11 +31,10 @@
 
 import java.util.Map;
 
-import org.eclipse.persistence.internal.libraries.asm.Attribute;
 import org.eclipse.persistence.internal.libraries.asm.Label;
 
 /**
- * An {@link Attribute Attribute} that can print the ASM code
+ * An {@link org.eclipse.persistence.internal.libraries.asm.Attribute Attribute} that can print the ASM code
  * to create an equivalent attribute.
  * 
  * @author Eugene Kuleshov
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/ASMifier.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/ASMifier.java
index fa1b648..4c49023 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/ASMifier.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/ASMifier.java
@@ -89,7 +89,7 @@
      *             If a subclass calls this constructor.
      */
     public ASMifier() {
-        this(Opcodes.ASM5, "cw", 0);
+        this(Opcodes.ASM6, "cw", 0);
         if (getClass() != ASMifier.class) {
             throw new IllegalStateException();
         }
@@ -100,7 +100,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this class. Must be one of
-     *            {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      * @param name
      *            the name of the visitor variable in the produced code.
      * @param id
@@ -173,10 +173,10 @@
         } else {
             text.add("package asm." + name.substring(0, n).replace('/', '.')
                     + ";\n");
-            simpleName = name.substring(n + 1);
+            simpleName = name.substring(n + 1).replace('-', '_');
         }
         text.add("import java.util.*;\n");
-        text.add("import org.objectweb.asm.*;\n");
+        text.add("import org.eclipse.persistence.internal.libraries.asm.*;\n");
         text.add("public class " + simpleName + "Dump implements Opcodes {\n\n");
         text.add("public static byte[] dump () throws Exception {\n\n");
         text.add("ClassWriter cw = new ClassWriter(0);\n");
@@ -208,6 +208,12 @@
         case Opcodes.V1_7:
             buf.append("V1_7");
             break;
+        case Opcodes.V1_8:
+            buf.append("V1_8");
+            break;
+        case Opcodes.V1_9:
+            buf.append("V1_9");
+            break;
         default:
             buf.append(version);
             break;
@@ -245,6 +251,14 @@
         buf.append(");\n\n");
         text.add(buf.toString());
     }
+    
+    @Override
+    public Printer visitModule() {
+        ASMifier a = createASMifier("mdv", 0);
+        text.add("ModuleVisitor mdv = cw.visitModule();\n");
+        text.add(a.getText());
+        return a;
+    }
 
     @Override
     public void visitOuterClass(final String owner, final String name,
@@ -268,7 +282,7 @@
 
     @Override
     public ASMifier visitClassTypeAnnotation(final int typeRef,
-                                             final TypePath typePath, final String desc, final boolean visible) {
+            final TypePath typePath, final String desc, final boolean visible) {
         return visitTypeAnnotation(typeRef, typePath, desc, visible);
     }
 
@@ -357,6 +371,64 @@
     }
 
     // ------------------------------------------------------------------------
+    // Module
+    // ------------------------------------------------------------------------
+    
+    @Override
+    public void visitRequire(String module, int access) {
+        buf.setLength(0);
+        buf.append("mdv.visitRequire(");
+        appendConstant(buf, module);
+        buf.append(", ");
+        appendAccess(access);
+        buf.append(");\n");
+        text.add(buf.toString());
+    }
+    
+    @Override
+    public void visitExport(String packaze, String... modules) {
+        buf.setLength(0);
+        buf.append("mdv.visitExport(");
+        appendConstant(buf, packaze);
+        if (modules != null && modules.length > 0) {
+            buf.append(", new String[] {");
+            for (int i = 0; i < modules.length; ++i) {
+                buf.append(i == 0 ? " " : ", ");
+                appendConstant(modules[i]);
+            }
+            buf.append(" }");
+        }
+        buf.append(");\n");
+        text.add(buf.toString());
+    }
+    
+    @Override
+    public void visitUse(String service) {
+        buf.setLength(0);
+        buf.append("mdv.visitUse(");
+        appendConstant(buf, service);
+        buf.append(");\n");
+        text.add(buf.toString());
+    }
+    
+    @Override
+    public void visitProvide(String service, String impl) {
+        buf.setLength(0);
+        buf.append("mdv.visitProvide(");
+        appendConstant(buf, service);
+        buf.append(", ");
+        appendConstant(buf, impl);
+        buf.append(");\n");
+        text.add(buf.toString());
+    }
+    
+    @Override
+    public void visitModuleEnd() {
+        text.add("mdv.visitEnd();\n");
+    }
+    
+    
+    // ------------------------------------------------------------------------
     // Annotations
     // ------------------------------------------------------------------------
 
@@ -455,7 +527,7 @@
     // ------------------------------------------------------------------------
     // Methods
     // ------------------------------------------------------------------------
-
+    
     @Override
     public void visitParameter(String parameterName, int access) {
         buf.setLength(0);
@@ -943,7 +1015,7 @@
     // ------------------------------------------------------------------------
 
     protected ASMifier createASMifier(final String name, final int id) {
-        return new ASMifier(Opcodes.ASM5, name, id);
+        return new ASMifier(Opcodes.ASM6, name, id);
     }
 
     /**
@@ -1084,11 +1156,15 @@
             buf.append("ACC_DEPRECATED");
             first = false;
         }
-        if ((access & Opcodes.ACC_MANDATED) != 0) {
+        if ((access & (Opcodes.ACC_MANDATED|Opcodes.ACC_MODULE)) != 0) {
             if (!first) {
                 buf.append(" + ");
             }
-            buf.append("ACC_MANDATED");
+            if ((access & ACCESS_CLASS) == 0) {
+                buf.append("ACC_MANDATED");   
+            } else {
+                buf.append("ACC_MODULE");
+            }
             first = false;
         }
         if (first) {
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckAnnotationAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckAnnotationAdapter.java
index b32c48d..8e61822 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckAnnotationAdapter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckAnnotationAdapter.java
@@ -49,7 +49,7 @@
     }
 
     CheckAnnotationAdapter(final AnnotationVisitor av, final boolean named) {
-        super(Opcodes.ASM5, av);
+        super(Opcodes.ASM6, av);
         this.named = named;
     }
 
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckClassAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckClassAdapter.java
index 7c20246..daf4009 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckClassAdapter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckClassAdapter.java
@@ -37,10 +37,6 @@
 import java.util.List;
 import java.util.Map;
 
-import org.eclipse.persistence.internal.libraries.asm.tree.ClassNode;
-import org.eclipse.persistence.internal.libraries.asm.tree.analysis.Analyzer;
-import org.eclipse.persistence.internal.libraries.asm.tree.analysis.BasicValue;
-import org.eclipse.persistence.internal.libraries.asm.tree.analysis.SimpleVerifier;
 import org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Attribute;
 import org.eclipse.persistence.internal.libraries.asm.ClassReader;
@@ -48,12 +44,17 @@
 import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Label;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
+import org.eclipse.persistence.internal.libraries.asm.ModuleVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.Type;
 import org.eclipse.persistence.internal.libraries.asm.TypePath;
 import org.eclipse.persistence.internal.libraries.asm.TypeReference;
+import org.eclipse.persistence.internal.libraries.asm.tree.ClassNode;
 import org.eclipse.persistence.internal.libraries.asm.tree.MethodNode;
+import org.eclipse.persistence.internal.libraries.asm.tree.analysis.Analyzer;
+import org.eclipse.persistence.internal.libraries.asm.tree.analysis.BasicValue;
 import org.eclipse.persistence.internal.libraries.asm.tree.analysis.Frame;
+import org.eclipse.persistence.internal.libraries.asm.tree.analysis.SimpleVerifier;
 
 /**
  * A {@link ClassVisitor} that checks that its methods are properly used. More
@@ -93,9 +94,9 @@
  * insnNumber locals : stack):
  * 
  * <pre>
- * org.objectweb.asm.tree.analysis.AnalyzerException: Error at instruction 71: Expected I, but found .
- *   at org.objectweb.asm.tree.analysis.Analyzer.analyze(Analyzer.java:289)
- *   at org.objectweb.asm.util.CheckClassAdapter.verify(CheckClassAdapter.java:135)
+ * org.eclipse.persistence.internal.libraries.asm.tree.analysis.AnalyzerException: Error at instruction 71: Expected I, but found .
+ *   at org.eclipse.persistence.internal.libraries.asm.tree.analysis.Analyzer.analyze(Analyzer.java:289)
+ *   at org.eclipse.persistence.internal.libraries.asm.util.CheckClassAdapter.verify(CheckClassAdapter.java:135)
  * ...
  * remove()V
  * 00000 LinkedBlockingQueue$Itr . . . . . . . .  :
@@ -334,7 +335,7 @@
      *             If a subclass calls this constructor.
      */
     public CheckClassAdapter(final ClassVisitor cv, final boolean checkDataFlow) {
-        this(Opcodes.ASM5, cv, checkDataFlow);
+        this(Opcodes.ASM6, cv, checkDataFlow);
         if (getClass() != CheckClassAdapter.class) {
             throw new IllegalStateException();
         }
@@ -345,7 +346,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      * @param cv
      *            the class visitor to which this adapter must delegate calls.
      * @param checkDataFlow
@@ -378,7 +379,8 @@
                 + Opcodes.ACC_SUPER + Opcodes.ACC_INTERFACE
                 + Opcodes.ACC_ABSTRACT + Opcodes.ACC_SYNTHETIC
                 + Opcodes.ACC_ANNOTATION + Opcodes.ACC_ENUM
-                + Opcodes.ACC_DEPRECATED + 0x40000); // ClassWriter.ACC_SYNTHETIC_ATTRIBUTE
+                + Opcodes.ACC_DEPRECATED + Opcodes.ACC_MODULE
+                + 0x40000); // ClassWriter.ACC_SYNTHETIC_ATTRIBUTE
         if (name == null || !name.endsWith("package-info")) {
             CheckMethodAdapter.checkInternalName(name, "class name");
         }
@@ -421,6 +423,11 @@
     }
 
     @Override
+    public ModuleVisitor visitModule() {
+        return new CheckModuleAdapter(super.visitModule());
+    }
+    
+    @Override
     public void visitOuterClass(final String owner, final String name,
             final String desc) {
         checkState();
@@ -525,7 +532,7 @@
 
     @Override
     public AnnotationVisitor visitAnnotation(final String desc,
-                                             final boolean visible) {
+            final boolean visible) {
         checkState();
         CheckMethodAdapter.checkDesc(desc, false);
         return new CheckAnnotationAdapter(super.visitAnnotation(desc, visible));
@@ -533,7 +540,7 @@
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(final int typeRef,
-                                                 final TypePath typePath, final String desc, final boolean visible) {
+            final TypePath typePath, final String desc, final boolean visible) {
         checkState();
         int sort = typeRef >>> 24;
         if (sort != TypeReference.CLASS_TYPE_PARAMETER
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckFieldAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckFieldAdapter.java
index d78bd27..5cc8b8c 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckFieldAdapter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckFieldAdapter.java
@@ -31,9 +31,9 @@
 
 import org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Attribute;
+import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.TypePath;
-import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 import org.eclipse.persistence.internal.libraries.asm.TypeReference;
 
 /**
@@ -54,7 +54,7 @@
      *             If a subclass calls this constructor.
      */
     public CheckFieldAdapter(final FieldVisitor fv) {
-        this(Opcodes.ASM5, fv);
+        this(Opcodes.ASM6, fv);
         if (getClass() != CheckFieldAdapter.class) {
             throw new IllegalStateException();
         }
@@ -65,7 +65,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      * @param fv
      *            the field visitor to which this adapter must delegate calls.
      */
@@ -75,7 +75,7 @@
 
     @Override
     public AnnotationVisitor visitAnnotation(final String desc,
-                                             final boolean visible) {
+            final boolean visible) {
         checkEnd();
         CheckMethodAdapter.checkDesc(desc, false);
         return new CheckAnnotationAdapter(super.visitAnnotation(desc, visible));
@@ -83,7 +83,7 @@
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(final int typeRef,
-                                                 final TypePath typePath, final String desc, final boolean visible) {
+            final TypePath typePath, final String desc, final boolean visible) {
         checkEnd();
         int sort = typeRef >>> 24;
         if (sort != TypeReference.FIELD) {
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckMethodAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckMethodAdapter.java
index 0dd52b4..a75bf8f 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckMethodAdapter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckMethodAdapter.java
@@ -39,9 +39,6 @@
 import java.util.Map;
 import java.util.Set;
 
-import org.eclipse.persistence.internal.libraries.asm.tree.analysis.Analyzer;
-import org.eclipse.persistence.internal.libraries.asm.tree.analysis.BasicValue;
-import org.eclipse.persistence.internal.libraries.asm.tree.analysis.BasicVerifier;
 import org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Attribute;
 import org.eclipse.persistence.internal.libraries.asm.Handle;
@@ -52,6 +49,9 @@
 import org.eclipse.persistence.internal.libraries.asm.TypePath;
 import org.eclipse.persistence.internal.libraries.asm.TypeReference;
 import org.eclipse.persistence.internal.libraries.asm.tree.MethodNode;
+import org.eclipse.persistence.internal.libraries.asm.tree.analysis.Analyzer;
+import org.eclipse.persistence.internal.libraries.asm.tree.analysis.BasicValue;
+import org.eclipse.persistence.internal.libraries.asm.tree.analysis.BasicVerifier;
 
 /**
  * A {@link MethodVisitor} that checks that its methods are properly used. More
@@ -60,7 +60,7 @@
  * arguments - such as the fact that the given opcode is correct for a given
  * visit method. This adapter can also perform some basic data flow checks (more
  * precisely those that can be performed without the full class hierarchy - see
- * {@link BasicVerifier}). For instance in a
+ * {@link org.eclipse.persistence.internal.libraries.asm.tree.analysis.BasicVerifier}). For instance in a
  * method whose signature is <tt>void m ()</tt>, the invalid instruction
  * IRETURN, or the invalid sequence IADD L2I will be detected if the data flow
  * checks are enabled. These checks are enabled by using the
@@ -397,7 +397,7 @@
      */
     public CheckMethodAdapter(final MethodVisitor mv,
             final Map<Label, Integer> labels) {
-        this(Opcodes.ASM5, mv, labels);
+        this(Opcodes.ASM6, mv, labels);
         if (getClass() != CheckMethodAdapter.class) {
             throw new IllegalStateException();
         }
@@ -410,7 +410,8 @@
      * 
      * @param api
      *            the ASM API version implemented by this CheckMethodAdapter.
-     *            Must be one of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            Must be one of {@link Opcodes#ASM4}, {@link Opcodes#ASM5}
+     *            or {@link Opcodes#ASM6}.
      * @param mv
      *            the method visitor to which this adapter must delegate calls.
      * @param labels
@@ -483,7 +484,7 @@
 
     @Override
     public AnnotationVisitor visitAnnotation(final String desc,
-                                             final boolean visible) {
+            final boolean visible) {
         checkEndMethod();
         checkDesc(desc, false);
         return new CheckAnnotationAdapter(super.visitAnnotation(desc, visible));
@@ -491,7 +492,7 @@
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(final int typeRef,
-                                                 final TypePath typePath, final String desc, final boolean visible) {
+            final TypePath typePath, final String desc, final boolean visible) {
         checkEndMethod();
         int sort = typeRef >>> 24;
         if (sort != TypeReference.METHOD_TYPE_PARAMETER
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckModuleAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckModuleAdapter.java
new file mode 100644
index 0000000..41633a4
--- /dev/null
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckModuleAdapter.java
@@ -0,0 +1,98 @@
+/***
+ * ASM: a very small and fast Java bytecode manipulation framework
+ * Copyright (c) 2000-2011 INRIA, France Telecom
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holders nor the names of its
+ *    contributors may be used to endorse or promote products derived from
+ *    this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.eclipse.persistence.internal.libraries.asm.util;
+
+import org.eclipse.persistence.internal.libraries.asm.ModuleVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
+
+/**
+ * @author Remi Forax
+ */
+public final class CheckModuleAdapter extends ModuleVisitor {
+    private boolean end;
+
+    public CheckModuleAdapter(final ModuleVisitor mv) {
+        super(Opcodes.ASM6, mv);
+    }
+
+    @Override
+    public void visitRequire(String module, int access) {
+        checkEnd();
+        if (module == null) {
+            throw new IllegalArgumentException("require cannot be null");
+        }
+        super.visitRequire(module, access);
+    }
+    
+    @Override
+    public void visitExport(String packaze, String... modules) {
+        checkEnd();
+        if (packaze == null) {
+            throw new IllegalArgumentException("require cannot be null");
+        }
+        if (modules != null) {
+            for(int i = 0; i < modules.length; i++) {
+                if (modules[i] == null) {
+                    throw new IllegalArgumentException("to at index " + i + " cannot be null");
+                }
+            }
+        }
+        super.visitExport(packaze, modules);
+    }
+    
+    @Override
+    public void visitUse(String service) {
+        checkEnd();
+        CheckMethodAdapter.checkInternalName(service, "service");
+        super.visitUse(service);
+    }
+    
+    @Override
+    public void visitProvide(String service, String impl) {
+        checkEnd();
+        CheckMethodAdapter.checkInternalName(service, "service");
+        CheckMethodAdapter.checkInternalName(impl, "impl");
+        super.visitProvide(service, impl);
+    }
+    
+    @Override
+    public void visitEnd() {
+        checkEnd();
+        end = true;
+        super.visitEnd();
+    }
+
+    private void checkEnd() {
+        if (end) {
+            throw new IllegalStateException(
+                    "Cannot call a visit method after visitEnd has been called");
+        }
+    }
+}
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckSignatureAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckSignatureAdapter.java
index cb17d17..37c94d4 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckSignatureAdapter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/CheckSignatureAdapter.java
@@ -113,7 +113,7 @@
      *            <tt>null</tt>.
      */
     public CheckSignatureAdapter(final int type, final SignatureVisitor sv) {
-        this(Opcodes.ASM5, type, sv);
+        this(Opcodes.ASM6, type, sv);
     }
 
     /**
@@ -121,7 +121,7 @@
      * 
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      * @param type
      *            the type of signature to be checked. See
      *            {@link #CLASS_SIGNATURE}, {@link #METHOD_SIGNATURE} and
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/Printer.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/Printer.java
index 8123a58..48f4924 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/Printer.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/Printer.java
@@ -33,7 +33,10 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.eclipse.persistence.internal.libraries.asm.*;
+import org.eclipse.persistence.internal.libraries.asm.Attribute;
+import org.eclipse.persistence.internal.libraries.asm.Handle;
+import org.eclipse.persistence.internal.libraries.asm.Label;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.TypePath;
 
 /**
@@ -50,14 +53,14 @@
 
     /**
      * The names of the for <code>operand</code> parameter values of the
-     * {@link MethodVisitor#visitIntInsn} method when
+     * {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitIntInsn} method when
      * <code>opcode</code> is <code>NEWARRAY</code>.
      */
     public static final String[] TYPES;
 
     /**
      * The names of the <code>tag</code> field values for
-     * {@link Handle}.
+     * {@link org.eclipse.persistence.internal.libraries.asm.Handle}.
      */
     public static final String[] HANDLE_TAG;
 
@@ -114,7 +117,7 @@
 
     /**
      * The ASM API version implemented by this class. The value of this field
-     * must be one of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     * must be one of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      */
     protected final int api;
 
@@ -142,7 +145,7 @@
      *
      * @param api
      *            the ASM API version implemented by this printer. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      */
     protected Printer(final int api) {
         this.api = api;
@@ -152,7 +155,7 @@
 
     /**
      * Class header.
-     * See {@link ClassVisitor#visit}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.ClassVisitor#visit}.
      *
      * @param version
      *            the class version.
@@ -161,19 +164,19 @@
      *            also indicates if the class is deprecated.
      * @param name
      *            the internal name of the class (see
-     *            {@link Type#getInternalName() getInternalName}).
+     *            {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName() getInternalName}).
      * @param signature
      *            the signature of this class. May be <tt>null</tt> if the class
      *            is not a generic one, and does not extend or implement generic
      *            classes or interfaces.
      * @param superName
      *            the internal of name of the super class (see
-     *            {@link Type#getInternalName() getInternalName}).
+     *            {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName() getInternalName}).
      *            For interfaces, the super class is {@link Object}. May be
      *            <tt>null</tt>, but only for the {@link Object} class.
      * @param interfaces
      *            the internal names of the class's interfaces (see
-     *            {@link Type#getInternalName() getInternalName}).
+     *            {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName() getInternalName}).
      *            May be <tt>null</tt>.
      */
     public abstract void visit(final int version, final int access,
@@ -182,7 +185,7 @@
 
     /**
      * Class source.
-     * See {@link ClassVisitor#visitSource}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.ClassVisitor#visitSource}.
      *
      * @param source
      *            the name of the source file from which the class was compiled.
@@ -194,9 +197,14 @@
      */
     public abstract void visitSource(final String source, final String debug);
 
+    
+    public Printer visitModule() {
+        throw new RuntimeException("Must be overriden");
+    }
+    
     /**
      * Class outer class.
-     * See {@link ClassVisitor#visitOuterClass}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.ClassVisitor#visitOuterClass}.
      *
      * Visits the enclosing class of the class. This method must be called only
      * if the class has an enclosing class.
@@ -217,7 +225,7 @@
 
     /**
      * Class annotation.
-     * See {@link ClassVisitor#visitAnnotation}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.ClassVisitor#visitAnnotation}.
      *
      * @param desc
      *            the class descriptor of the annotation class.
@@ -230,15 +238,15 @@
 
     /**
      * Class type annotation.
-     * See {@link ClassVisitor#visitTypeAnnotation}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.ClassVisitor#visitTypeAnnotation}.
      *
      * @param typeRef
      *            a reference to the annotated type. The sort of this type
      *            reference must be
-     *            {@link TypeReference#CLASS_TYPE_PARAMETER CLASS_TYPE_PARAMETER},
-     *            {@link TypeReference#CLASS_TYPE_PARAMETER_BOUND CLASS_TYPE_PARAMETER_BOUND}
-     *            or {@link TypeReference#CLASS_EXTENDS CLASS_EXTENDS}.
-     *            See {@link TypeReference}.
+     *            {@link org.eclipse.persistence.internal.libraries.asm.TypeReference#CLASS_TYPE_PARAMETER CLASS_TYPE_PARAMETER},
+     *            {@link org.eclipse.persistence.internal.libraries.asm.TypeReference#CLASS_TYPE_PARAMETER_BOUND CLASS_TYPE_PARAMETER_BOUND}
+     *            or {@link org.eclipse.persistence.internal.libraries.asm.TypeReference#CLASS_EXTENDS CLASS_EXTENDS}.
+     *            See {@link org.eclipse.persistence.internal.libraries.asm.TypeReference}.
      * @param typePath
      *            the path to the annotated type argument, wildcard bound, array
      *            element type, or static inner type within 'typeRef'. May be
@@ -250,13 +258,13 @@
      * @return the printer
      */
     public Printer visitClassTypeAnnotation(final int typeRef,
-                                            final TypePath typePath, final String desc, final boolean visible) {
+            final TypePath typePath, final String desc, final boolean visible) {
         throw new RuntimeException("Must be overriden");
     }
 
     /**
      * Class attribute.
-     * See {@link ClassVisitor#visitAttribute}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.ClassVisitor#visitAttribute}.
      *
      * @param attr
      *            an attribute.
@@ -265,14 +273,14 @@
 
     /**
      * Class inner name.
-     * See {@link ClassVisitor#visitInnerClass}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.ClassVisitor#visitInnerClass}.
      *
      * @param name
      *            the internal name of an inner class (see
-     *            {@link Type#getInternalName() getInternalName}).
+     *            {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName() getInternalName}).
      * @param outerName
      *            the internal name of the class to which the inner class
-     *            belongs (see {@link Type#getInternalName() getInternalName}).
+     *            belongs (see {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName() getInternalName}).
      *            May be <tt>null</tt> for not member classes.
      * @param innerName
      *            the (simple) name of the inner class inside its enclosing
@@ -286,7 +294,7 @@
 
     /**
      * Class field.
-     * See {@link ClassVisitor#visitField}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.ClassVisitor#visitField}.
      *
      * @param access
      *            the field's access flags (see {@link Opcodes}). This parameter
@@ -294,7 +302,7 @@
      * @param name
      *            the field's name.
      * @param desc
-     *            the field's descriptor (see {@link Type Type}).
+     *            the field's descriptor (see {@link org.eclipse.persistence.internal.libraries.asm.Type Type}).
      * @param signature
      *            the field's signature. May be <tt>null</tt> if the field's
      *            type does not use generic types.
@@ -315,7 +323,7 @@
 
     /**
      * Class method.
-     * See {@link ClassVisitor#visitMethod}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.ClassVisitor#visitMethod}.
      *
      * @param access
      *            the method's access flags (see {@link Opcodes}). This
@@ -324,14 +332,14 @@
      * @param name
      *            the method's name.
      * @param desc
-     *            the method's descriptor (see {@link Type Type}).
+     *            the method's descriptor (see {@link org.eclipse.persistence.internal.libraries.asm.Type Type}).
      * @param signature
      *            the method's signature. May be <tt>null</tt> if the method
      *            parameters, return type and exceptions do not use generic
      *            types.
      * @param exceptions
      *            the internal names of the method's exception classes (see
-     *            {@link Type#getInternalName() getInternalName}). May be
+     *            {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName() getInternalName}). May be
      *            <tt>null</tt>.
      * @return the printer
      */
@@ -339,17 +347,44 @@
             final String desc, final String signature, final String[] exceptions);
 
     /**
-     * Class end. See {@link ClassVisitor#visitEnd}.
+     * Class end. See {@link org.eclipse.persistence.internal.libraries.asm.ClassVisitor#visitEnd}.
      */
     public abstract void visitClassEnd();
 
     // ------------------------------------------------------------------------
+    // Module
+    // ------------------------------------------------------------------------
+    
+    public void visitRequire(String module, int access) {
+        throw new RuntimeException("Must be overriden");
+    }
+    
+    public void visitExport(String packaze, String... modules) {
+        throw new RuntimeException("Must be overriden");
+    }
+    
+    public void visitUse(String service) {
+        throw new RuntimeException("Must be overriden");
+    }
+    
+    public void visitProvide(String service, String impl) {
+        throw new RuntimeException("Must be overriden");
+    }
+    
+    /**
+     * Module end. See {@link org.eclipse.persistence.internal.libraries.asm.ModuleVisitor#visitEnd}.
+     */
+    public void visitModuleEnd() {
+        throw new RuntimeException("Must be overriden");
+    }
+    
+    // ------------------------------------------------------------------------
     // Annotations
     // ------------------------------------------------------------------------
 
     /**
      * Annotation value.
-     * See {@link AnnotationVisitor#visit}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor#visit}.
      *
      * @param name
      *            the value name.
@@ -357,7 +392,7 @@
      *            the actual value, whose type must be {@link Byte},
      *            {@link Boolean}, {@link Character}, {@link Short},
      *            {@link Integer} , {@link Long}, {@link Float}, {@link Double},
-     *            {@link String} or {@link Type}
+     *            {@link String} or {@link org.eclipse.persistence.internal.libraries.asm.Type}
      *            or OBJECT or ARRAY sort.
      *            This value can also be an array of byte, boolean, short, char, int,
      *            long, float or double values (this is equivalent to using
@@ -368,7 +403,7 @@
 
     /**
      * Annotation enum value.
-     * See {@link AnnotationVisitor#visitEnum}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor#visitEnum}.
      *
      * Visits an enumeration value of the annotation.
      *
@@ -384,7 +419,7 @@
 
     /**
      * Nested annotation value.
-     * See {@link AnnotationVisitor#visitAnnotation}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor#visitAnnotation}.
      *
      * @param name
      *            the value name.
@@ -396,12 +431,12 @@
 
     /**
      * Annotation array value.
-     * See {@link AnnotationVisitor#visitArray}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor#visitArray}.
      *
      * Visits an array value of the annotation. Note that arrays of primitive
      * types (such as byte, boolean, short, char, int, long, float or double)
      * can be passed as value to {@link #visit visit}. This is what
-     * {@link ClassReader} does.
+     * {@link org.eclipse.persistence.internal.libraries.asm.ClassReader} does.
      *
      * @param name
      *            the value name.
@@ -410,7 +445,7 @@
     public abstract Printer visitArray(final String name);
 
     /**
-     * Annotation end. See {@link AnnotationVisitor#visitEnd}.
+     * Annotation end. See {@link org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor#visitEnd}.
      */
     public abstract void visitAnnotationEnd();
 
@@ -420,7 +455,7 @@
 
     /**
      * Field annotation.
-     * See {@link FieldVisitor#visitAnnotation}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.FieldVisitor#visitAnnotation}.
      *
      * @param desc
      *            the class descriptor of the annotation class.
@@ -433,12 +468,12 @@
 
     /**
      * Field type annotation.
-     * See {@link FieldVisitor#visitTypeAnnotation}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.FieldVisitor#visitTypeAnnotation}.
      *
      * @param typeRef
      *            a reference to the annotated type. The sort of this type
-     *            reference must be {@link TypeReference#FIELD FIELD}.
-     *            See {@link TypeReference}.
+     *            reference must be {@link org.eclipse.persistence.internal.libraries.asm.TypeReference#FIELD FIELD}.
+     *            See {@link org.eclipse.persistence.internal.libraries.asm.TypeReference}.
      * @param typePath
      *            the path to the annotated type argument, wildcard bound, array
      *            element type, or static inner type within 'typeRef'. May be
@@ -456,7 +491,7 @@
 
     /**
      * Field attribute.
-     * See {@link FieldVisitor#visitAttribute}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.FieldVisitor#visitAttribute}.
      *
      * @param attr
      *            an attribute.
@@ -465,7 +500,7 @@
 
     /**
      * Field end.
-     * See {@link FieldVisitor#visitEnd}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.FieldVisitor#visitEnd}.
      */
     public abstract void visitFieldEnd();
 
@@ -475,7 +510,7 @@
 
     /**
      * Method parameter.
-     * See {@link MethodVisitor#visitParameter(String, int)}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitParameter(String, int)}.
      *
      * @param name
      *            parameter name or null if none is provided.
@@ -490,7 +525,7 @@
 
     /**
      * Method default annotation.
-     * See {@link MethodVisitor#visitAnnotationDefault}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitAnnotationDefault}.
      *
      * @return the printer
      */
@@ -498,7 +533,7 @@
 
     /**
      * Method annotation.
-     * See {@link MethodVisitor#visitAnnotation}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitAnnotation}.
      *
      * @param desc
      *            the class descriptor of the annotation class.
@@ -511,12 +546,12 @@
 
     /**
      * Method type annotation.
-     * See {@link MethodVisitor#visitTypeAnnotation}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitTypeAnnotation}.
      *
      * @param typeRef
      *            a reference to the annotated type. The sort of this type
-     *            reference must be {@link TypeReference#FIELD FIELD}.
-     *            See {@link TypeReference}.
+     *            reference must be {@link org.eclipse.persistence.internal.libraries.asm.TypeReference#FIELD FIELD}.
+     *            See {@link org.eclipse.persistence.internal.libraries.asm.TypeReference}.
      * @param typePath
      *            the path to the annotated type argument, wildcard bound, array
      *            element type, or static inner type within 'typeRef'. May be
@@ -534,7 +569,7 @@
 
     /**
      * Method parameter annotation.
-     * See {@link MethodVisitor#visitParameterAnnotation}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitParameterAnnotation}.
      *
      * @param parameter
      *            the parameter index.
@@ -549,7 +584,7 @@
 
     /**
      * Method attribute.
-     * See {@link MethodVisitor#visitAttribute}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitAttribute}.
      *
      * @param attr
      *            an attribute.
@@ -558,13 +593,13 @@
 
     /**
      * Method start.
-     * See {@link MethodVisitor#visitCode}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitCode}.
      */
     public abstract void visitCode();
 
     /**
      * Method stack frame.
-     * See {@link MethodVisitor#visitFrame}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitFrame}.
      *
      * Visits the current state of the local variables and operand stack
      * elements. This method must(*) be called <i>just before</i> any
@@ -645,7 +680,7 @@
 
     /**
      * Method instruction.
-     * See {@link MethodVisitor#visitInsn}
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitInsn}
      *
      * @param opcode
      *            the opcode of the instruction to be visited. This opcode is
@@ -668,7 +703,7 @@
 
     /**
      * Method instruction.
-     * See {@link MethodVisitor#visitIntInsn}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitIntInsn}.
      *
      * @param opcode
      *            the opcode of the instruction to be visited. This opcode is
@@ -689,7 +724,7 @@
 
     /**
      * Method instruction.
-     * See {@link MethodVisitor#visitVarInsn}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitVarInsn}.
      *
      * @param opcode
      *            the opcode of the local variable instruction to be visited.
@@ -703,7 +738,7 @@
 
     /**
      * Method instruction.
-     * See {@link MethodVisitor#visitTypeInsn}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitTypeInsn}.
      *
     /**
      * Visits a type instruction. A type instruction is an instruction that
@@ -715,31 +750,31 @@
      * @param type
      *            the operand of the instruction to be visited. This operand
      *            must be the internal name of an object or array class (see
-     *            {@link Type#getInternalName() getInternalName}).
+     *            {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName() getInternalName}).
      */
     public abstract void visitTypeInsn(final int opcode, final String type);
 
     /**
      * Method instruction.
-     * See {@link MethodVisitor#visitFieldInsn}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitFieldInsn}.
      *
      * @param opcode
      *            the opcode of the type instruction to be visited. This opcode
      *            is either GETSTATIC, PUTSTATIC, GETFIELD or PUTFIELD.
      * @param owner
      *            the internal name of the field's owner class (see
-     *            {@link Type#getInternalName() getInternalName}).
+     *            {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName() getInternalName}).
      * @param name
      *            the field's name.
      * @param desc
-     *            the field's descriptor (see {@link Type Type}).
+     *            the field's descriptor (see {@link org.eclipse.persistence.internal.libraries.asm.Type Type}).
      */
     public abstract void visitFieldInsn(final int opcode, final String owner,
             final String name, final String desc);
 
     /**
      * Method instruction.
-     * See {@link MethodVisitor#visitMethodInsn}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitMethodInsn}.
      *
      * @param opcode
      *            the opcode of the type instruction to be visited. This opcode
@@ -747,11 +782,11 @@
      *            INVOKEINTERFACE.
      * @param owner
      *            the internal name of the method's owner class (see
-     *            {@link Type#getInternalName() getInternalName}).
+     *            {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName() getInternalName}).
      * @param name
      *            the method's name.
      * @param desc
-     *            the method's descriptor (see {@link Type Type}).
+     *            the method's descriptor (see {@link org.eclipse.persistence.internal.libraries.asm.Type Type}).
      */
     @Deprecated
     public void visitMethodInsn(final int opcode, final String owner,
@@ -766,7 +801,7 @@
 
     /**
      * Method instruction.
-     * See {@link MethodVisitor#visitMethodInsn}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitMethodInsn}.
      *
      * @param opcode
      *            the opcode of the type instruction to be visited. This opcode
@@ -774,11 +809,11 @@
      *            INVOKEINTERFACE.
      * @param owner
      *            the internal name of the method's owner class (see
-     *            {@link Type#getInternalName() getInternalName}).
+     *            {@link org.eclipse.persistence.internal.libraries.asm.Type#getInternalName() getInternalName}).
      * @param name
      *            the method's name.
      * @param desc
-     *            the method's descriptor (see {@link Type Type}).
+     *            the method's descriptor (see {@link org.eclipse.persistence.internal.libraries.asm.Type Type}).
      * @param itf
      *            if the method's owner class is an interface.
      */
@@ -797,20 +832,20 @@
 
     /**
      * Method instruction.
-     * See {@link MethodVisitor#visitInvokeDynamicInsn}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitInvokeDynamicInsn}.
      *
      * Visits an invokedynamic instruction.
      *
      * @param name
      *            the method's name.
      * @param desc
-     *            the method's descriptor (see {@link Type Type}).
+     *            the method's descriptor (see {@link org.eclipse.persistence.internal.libraries.asm.Type Type}).
      * @param bsm
      *            the bootstrap method.
      * @param bsmArgs
      *            the bootstrap method constant arguments. Each argument must be
      *            an {@link Integer}, {@link Float}, {@link Long},
-     *            {@link Double}, {@link String}, {@link Type} or {@link Handle}
+     *            {@link Double}, {@link String}, {@link org.eclipse.persistence.internal.libraries.asm.Type} or {@link Handle}
      *            value. This method is allowed to modify the content of the
      *            array so a caller should expect that this array may change.
      */
@@ -819,7 +854,7 @@
 
     /**
      * Method jump instruction.
-     * See {@link MethodVisitor#visitJumpInsn}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitJumpInsn}.
      *
      * @param opcode
      *            the opcode of the type instruction to be visited. This opcode
@@ -835,7 +870,7 @@
 
     /**
      * Method label.
-     * See {@link MethodVisitor#visitLabel}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitLabel}.
      *
      * @param label
      *            a {@link Label Label} object.
@@ -844,7 +879,7 @@
 
     /**
      * Method instruction.
-     * See {@link MethodVisitor#visitLdcInsn}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitLdcInsn}.
      *
      * Visits a LDC instruction. Note that new constant types may be added in
      * future versions of the Java Virtual Machine. To easily detect new
@@ -883,9 +918,9 @@
      * @param cst
      *            the constant to be loaded on the stack. This parameter must be
      *            a non null {@link Integer}, a {@link Float}, a {@link Long}, a
-     *            {@link Double}, a {@link String}, a {@link Type}
+     *            {@link Double}, a {@link String}, a {@link org.eclipse.persistence.internal.libraries.asm.Type}
      *            of OBJECT or ARRAY sort for <tt>.class</tt> constants, for classes whose
-     *            version is 49.0, a {@link Type} of METHOD sort or a
+     *            version is 49.0, a {@link org.eclipse.persistence.internal.libraries.asm.Type} of METHOD sort or a
      *            {@link Handle} for MethodType and MethodHandle constants, for
      *            classes whose version is 51.0.
      */
@@ -893,7 +928,7 @@
 
     /**
      * Method instruction.
-     * See {@link MethodVisitor#visitIincInsn}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitIincInsn}.
      *
      * @param var
      *            index of the local variable to be incremented.
@@ -904,7 +939,7 @@
 
     /**
      * Method instruction.
-     * See {@link MethodVisitor#visitTableSwitchInsn}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitTableSwitchInsn}.
      *
      * @param min
      *            the minimum key value.
@@ -921,7 +956,7 @@
 
     /**
      * Method instruction.
-     * See {@link MethodVisitor#visitLookupSwitchInsn}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitLookupSwitchInsn}.
      *
      * @param dflt
      *            beginning of the default handler block.
@@ -936,10 +971,10 @@
 
     /**
      * Method instruction.
-     * See {@link MethodVisitor#visitMultiANewArrayInsn}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitMultiANewArrayInsn}.
      *
      * @param desc
-     *            an array type descriptor (see {@link Type Type}).
+     *            an array type descriptor (see {@link org.eclipse.persistence.internal.libraries.asm.Type Type}).
      * @param dims
      *            number of dimensions of the array to allocate.
      */
@@ -948,20 +983,20 @@
 
     /**
      * Instruction type annotation.
-     * See {@link MethodVisitor#visitInsnAnnotation}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitInsnAnnotation}.
      *
      * @param typeRef
      *            a reference to the annotated type. The sort of this type
-     *            reference must be {@link TypeReference#INSTANCEOF INSTANCEOF},
-     *            {@link TypeReference#NEW NEW},
-     *            {@link TypeReference#CONSTRUCTOR_REFERENCE CONSTRUCTOR_REFERENCE},
-     *            {@link TypeReference#METHOD_REFERENCE METHOD_REFERENCE},
-     *            {@link TypeReference#CAST CAST},
-     *            {@link TypeReference#CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT},
-     *            {@link TypeReference#METHOD_INVOCATION_TYPE_ARGUMENT METHOD_INVOCATION_TYPE_ARGUMENT},
-     *            {@link TypeReference#CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT},
-     *            or {@link TypeReference#METHOD_REFERENCE_TYPE_ARGUMENT METHOD_REFERENCE_TYPE_ARGUMENT}.
-     *            See {@link TypeReference}.
+     *            reference must be {@link org.eclipse.persistence.internal.libraries.asm.TypeReference#INSTANCEOF INSTANCEOF},
+     *            {@link org.eclipse.persistence.internal.libraries.asm.TypeReference#NEW NEW},
+     *            {@link org.eclipse.persistence.internal.libraries.asm.TypeReference#CONSTRUCTOR_REFERENCE CONSTRUCTOR_REFERENCE},
+     *            {@link org.eclipse.persistence.internal.libraries.asm.TypeReference#METHOD_REFERENCE METHOD_REFERENCE},
+     *            {@link org.eclipse.persistence.internal.libraries.asm.TypeReference#CAST CAST},
+     *            {@link org.eclipse.persistence.internal.libraries.asm.TypeReference#CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT},
+     *            {@link org.eclipse.persistence.internal.libraries.asm.TypeReference#METHOD_INVOCATION_TYPE_ARGUMENT METHOD_INVOCATION_TYPE_ARGUMENT},
+     *            {@link org.eclipse.persistence.internal.libraries.asm.TypeReference#CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT},
+     *            or {@link org.eclipse.persistence.internal.libraries.asm.TypeReference#METHOD_REFERENCE_TYPE_ARGUMENT METHOD_REFERENCE_TYPE_ARGUMENT}.
+     *            See {@link org.eclipse.persistence.internal.libraries.asm.TypeReference}.
      * @param typePath
      *            the path to the annotated type argument, wildcard bound, array
      *            element type, or static inner type within 'typeRef'. May be
@@ -979,7 +1014,7 @@
 
     /**
      * Method exception handler.
-     * See {@link MethodVisitor#visitTryCatchBlock}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitTryCatchBlock}.
      *
      * @param start
      *            beginning of the exception handler's scope (inclusive).
@@ -1000,13 +1035,13 @@
 
     /**
      * Try catch block type annotation.
-     * See {@link MethodVisitor#visitTryCatchAnnotation}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitTryCatchAnnotation}.
      *
      * @param typeRef
      *            a reference to the annotated type. The sort of this type
-     *            reference must be {@link TypeReference#EXCEPTION_PARAMETER
+     *            reference must be {@link org.eclipse.persistence.internal.libraries.asm.TypeReference#EXCEPTION_PARAMETER
      *            EXCEPTION_PARAMETER}.
-     *            See {@link TypeReference}.
+     *            See {@link org.eclipse.persistence.internal.libraries.asm.TypeReference}.
      * @param typePath
      *            the path to the annotated type argument, wildcard bound, array
      *            element type, or static inner type within 'typeRef'. May be
@@ -1024,7 +1059,7 @@
 
     /**
      * Method debug info.
-     * See {@link MethodVisitor#visitLocalVariable}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitLocalVariable}.
      *
      * @param name
      *            the name of a local variable.
@@ -1052,14 +1087,14 @@
 
     /**
      * Local variable type annotation.
-     * See {@link MethodVisitor#visitTryCatchAnnotation}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitTryCatchAnnotation}.
      *
      * @param typeRef
      *            a reference to the annotated type. The sort of this type
-     *            reference must be {@link TypeReference#LOCAL_VARIABLE
-     *            LOCAL_VARIABLE} or {@link TypeReference#RESOURCE_VARIABLE
+     *            reference must be {@link org.eclipse.persistence.internal.libraries.asm.TypeReference#LOCAL_VARIABLE
+     *            LOCAL_VARIABLE} or {@link org.eclipse.persistence.internal.libraries.asm.TypeReference#RESOURCE_VARIABLE
      *            RESOURCE_VARIABLE}.
-     *            See {@link TypeReference}.
+     *            See {@link org.eclipse.persistence.internal.libraries.asm.TypeReference}.
      * @param typePath
      *            the path to the annotated type argument, wildcard bound, array
      *            element type, or static inner type within 'typeRef'. May be
@@ -1088,7 +1123,7 @@
 
     /**
      * Method debug info.
-     * See {@link MethodVisitor#visitLineNumber}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitLineNumber}.
      *
      * @param line
      *            a line number. This number refers to the source file from
@@ -1103,7 +1138,7 @@
 
     /**
      * Method max stack and max locals.
-     * See {@link MethodVisitor#visitMaxs}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitMaxs}.
      *
      * @param maxStack
      *            maximum stack size of the method.
@@ -1114,7 +1149,7 @@
 
     /**
      * Method end.
-     * See {@link MethodVisitor#visitEnd}.
+     * See {@link org.eclipse.persistence.internal.libraries.asm.MethodVisitor#visitEnd}.
      */
     public abstract void visitMethodEnd();
 
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/Textifiable.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/Textifiable.java
index b39a236..3124657 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/Textifiable.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/Textifiable.java
@@ -31,11 +31,10 @@
 
 import java.util.Map;
 
-import org.eclipse.persistence.internal.libraries.asm.Attribute;
 import org.eclipse.persistence.internal.libraries.asm.Label;
 
 /**
- * An {@link Attribute Attribute} that can print a readable
+ * An {@link org.eclipse.persistence.internal.libraries.asm.Attribute Attribute} that can print a readable
  * representation of itself.
  * 
  * Implementations should construct readable output from an attribute data
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/Textifier.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/Textifier.java
index 2a75c71..0f93fda 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/Textifier.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/Textifier.java
@@ -34,7 +34,6 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.eclipse.persistence.internal.libraries.asm.signature.SignatureReader;
 import org.eclipse.persistence.internal.libraries.asm.Attribute;
 import org.eclipse.persistence.internal.libraries.asm.ClassReader;
 import org.eclipse.persistence.internal.libraries.asm.Handle;
@@ -43,6 +42,7 @@
 import org.eclipse.persistence.internal.libraries.asm.Type;
 import org.eclipse.persistence.internal.libraries.asm.TypePath;
 import org.eclipse.persistence.internal.libraries.asm.TypeReference;
+import org.eclipse.persistence.internal.libraries.asm.signature.SignatureReader;
 
 /**
  * A {@link Printer} that prints a disassembled view of the classes it visits.
@@ -153,7 +153,7 @@
      *             If a subclass calls this constructor.
      */
     public Textifier() {
-        this(Opcodes.ASM5);
+        this(Opcodes.ASM6);
         if (getClass() != Textifier.class) {
             throw new IllegalStateException();
         }
@@ -164,7 +164,7 @@
      *
      * @param api
      *            the ASM API version implemented by this visitor. Must be one
-     *            of {@link Opcodes#ASM4} or {@link Opcodes#ASM5}.
+     *            of {@link Opcodes#ASM4}, {@link Opcodes#ASM5} or {@link Opcodes#ASM6}.
      */
     protected Textifier(final int api) {
         super(api);
@@ -242,15 +242,19 @@
                     .append(sv.getDeclaration()).append('\n');
         }
 
-        appendAccess(access & ~Opcodes.ACC_SUPER);
+        String internalName = name;
+        appendAccess(access & ~(Opcodes.ACC_SUPER|Opcodes.ACC_MODULE));
         if ((access & Opcodes.ACC_ANNOTATION) != 0) {
             buf.append("@interface ");
         } else if ((access & Opcodes.ACC_INTERFACE) != 0) {
             buf.append("interface ");
+        } else if ((access & Opcodes.ACC_MODULE) != 0) {
+            buf.append("module ");
+            internalName = name.substring(0, name.length() - "/module-info".length());
         } else if ((access & Opcodes.ACC_ENUM) == 0) {
             buf.append("class ");
         }
-        appendDescriptor(INTERNAL_NAME, name);
+        appendDescriptor(INTERNAL_NAME, internalName);
 
         if (superName != null && !"java/lang/Object".equals(superName)) {
             buf.append(" extends ");
@@ -284,6 +288,13 @@
             text.add(buf.toString());
         }
     }
+    
+    @Override
+    public Printer visitModule() {
+        Textifier t = createTextifier();
+        text.add(t.getText());
+        return t;
+    }
 
     @Override
     public void visitOuterClass(final String owner, final String name,
@@ -308,7 +319,7 @@
     }
 
     @Override
-    public Printer visitClassTypeAnnotation(int typeRef, TypePath typePath,
+    public Textifier visitClassTypeAnnotation(int typeRef, TypePath typePath,
             String desc, boolean visible) {
         text.add("\n");
         return visitTypeAnnotation(typeRef, typePath, desc, visible);
@@ -454,6 +465,64 @@
     }
 
     // ------------------------------------------------------------------------
+    // Module
+    // ------------------------------------------------------------------------
+    
+    @Override
+    public void visitRequire(String require, int access) {
+        buf.setLength(0);
+        buf.append(tab).append("requires ");
+        if ((access & Opcodes.ACC_PUBLIC) != 0) {
+            buf.append("public ");
+        }
+        buf.append(require)
+           .append(";  // access flags 0x")
+           .append(Integer.toHexString(access).toUpperCase())
+           .append('\n');
+        text.add(buf.toString());
+    }
+    
+    @Override
+    public void visitExport(String export, String... tos) {
+        buf.setLength(0);
+        buf.append(tab).append("exports ").append(export);
+        if (tos != null && tos.length > 0) {
+            buf.append(" to\n");
+            for (int i = 0; i < tos.length; ++i) {
+                buf.append(tab2).append(tos[i]);
+                buf.append(i != tos.length - 1 ? ",\n": "");
+            }
+        }
+        buf.append(";\n");
+        text.add(buf.toString());
+    }
+    
+    @Override
+    public void visitUse(String use) {
+        buf.setLength(0);
+        buf.append(tab).append("uses ");
+        appendDescriptor(INTERNAL_NAME, use);
+        buf.append(";\n");
+        text.add(buf.toString());
+    }
+    
+    @Override
+    public void visitProvide(String provide, String with) {
+        buf.setLength(0);
+        buf.append(tab).append("provides ");
+        appendDescriptor(INTERNAL_NAME, provide);
+        buf.append(" with\n").append(tab2);
+        appendDescriptor(INTERNAL_NAME, with);
+        buf.append(";\n");
+        text.add(buf.toString());
+    }
+    
+    @Override
+    public void visitModuleEnd() {
+        // empty
+    }
+    
+    // ------------------------------------------------------------------------
     // Annotations
     // ------------------------------------------------------------------------
 
@@ -643,7 +712,7 @@
     }
 
     @Override
-    public Printer visitFieldTypeAnnotation(int typeRef, TypePath typePath,
+    public Textifier visitFieldTypeAnnotation(int typeRef, TypePath typePath,
             String desc, boolean visible) {
         return visitTypeAnnotation(typeRef, typePath, desc, visible);
     }
@@ -687,7 +756,7 @@
     }
 
     @Override
-    public Printer visitMethodTypeAnnotation(int typeRef, TypePath typePath,
+    public Textifier visitMethodTypeAnnotation(int typeRef, TypePath typePath,
             String desc, boolean visible) {
         return visitTypeAnnotation(typeRef, typePath, desc, visible);
     }
@@ -968,7 +1037,7 @@
     }
 
     @Override
-    public Printer visitInsnAnnotation(int typeRef, TypePath typePath,
+    public Textifier visitInsnAnnotation(int typeRef, TypePath typePath,
             String desc, boolean visible) {
         return visitTypeAnnotation(typeRef, typePath, desc, visible);
     }
@@ -990,7 +1059,7 @@
     }
 
     @Override
-    public Printer visitTryCatchAnnotation(int typeRef, TypePath typePath,
+    public Textifier visitTryCatchAnnotation(int typeRef, TypePath typePath,
             String desc, boolean visible) {
         buf.setLength(0);
         buf.append(tab2).append("TRYCATCHBLOCK @");
@@ -1035,7 +1104,7 @@
     }
 
     @Override
-    public Printer visitLocalVariableAnnotation(int typeRef, TypePath typePath,
+    public Textifier visitLocalVariableAnnotation(int typeRef, TypePath typePath,
             Label[] start, Label[] end, int[] index, String desc,
             boolean visible) {
         buf.setLength(0);
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceAnnotationVisitor.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceAnnotationVisitor.java
index 7e18757..9ccb280 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceAnnotationVisitor.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceAnnotationVisitor.java
@@ -47,7 +47,7 @@
     }
 
     public TraceAnnotationVisitor(final AnnotationVisitor av, final Printer p) {
-        super(Opcodes.ASM5, av);
+        super(Opcodes.ASM6, av);
         this.p = p;
     }
 
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceClassVisitor.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceClassVisitor.java
index 448bb29..2666a16 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceClassVisitor.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceClassVisitor.java
@@ -33,11 +33,12 @@
 
 import org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Attribute;
-import org.eclipse.persistence.internal.libraries.asm.Opcodes;
-import org.eclipse.persistence.internal.libraries.asm.TypePath;
 import org.eclipse.persistence.internal.libraries.asm.ClassVisitor;
 import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
+import org.eclipse.persistence.internal.libraries.asm.ModuleVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
+import org.eclipse.persistence.internal.libraries.asm.TypePath;
 
 /**
  * A {@link ClassVisitor} that prints the classes it visits with a
@@ -131,7 +132,7 @@
      */
     public TraceClassVisitor(final ClassVisitor cv, final Printer p,
             final PrintWriter pw) {
-        super(Opcodes.ASM5, cv);
+        super(Opcodes.ASM6, cv);
         this.pw = pw;
         this.p = p;
     }
@@ -149,6 +150,13 @@
         p.visitSource(file, debug);
         super.visitSource(file, debug);
     }
+    
+    @Override
+    public ModuleVisitor visitModule() {
+        Printer p = this.p.visitModule();
+        ModuleVisitor mv =  super.visitModule();
+        return new TraceModuleVisitor(mv, p);
+    }
 
     @Override
     public void visitOuterClass(final String owner, final String name,
@@ -159,7 +167,7 @@
 
     @Override
     public AnnotationVisitor visitAnnotation(final String desc,
-                                             final boolean visible) {
+            final boolean visible) {
         Printer p = this.p.visitClassAnnotation(desc, visible);
         AnnotationVisitor av = cv == null ? null : cv.visitAnnotation(desc,
                 visible);
@@ -168,7 +176,7 @@
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(int typeRef,
-                                                 TypePath typePath, String desc, boolean visible) {
+            TypePath typePath, String desc, boolean visible) {
         Printer p = this.p.visitClassTypeAnnotation(typeRef, typePath, desc,
                 visible);
         AnnotationVisitor av = cv == null ? null : cv.visitTypeAnnotation(
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceFieldVisitor.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceFieldVisitor.java
index 669694c..e6a583c 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceFieldVisitor.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceFieldVisitor.java
@@ -31,9 +31,9 @@
 
 import org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Attribute;
+import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.TypePath;
-import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 
 /**
  * A {@link FieldVisitor} that prints the fields it visits with a
@@ -50,13 +50,13 @@
     }
 
     public TraceFieldVisitor(final FieldVisitor fv, final Printer p) {
-        super(Opcodes.ASM5, fv);
+        super(Opcodes.ASM6, fv);
         this.p = p;
     }
 
     @Override
     public AnnotationVisitor visitAnnotation(final String desc,
-                                             final boolean visible) {
+            final boolean visible) {
         Printer p = this.p.visitFieldAnnotation(desc, visible);
         AnnotationVisitor av = fv == null ? null : fv.visitAnnotation(desc,
                 visible);
@@ -65,7 +65,7 @@
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(int typeRef,
-                                                 TypePath typePath, String desc, boolean visible) {
+            TypePath typePath, String desc, boolean visible) {
         Printer p = this.p.visitFieldTypeAnnotation(typeRef, typePath, desc,
                 visible);
         AnnotationVisitor av = fv == null ? null : fv.visitTypeAnnotation(
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceMethodVisitor.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceMethodVisitor.java
index cb53b82..301d531 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceMethodVisitor.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceMethodVisitor.java
@@ -30,12 +30,12 @@
 package org.eclipse.persistence.internal.libraries.asm.util;
 
 import org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor;
-import org.eclipse.persistence.internal.libraries.asm.TypePath;
 import org.eclipse.persistence.internal.libraries.asm.Attribute;
 import org.eclipse.persistence.internal.libraries.asm.Handle;
 import org.eclipse.persistence.internal.libraries.asm.Label;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Opcodes;
+import org.eclipse.persistence.internal.libraries.asm.TypePath;
 
 /**
  * A {@link MethodVisitor} that prints the methods it visits with a
@@ -52,7 +52,7 @@
     }
 
     public TraceMethodVisitor(final MethodVisitor mv, final Printer p) {
-        super(Opcodes.ASM5, mv);
+        super(Opcodes.ASM6, mv);
         this.p = p;
     }
 
@@ -64,7 +64,7 @@
 
     @Override
     public AnnotationVisitor visitAnnotation(final String desc,
-                                             final boolean visible) {
+            final boolean visible) {
         Printer p = this.p.visitMethodAnnotation(desc, visible);
         AnnotationVisitor av = mv == null ? null : mv.visitAnnotation(desc,
                 visible);
@@ -73,7 +73,7 @@
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(int typeRef,
-                                                 TypePath typePath, String desc, boolean visible) {
+            TypePath typePath, String desc, boolean visible) {
         Printer p = this.p.visitMethodTypeAnnotation(typeRef, typePath, desc,
                 visible);
         AnnotationVisitor av = mv == null ? null : mv.visitTypeAnnotation(
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceModuleVisitor.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceModuleVisitor.java
new file mode 100644
index 0000000..b39c61d
--- /dev/null
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceModuleVisitor.java
@@ -0,0 +1,83 @@
+/***
+ * ASM: a very small and fast Java bytecode manipulation framework
+ * Copyright (c) 2000-2011 INRIA, France Telecom
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holders nor the names of its
+ *    contributors may be used to endorse or promote products derived from
+ *    this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.eclipse.persistence.internal.libraries.asm.util;
+
+import org.eclipse.persistence.internal.libraries.asm.ModuleVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
+
+/**
+ * A {@link ModuleVisitor} that prints the fields it visits with a
+ * {@link Printer}.
+ * 
+ * @author Remi Forax
+ */
+public final class TraceModuleVisitor extends ModuleVisitor {
+    
+    public final Printer p;
+
+    public TraceModuleVisitor(final Printer p) {
+        this(null, p);
+    }
+
+    public TraceModuleVisitor(final ModuleVisitor mv, final Printer p) {
+        super(Opcodes.ASM6, mv);
+        this.p = p;
+    }
+
+    @Override
+    public void visitRequire(String module, int access) {
+        p.visitRequire(module, access);
+        super.visitRequire(module, access);
+    }
+    
+    @Override
+    public void visitExport(String packaze, String... modules) {
+        p.visitExport(packaze, modules);
+        super.visitExport(packaze, modules);
+    }
+    
+    @Override
+    public void visitUse(String use) {
+        p.visitUse(use);
+        super.visitUse(use);
+    }
+    
+    @Override
+    public void visitProvide(String service, String impl) {
+        p.visitProvide(service, impl);
+        super.visitProvide(service, impl);
+    }
+
+    @Override
+    public void visitEnd() {
+        p.visitModuleEnd();
+        super.visitEnd();
+    }
+}
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceSignatureVisitor.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceSignatureVisitor.java
index 8bed661..51c2d03 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceSignatureVisitor.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/util/TraceSignatureVisitor.java
@@ -75,13 +75,13 @@
     private String separator = "";
 
     public TraceSignatureVisitor(final int access) {
-        super(Opcodes.ASM5);
+        super(Opcodes.ASM6);
         isInterface = (access & Opcodes.ACC_INTERFACE) != 0;
         this.declaration = new StringBuilder();
     }
 
     private TraceSignatureVisitor(final StringBuilder buf) {
-        super(Opcodes.ASM5);
+        super(Opcodes.ASM6);
         this.declaration = buf;
     }
 
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/ASMContentHandler.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/ASMContentHandler.java
index c263e1d..b23fc90 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/ASMContentHandler.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/ASMContentHandler.java
@@ -40,6 +40,7 @@
 import org.eclipse.persistence.internal.libraries.asm.Handle;
 import org.eclipse.persistence.internal.libraries.asm.Label;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
+import org.eclipse.persistence.internal.libraries.asm.ModuleVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.Type;
 import org.eclipse.persistence.internal.libraries.asm.TypePath;
@@ -52,8 +53,8 @@
  * document into Java class file. This class can be feeded by any kind of SAX
  * 2.0 event producers, e.g. XML parser, XSLT or XPath engines, or custom code.
  * 
- * @see SAXClassAdapter
- * @see Processor
+ * @see org.eclipse.persistence.internal.libraries.asm.xml.SAXClassAdapter
+ * @see org.eclipse.persistence.internal.libraries.asm.xml.Processor
  * 
  * @author Eugene Kuleshov
  */
@@ -90,6 +91,15 @@
         RULES.add(BASE + "/outerclass", new OuterClassRule());
         RULES.add(BASE + "/innerclass", new InnerClassRule());
         RULES.add(BASE + "/source", new SourceRule());
+        
+        ModuleRule moduleRule = new ModuleRule();
+        RULES.add(BASE + "/module", moduleRule);
+        RULES.add(BASE + "/module/requires", moduleRule);
+        RULES.add(BASE + "/module/exports", moduleRule);
+        RULES.add(BASE + "/module/exports/to", moduleRule);
+        RULES.add(BASE + "/module/uses", moduleRule);
+        RULES.add(BASE + "/module/provides", moduleRule);
+        
         RULES.add(BASE + "/field", new FieldRule());
 
         RULES.add(BASE + "/method", new MethodRule());
@@ -675,6 +685,9 @@
             if (s.indexOf("mandated") != -1) {
                 access |= ACC_MANDATED;
             }
+            if (s.indexOf("module") != -1) {
+                access |= ACC_MODULE;
+            }
             return access;
         }
     }
@@ -743,7 +756,56 @@
             push(cv);
         }
     }
+    
+    /**
+     * ModuleRule: module, requires, exports, restricted-to, uses and provides 
+     */
+    final class ModuleRule extends Rule {
+        @Override
+        public final void begin(final String element, final Attributes attrs)
+                throws SAXException {
+            if ("module".equals(element)) {
+                push(cv.visitModule());
+            } else if ("requires".equals(element)) {
+                ModuleVisitor mv = (ModuleVisitor) peek();
+                mv.visitRequire(attrs.getValue("module"),
+                        getAccess(attrs.getValue("access")));
+            } else if ("exports".equals(element)) {
+                // encode the name of the exported package as the first item
+                ArrayList<String> list = new ArrayList<String>();
+                list.add(attrs.getValue("name"));
+                push(list);
+            } else if ("to".equals(element)) {
+                @SuppressWarnings("unchecked")
+                ArrayList<String> list = (ArrayList<String>) peek();
+                list.add(attrs.getValue("module"));
+            }  else if ("uses".equals(element)) {
+                ModuleVisitor mv = (ModuleVisitor) peek();
+                mv.visitUse(attrs.getValue("service"));
+            }  else if ("provides".equals(element)) {
+                ModuleVisitor mv = (ModuleVisitor) peek();
+                mv.visitProvide(attrs.getValue("service"), attrs.getValue("impl"));
+            }
+        }
 
+        @Override
+        public void end(final String element) {
+            if ("exports".equals(element)) {
+                @SuppressWarnings("unchecked")
+                ArrayList<String> list = (ArrayList<String>) pop();
+                String export = list.remove(0);  // name of the exported package
+                String[] tos = null;
+                if (!list.isEmpty()) {
+                    tos = list.toArray(new String[list.size()]);
+                }
+                ModuleVisitor mv = (ModuleVisitor) peek();
+                mv.visitExport(export, tos);
+            } else if ("module".equals(element)) {
+                ((ModuleVisitor) pop()).visitEnd();
+            }
+        }
+    }
+    
     /**
      * OuterClassRule
      */
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/SAXAnnotationAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/SAXAnnotationAdapter.java
index 327ffe1..98d4418 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/SAXAnnotationAdapter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/SAXAnnotationAdapter.java
@@ -31,8 +31,8 @@
 
 import org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Opcodes;
-import org.eclipse.persistence.internal.libraries.asm.TypePath;
 import org.eclipse.persistence.internal.libraries.asm.Type;
+import org.eclipse.persistence.internal.libraries.asm.TypePath;
 import org.xml.sax.helpers.AttributesImpl;
 
 /**
@@ -48,20 +48,20 @@
 
     public SAXAnnotationAdapter(final SAXAdapter sa, final String elementName,
             final int visible, final String name, final String desc) {
-        this(Opcodes.ASM5, sa, elementName, visible, desc, name, -1, -1, null,
+        this(Opcodes.ASM6, sa, elementName, visible, desc, name, -1, -1, null,
                 null, null, null);
     }
 
     public SAXAnnotationAdapter(final SAXAdapter sa, final String elementName,
             final int visible, final int parameter, final String desc) {
-        this(Opcodes.ASM5, sa, elementName, visible, desc, null, parameter, -1,
+        this(Opcodes.ASM6, sa, elementName, visible, desc, null, parameter, -1,
                 null, null, null, null);
     }
 
     public SAXAnnotationAdapter(final SAXAdapter sa, final String elementName,
             final int visible, final String name, final String desc,
             final int typeRef, final TypePath typePath) {
-        this(Opcodes.ASM5, sa, elementName, visible, desc, name, -1, typeRef,
+        this(Opcodes.ASM6, sa, elementName, visible, desc, name, -1, typeRef,
                 typePath, null, null, null);
     }
 
@@ -69,7 +69,7 @@
             final int visible, final String name, final String desc,
             int typeRef, TypePath typePath, final String[] start,
             final String[] end, final int[] index) {
-        this(Opcodes.ASM5, sa, elementName, visible, desc, name, -1, typeRef,
+        this(Opcodes.ASM6, sa, elementName, visible, desc, name, -1, typeRef,
                 typePath, start, end, index);
     }
 
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/SAXClassAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/SAXClassAdapter.java
index 3bd2759..4cffdc4 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/SAXClassAdapter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/SAXClassAdapter.java
@@ -33,19 +33,20 @@
 import org.eclipse.persistence.internal.libraries.asm.ClassVisitor;
 import org.eclipse.persistence.internal.libraries.asm.FieldVisitor;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
+import org.eclipse.persistence.internal.libraries.asm.ModuleVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.TypePath;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.helpers.AttributesImpl;
 
 /**
- * A {@link ClassVisitor ClassVisitor} that generates SAX 2.0
+ * A {@link org.eclipse.persistence.internal.libraries.asm.ClassVisitor ClassVisitor} that generates SAX 2.0
  * events from the visited class. It can feed any kind of
  * {@link org.xml.sax.ContentHandler ContentHandler}, e.g. XML serializer, XSLT
  * or XQuery engines.
  * 
- * @see Processor
- * @see ASMContentHandler
+ * @see org.eclipse.persistence.internal.libraries.asm.xml.Processor
+ * @see org.eclipse.persistence.internal.libraries.asm.xml.ASMContentHandler
  * 
  * @author Eugene Kuleshov
  */
@@ -81,7 +82,7 @@
      *            {@link ContentHandler#endDocument() endDocument()} events.
      */
     public SAXClassAdapter(final ContentHandler h, boolean singleDocument) {
-        super(Opcodes.ASM5);
+        super(Opcodes.ASM6);
         this.sa = new SAXAdapter(h);
         this.singleDocument = singleDocument;
         if (!singleDocument) {
@@ -101,6 +102,13 @@
 
         sa.addElement("source", att);
     }
+    
+    @Override
+    public ModuleVisitor visitModule() {
+        AttributesImpl att = new AttributesImpl();
+        sa.addStart("module", att);
+        return new SAXModuleAdapter(sa);
+    }
 
     @Override
     public void visitOuterClass(final String owner, final String name,
@@ -119,7 +127,7 @@
 
     @Override
     public AnnotationVisitor visitAnnotation(final String desc,
-                                             final boolean visible) {
+            final boolean visible) {
         return new SAXAnnotationAdapter(sa, "annotation", visible ? 1 : -1,
                 null, desc);
     }
@@ -328,8 +336,12 @@
         if ((access & Opcodes.ACC_DEPRECATED) != 0) {
             sb.append("deprecated ");
         }
-        if ((access & Opcodes.ACC_MANDATED) != 0) {
-            sb.append("mandated ");
+        if ((access & (Opcodes.ACC_MANDATED|Opcodes.ACC_MODULE)) != 0) {
+            if ((access & ACCESS_CLASS) == 0) {
+                sb.append("module ");
+            } else {
+                sb.append("mandated ");
+            }
         }
     }
 }
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/SAXCodeAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/SAXCodeAdapter.java
index c9742cd..e98d4d9 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/SAXCodeAdapter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/SAXCodeAdapter.java
@@ -33,21 +33,21 @@
 import java.util.Map;
 
 import org.eclipse.persistence.internal.libraries.asm.AnnotationVisitor;
-import org.eclipse.persistence.internal.libraries.asm.TypePath;
-import org.eclipse.persistence.internal.libraries.asm.util.Printer;
 import org.eclipse.persistence.internal.libraries.asm.Handle;
 import org.eclipse.persistence.internal.libraries.asm.Label;
 import org.eclipse.persistence.internal.libraries.asm.MethodVisitor;
 import org.eclipse.persistence.internal.libraries.asm.Opcodes;
 import org.eclipse.persistence.internal.libraries.asm.Type;
+import org.eclipse.persistence.internal.libraries.asm.TypePath;
+import org.eclipse.persistence.internal.libraries.asm.util.Printer;
 import org.xml.sax.helpers.AttributesImpl;
 
 /**
  * A {@link MethodVisitor} that generates SAX 2.0 events from the visited
  * method.
  * 
- * @see SAXClassAdapter
- * @see Processor
+ * @see org.eclipse.persistence.internal.libraries.asm.xml.SAXClassAdapter
+ * @see org.eclipse.persistence.internal.libraries.asm.xml.Processor
  * 
  * @author Eugene Kuleshov
  */
@@ -69,7 +69,7 @@
      *            content handler that will be used to send SAX 2.0 events.
      */
     public SAXCodeAdapter(final SAXAdapter sa, final int access) {
-        super(Opcodes.ASM5);
+        super(Opcodes.ASM6);
         this.sa = sa;
         this.access = access;
         this.labelNames = new HashMap<Label, String>();
@@ -356,7 +356,7 @@
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(int typeRef,
-                                                 TypePath typePath, String desc, boolean visible) {
+            TypePath typePath, String desc, boolean visible) {
         return new SAXAnnotationAdapter(sa, "typeAnnotation", visible ? 1 : -1,
                 null, desc, typeRef, typePath);
     }
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/SAXFieldAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/SAXFieldAdapter.java
index 47a8218..6f8c256 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/SAXFieldAdapter.java
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/SAXFieldAdapter.java
@@ -45,21 +45,21 @@
     SAXAdapter sa;
 
     public SAXFieldAdapter(final SAXAdapter sa, final Attributes att) {
-        super(Opcodes.ASM5);
+        super(Opcodes.ASM6);
         this.sa = sa;
         sa.addStart("field", att);
     }
 
     @Override
     public AnnotationVisitor visitAnnotation(final String desc,
-                                             final boolean visible) {
+            final boolean visible) {
         return new SAXAnnotationAdapter(sa, "annotation", visible ? 1 : -1,
                 null, desc);
     }
 
     @Override
     public AnnotationVisitor visitTypeAnnotation(int typeRef,
-                                                 TypePath typePath, String desc, boolean visible) {
+            TypePath typePath, String desc, boolean visible) {
         return new SAXAnnotationAdapter(sa, "typeAnnotation", visible ? 1 : -1,
                 null, desc, typeRef, typePath);
     }
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/SAXModuleAdapter.java b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/SAXModuleAdapter.java
new file mode 100644
index 0000000..52c4a63
--- /dev/null
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/SAXModuleAdapter.java
@@ -0,0 +1,94 @@
+/***
+ * ASM XML Adapter
+ * Copyright (c) 2004-2011, Eugene Kuleshov
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holders nor the names of its
+ *    contributors may be used to endorse or promote products derived from
+ *    this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.eclipse.persistence.internal.libraries.asm.xml;
+
+import org.eclipse.persistence.internal.libraries.asm.ModuleVisitor;
+import org.eclipse.persistence.internal.libraries.asm.Opcodes;
+import org.xml.sax.helpers.AttributesImpl;
+
+/**
+ * Generate SAX event for a module description.
+ * 
+ * @author Remi Forax
+ */
+public final class SAXModuleAdapter extends ModuleVisitor {
+
+    private final SAXAdapter sa;
+
+    public SAXModuleAdapter(final SAXAdapter sa) {
+        super(Opcodes.ASM6);
+        this.sa = sa;
+    }
+
+    @Override
+    public void visitRequire(String module, int access) {
+        AttributesImpl att = new AttributesImpl();
+        StringBuilder sb = new StringBuilder();
+        SAXClassAdapter.appendAccess(access, sb);
+        att.addAttribute("", "module", "module", "", module);
+        att.addAttribute("", "access", "access", "", sb.toString());
+        sa.addElement("requires", att);
+    }
+    
+    @Override
+    public void visitExport(String packaze, String... modules) {
+        AttributesImpl att = new AttributesImpl();
+        att.addAttribute("", "name", "name", "", packaze);
+        sa.addStart("exports", att);
+        if (modules != null && modules.length > 0) {
+            for(String to: modules) {
+                AttributesImpl atts = new AttributesImpl();
+                atts.addAttribute("", "module", "module", "", to);
+                sa.addElement("to", atts);
+            }
+        }
+        sa.addEnd("exports");
+    }
+
+    @Override
+    public void visitUse(String service) {
+        AttributesImpl att = new AttributesImpl();
+        att.addAttribute("", "service", "service", "", service);
+        sa.addElement("uses", att);
+    }
+    
+    @Override
+    public void visitProvide(String service, String impl) {
+        AttributesImpl att = new AttributesImpl();
+        att.addAttribute("", "service", "service", "", service);
+        att.addAttribute("", "impl", "impl", "", impl);
+        sa.addElement("provides", att);
+    }
+    
+    @Override
+    public void visitEnd() {
+        sa.addEnd("module");
+    }
+}
diff --git a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/asm-xml.dtd b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/asm-xml.dtd
index b862085..b2be0d9 100644
--- a/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/asm-xml.dtd
+++ b/plugins/org.eclipse.persistence.asm/src/org/eclipse/persistence/internal/libraries/asm/xml/asm-xml.dtd
@@ -41,7 +41,7 @@
 <!--
   Root element for a single class.
 -->
-<!ELEMENT class ( interfaces, ( field | innerclass | method )*)>
+<!ELEMENT class ( interfaces, module?, ( field | innerclass | method )*)>
 <!ATTLIST class access CDATA #REQUIRED>
 <!ATTLIST class name CDATA #REQUIRED>
 <!ATTLIST class parent CDATA #REQUIRED>
@@ -53,6 +53,20 @@
 <!ELEMENT interface EMPTY>
 <!ATTLIST interface name CDATA #REQUIRED>
 
+<!ELEMENT module ( requires*, exports*, uses*, provides* )>
+<!ELEMENT requires EMPTY>
+<!ATTLIST requires module CDATA #REQUIRED>
+<!ATTLIST requires access CDATA #REQUIRED>
+<!ELEMENT exports ( to* )>
+<!ATTLIST exports name CDATA #REQUIRED>
+<!ELEMENT to EMPTY>
+<!ATTLIST to module CDATA #REQUIRED>
+<!ELEMENT uses EMPTY>
+<!ATTLIST uses service CDATA #REQUIRED>
+<!ELEMENT provides EMPTY>
+<!ATTLIST provides service CDATA #REQUIRED>
+<!ATTLIST provides impl CDATA #REQUIRED>
+
 <!ELEMENT field EMPTY>
 <!ATTLIST field access CDATA #REQUIRED>
 <!ATTLIST field desc CDATA #REQUIRED>
diff --git a/plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar b/plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar
deleted file mode 100644
index 92eda55..0000000
--- a/plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar b/plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar
new file mode 100644
index 0000000..bd31459
--- /dev/null
+++ b/plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar
Binary files differ
diff --git a/sdo/eclipselink.sdo.test/antbuild.properties b/sdo/eclipselink.sdo.test/antbuild.properties
index a7d0322..03130da 100644
--- a/sdo/eclipselink.sdo.test/antbuild.properties
+++ b/sdo/eclipselink.sdo.test/antbuild.properties
@@ -36,7 +36,7 @@
 resource.dir=resource
 report.dir=reports
 
-asm=org.eclipse.persistence.asm_5.1.0.v201605131250.jar
+asm=org.eclipse.persistence.asm_6.0.0.v201702131300.jar
 
 xml.platform=org.eclipse.persistence.platform.xml.jaxp.JAXPPlatform
 parser=org.eclipse.persistence.platform.xml.jaxp.JAXPParser
diff --git a/sdo/org.eclipse.persistence.sdo/META-INF/MANIFEST.MF b/sdo/org.eclipse.persistence.sdo/META-INF/MANIFEST.MF
index b273002..180ae14 100644
--- a/sdo/org.eclipse.persistence.sdo/META-INF/MANIFEST.MF
+++ b/sdo/org.eclipse.persistence.sdo/META-INF/MANIFEST.MF
@@ -14,7 +14,7 @@
 HK2-Bundle-Name: org.eclipse.persistence:org.eclipse.persistence.sdo
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Require-Bundle: org.eclipse.persistence.core;bundle-version="2.7.0";visibility:=reexport,
- org.eclipse.persistence.asm;bundle-version="5.1";resolution:=optional,
+ org.eclipse.persistence.asm;bundle-version="6.0.0";resolution:=optional,
  org.eclipse.persistence.moxy;bundle-version="2.7.0";resolution:=optional,
  commonj.sdo;bundle-version="2.1.1"
 Bundle-Vendor: Eclipse.org - EclipseLink Project
@@ -34,7 +34,7 @@
  org.eclipse.persistence.internal.databaseaccess;version="2.7.0",
  org.eclipse.persistence.internal.descriptors;version="2.7.0",
  org.eclipse.persistence.internal.helper;version="2.7.0",
- org.eclipse.persistence.internal.libraries.asm;version="[5.0.1,6.0)";resolution:=optional,
+ org.eclipse.persistence.internal.libraries.asm;version="[6.0,7.0)";resolution:=optional,
  org.eclipse.persistence.internal.localization;version="2.7.0",
  org.eclipse.persistence.internal.oxm;version="2.7.0",
  org.eclipse.persistence.internal.oxm.record;version="2.7.0",
diff --git a/sdo/org.eclipse.persistence.sdo/sdo.iml b/sdo/org.eclipse.persistence.sdo/sdo.iml
index 5285059..adb49f4 100644
--- a/sdo/org.eclipse.persistence.sdo/sdo.iml
+++ b/sdo/org.eclipse.persistence.sdo/sdo.iml
@@ -25,11 +25,11 @@
     <orderEntry type="module-library">
       <library>
         <CLASSES>
-          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar!/" />
+          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar!/" />
         </CLASSES>
         <JAVADOC />
         <SOURCES>
-          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar!/" />
+          <root url="jar://$MODULE_DIR$/../../plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar!/" />
         </SOURCES>
       </library>
     </orderEntry>
diff --git a/utils/eclipselink.dbws.builder.test.oracle/.classpath b/utils/eclipselink.dbws.builder.test.oracle/.classpath
index 6b078a1..4df9053 100644
--- a/utils/eclipselink.dbws.builder.test.oracle/.classpath
+++ b/utils/eclipselink.dbws.builder.test.oracle/.classpath
@@ -8,7 +8,7 @@
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/utils/plugins/javax.wsdl_1.6.2.v201012040545.jar" sourcepath="/ECLIPSELINK_HOME/utils/plugins/wsdl4j-src-1.6.2.zip"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.antlr_3.2.0.v201302191141.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.antlr.source_3.2.0.v201302191141.jar"/>
-	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar"/>
+	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/utils/plugins/org.eclipse.persistence.oracleddlparser_1.0.0.v20150306.jar" sourcepath="/ECLIPSELINK_HOME/utils/plugins/org.eclipse.persistence.oracleddlparser.source_1.0.0.v20150306.jar"/>
 	<classpathentry kind="lib" path="/oracle.libs/xdb.jar"/>
 	<classpathentry kind="lib" path="/oracle.libs/xmlparserv2.jar"/>
@@ -16,4 +16,4 @@
 	<classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.persistence.moxy"/>
 	<classpathentry kind="var" path="ECLIPSELINK_HOME/jpa/plugins/javax.persistence_2.1.1.v201509150925.jar" sourcepath="/ECLIPSELINK_HOME/jpa/plugins/javax.persistence.source_2.1.1.v201509150925.jar"/>
 	<classpathentry kind="output" path="classes"/>
-</classpath>
+</classpath>
\ No newline at end of file
diff --git a/utils/eclipselink.utils.sigcompare/.classpath b/utils/eclipselink.utils.sigcompare/.classpath
index 2a49a33..7818135 100644
--- a/utils/eclipselink.utils.sigcompare/.classpath
+++ b/utils/eclipselink.utils.sigcompare/.classpath
@@ -3,6 +3,6 @@
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
-	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_5.1.0.v201605131250.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_5.1.0.v201605131250.jar"/>
+	<classpathentry kind="var" path="ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm_6.0.0.v201702131300.jar" sourcepath="/ECLIPSELINK_HOME/plugins/org.eclipse.persistence.asm.source_6.0.0.v201702131300.jar"/>
 	<classpathentry kind="output" path="classes"/>
-</classpath>
+</classpath>
\ No newline at end of file
diff --git a/utils/org.eclipse.persistence.dbws.builder/antbuild.properties b/utils/org.eclipse.persistence.dbws.builder/antbuild.properties
index 2cf7bca..0c42776 100644
--- a/utils/org.eclipse.persistence.dbws.builder/antbuild.properties
+++ b/utils/org.eclipse.persistence.dbws.builder/antbuild.properties
@@ -23,6 +23,6 @@
 
 #     Variable Definitions (execution location dependent)
 # -----------------------------------
-asm.jar=org.eclipse.persistence.asm_5.1.0.v201605131250.jar
+asm.jar=org.eclipse.persistence.asm_6.0.0.v201702131300.jar
 servlet.jar=javax.servlet_2.4.0.v200806031604.jar
-wsdl.jar=javax.wsdl_1.6.2.v201012040545.jar
+wsdl.jar=javax.wsdl_1.6.2.v201012040545.jar
\ No newline at end of file