Additional Profile to Migrate Back to JEE8 from Jakarta EE
diff --git a/.gitignore b/.gitignore
index 2a968e1..f723270 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,4 @@
 *.iml
 *.ipr
 *.iws
+/bin/
diff --git a/src/main/java/org/apache/tomcat/jakartaee/ClassConverter.java b/src/main/java/org/apache/tomcat/jakartaee/ClassConverter.java
index f6d08e2..da9ee42 100644
--- a/src/main/java/org/apache/tomcat/jakartaee/ClassConverter.java
+++ b/src/main/java/org/apache/tomcat/jakartaee/ClassConverter.java
@@ -26,7 +26,6 @@
 import java.security.ProtectionDomain;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-
 import org.apache.bcel.classfile.ClassParser;
 import org.apache.bcel.classfile.Constant;
 import org.apache.bcel.classfile.ConstantUtf8;
@@ -100,10 +99,10 @@
                         // Jakarta EE specification classes that exist in the container
                         String[] split = newString.split(";|<");
                         for (String current : split) {
-                            int pos = current.indexOf("jakarta/");
+                            int pos = current.indexOf(profile.getTarget() + "/");
                             boolean dotMode = false;
                             if (pos < 0) {
-                                pos = current.indexOf("jakarta.");
+                                pos = current.indexOf(profile.getTarget() + ".");
                                 dotMode = true;
                             }
                             if (pos >= 0) {
@@ -115,14 +114,15 @@
                                 if (loader.getResource(resourceName) == null) {
                                     if (logger.isLoggable(Level.FINE)) {
                                         logger.log(Level.FINE, sm.getString("classConverter.skipName",
+                                                profile.getSource(),
                                                 current.substring(pos).replace('/','.')));
                                     }
                                     // Cancel the replacement as the replacement does not exist
                                     String originalFragment;
                                     if (dotMode) {
-                                        originalFragment = current.replace("jakarta.", "javax.");
+                                        originalFragment = current.replace(profile.getTarget() + ".", profile.getSource() + ".");
                                     } else {
-                                        originalFragment = current.replace("jakarta/", "javax/");
+                                        originalFragment = current.replace(profile.getTarget() + "/", profile.getSource() + "/");
                                     }
                                     newString = newString.replace(current, originalFragment);
                                 }
diff --git a/src/main/java/org/apache/tomcat/jakartaee/EESpecProfile.java b/src/main/java/org/apache/tomcat/jakartaee/EESpecProfile.java
index 36d201b..23eecbc 100644
--- a/src/main/java/org/apache/tomcat/jakartaee/EESpecProfile.java
+++ b/src/main/java/org/apache/tomcat/jakartaee/EESpecProfile.java
@@ -24,7 +24,8 @@
  */
 public enum EESpecProfile {
 
-    TOMCAT("javax([/\\.](annotation(?![/\\.]processing)" +
+    TOMCAT("javax", "jakarta", 
+            "javax([/\\.](annotation(?![/\\.]processing)" +
             "|ejb" +
             "|el" +
             "|mail" +
@@ -34,7 +35,33 @@
             "|transaction(?![/\\.]xa)" +
             "|websocket))"),
 
-    EE("javax([/\\.](activation" +
+    EE("javax", "jakarta", 
+            "javax([/\\.](activation" +
+            "|annotation(?![/\\.]processing)" +
+            "|batch" +
+            "|decorator" +
+            "|ejb" +
+            "|el" +
+            "|enterprise" +
+            "|faces" +
+            "|jms" +
+            "|json" +
+            "|jws" +
+            "|interceptor" +
+            "|inject" +
+            "|mail" +
+            "|management[/\\.]j2ee" +
+            "|persistence" +
+            "|resource" +
+            "|security[/\\.](auth[/\\.]message|enterprise|jacc)" +
+            "|servlet" +
+            "|transaction(?![/\\.]xa)" +
+            "|validation" +
+            "|websocket" +
+            "|ws[/\\.]rs" +
+            "|xml[/\\.](bind|soap|ws)))"),
+    JEE8("jakarta", "javax", 
+            "jakarta([/\\.](activation" +
             "|annotation(?![/\\.]processing)" +
             "|batch" +
             "|decorator" +
@@ -59,14 +86,28 @@
             "|ws[/\\.]rs" +
             "|xml[/\\.](bind|soap|ws)))");
 
+    private String source;
+    private String target;
     private Pattern pattern;
 
-    EESpecProfile(String pattern) {
+    EESpecProfile(String source, String target, String pattern) {
+        this.source = source;
+        this.target = target;
         this.pattern = Pattern.compile(pattern);
     }
 
     public String convert(String name) {
         Matcher m = pattern.matcher(name);
-        return m.replaceAll("jakarta$1");
+        return m.replaceAll(target + "$1");
+    }
+    
+    public String getSource()
+    {
+        return source;
+    }
+    
+    public String getTarget()
+    {
+        return target;
     }
 }
diff --git a/src/main/resources/org/apache/tomcat/jakartaee/LocalStrings.properties b/src/main/resources/org/apache/tomcat/jakartaee/LocalStrings.properties
index a4786c3..d3a63bc 100644
--- a/src/main/resources/org/apache/tomcat/jakartaee/LocalStrings.properties
+++ b/src/main/resources/org/apache/tomcat/jakartaee/LocalStrings.properties
@@ -15,7 +15,7 @@
 
 classConverter.converted=Migrated class [{0}]
 classConverter.noConversion=No conversion necessary for [{0}] 
-classConverter.skipName=Skip conversion of class usage from the javax namespace to [{0}] as it is not accessible to the classloader
+classConverter.skipName=Skip conversion of class usage from the [{0}] namespace to [{1}] as it is not accessible to the classloader
 
 migration.archive.complete=Migration finished for archive [{0}]
 migration.archive.memory=Migration starting for archive [{0}] using in memory copy
@@ -38,6 +38,7 @@
 \    -profile=<profile name>\n\
 \                TOMCAT (default) to convert Java EE APIs provided by Tomcat\n\
 \                EE to convert all Java EE APIs\n\
+\                JEE8 to convert back to old Java EE8 APIs\n\
 \    -zipInMemory\n\
 \                By default zip format archives (.zip, jar, .war, .ear, etc.)\n\
 \                are processed as streams. This is more efficient but is not\n\