Merge branch 'EE9' of /scottmarlow/el-ri into scottmarlow-EE9
diff --git a/api/pom.xml b/api/pom.xml
index e713eaa..271aeca 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -31,9 +31,9 @@
     
     <groupId>jakarta.el</groupId>
     <artifactId>jakarta.el-api</artifactId>
-    <version>3.0.3-SNAPSHOT</version>
+    <version>4.0.0-SNAPSHOT</version>
     
-    <name>Jakarta Expression Language 3.0 API</name>
+    <name>Jakarta Expression Language 4.0 API</name>
     <description>
         Jakarta Expression Language defines an expression language for Java applications
     </description>
@@ -41,10 +41,10 @@
 
     <properties>
         <!-- Make sure the two versions are in sync with the maven version -->
-        <spec.version>3.0</spec.version>
-        <bundle.version>3.0.3</bundle.version>
-        <extensionName>javax.el</extensionName>
-        <bundle.symbolicName>javax.el-api</bundle.symbolicName>
+        <spec.version>4.0</spec.version>
+        <bundle.version>4.0.0-SNAPSHOT</bundle.version>
+        <extensionName>jakarta.el</extensionName>
+        <bundle.symbolicName>jakarta.el-api</bundle.symbolicName>
         <vendorName>Oracle Corporation</vendorName>
         <findbugs.version>2.4.0</findbugs.version>
         <findbugs.exclude />
@@ -151,7 +151,7 @@
                         <Specification-Vendor>${vendorName}</Specification-Vendor>
                         <Implementation-Version>${project.version}</Implementation-Version>
                         <Implementation-Vendor>${vendorName}</Implementation-Vendor>
-                        <Export-Package>javax.el</Export-Package>
+                        <Export-Package>jakarta.el</Export-Package>
                     </instructions>
                 </configuration>
                 <executions>
@@ -227,7 +227,7 @@
                                 <group>
                                     <title>Jakarta Expression Language API Documentation</title>
                                     <packages>
-                                        javax.el.*
+                                        jakarta.el.*
                                     </packages>
                                 </group>
                             </groups>
diff --git a/api/src/main/java/javax/el/ArrayELResolver.java b/api/src/main/java/jakarta/el/ArrayELResolver.java
similarity index 99%
rename from api/src/main/java/javax/el/ArrayELResolver.java
rename to api/src/main/java/jakarta/el/ArrayELResolver.java
index aa088f5..c0b3249 100644
--- a/api/src/main/java/javax/el/ArrayELResolver.java
+++ b/api/src/main/java/jakarta/el/ArrayELResolver.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.beans.FeatureDescriptor;
 import java.lang.reflect.Array;
diff --git a/api/src/main/java/javax/el/BeanELResolver.java b/api/src/main/java/jakarta/el/BeanELResolver.java
similarity index 99%
rename from api/src/main/java/javax/el/BeanELResolver.java
rename to api/src/main/java/jakarta/el/BeanELResolver.java
index 2ffd50d..c0fc94d 100644
--- a/api/src/main/java/javax/el/BeanELResolver.java
+++ b/api/src/main/java/jakarta/el/BeanELResolver.java
@@ -16,10 +16,10 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import static java.lang.Boolean.TRUE;
-import static javax.el.ELUtil.getExceptionMessageString;
+import static jakarta.el.ELUtil.getExceptionMessageString;
 
 import java.beans.BeanInfo;
 import java.beans.FeatureDescriptor;
diff --git a/api/src/main/java/javax/el/BeanNameELResolver.java b/api/src/main/java/jakarta/el/BeanNameELResolver.java
similarity index 99%
rename from api/src/main/java/javax/el/BeanNameELResolver.java
rename to api/src/main/java/jakarta/el/BeanNameELResolver.java
index 9c147f1..fea10d8 100644
--- a/api/src/main/java/javax/el/BeanNameELResolver.java
+++ b/api/src/main/java/jakarta/el/BeanNameELResolver.java
@@ -15,7 +15,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.beans.FeatureDescriptor;
 import java.util.Iterator;
diff --git a/api/src/main/java/javax/el/BeanNameResolver.java b/api/src/main/java/jakarta/el/BeanNameResolver.java
similarity index 98%
rename from api/src/main/java/javax/el/BeanNameResolver.java
rename to api/src/main/java/jakarta/el/BeanNameResolver.java
index d173174..3146600 100644
--- a/api/src/main/java/javax/el/BeanNameResolver.java
+++ b/api/src/main/java/jakarta/el/BeanNameResolver.java
@@ -15,7 +15,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.el;
+package jakarta.el;
 
 /**
  * Resolves a bean by its known name. This class can be extended to return a bean object given its name, to set a value
diff --git a/api/src/main/java/javax/el/CompositeELResolver.java b/api/src/main/java/jakarta/el/CompositeELResolver.java
similarity index 99%
rename from api/src/main/java/javax/el/CompositeELResolver.java
rename to api/src/main/java/jakarta/el/CompositeELResolver.java
index 1e0e9e1..64674d4 100644
--- a/api/src/main/java/javax/el/CompositeELResolver.java
+++ b/api/src/main/java/jakarta/el/CompositeELResolver.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.beans.FeatureDescriptor;
 import java.util.Iterator;
diff --git a/api/src/main/java/javax/el/ELClass.java b/api/src/main/java/jakarta/el/ELClass.java
similarity index 98%
rename from api/src/main/java/javax/el/ELClass.java
rename to api/src/main/java/jakarta/el/ELClass.java
index 86355ed..3c8ec67 100644
--- a/api/src/main/java/javax/el/ELClass.java
+++ b/api/src/main/java/jakarta/el/ELClass.java
@@ -15,7 +15,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.el;
+package jakarta.el;
 
 /**
  * A runtime representation of a Class in the Jakarta Expression Language expressions. It encapsulates the
diff --git a/api/src/main/java/javax/el/ELContext.java b/api/src/main/java/jakarta/el/ELContext.java
similarity index 99%
rename from api/src/main/java/javax/el/ELContext.java
rename to api/src/main/java/jakarta/el/ELContext.java
index 0b95e59..2f97e0f 100644
--- a/api/src/main/java/javax/el/ELContext.java
+++ b/api/src/main/java/jakarta/el/ELContext.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.util.ArrayList;
 import java.util.HashMap;
diff --git a/api/src/main/java/javax/el/ELContextEvent.java b/api/src/main/java/jakarta/el/ELContextEvent.java
similarity index 98%
rename from api/src/main/java/javax/el/ELContextEvent.java
rename to api/src/main/java/jakarta/el/ELContextEvent.java
index e59cc16..365050c 100644
--- a/api/src/main/java/javax/el/ELContextEvent.java
+++ b/api/src/main/java/jakarta/el/ELContextEvent.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.util.EventObject;
 
diff --git a/api/src/main/java/javax/el/ELContextListener.java b/api/src/main/java/jakarta/el/ELContextListener.java
similarity index 97%
rename from api/src/main/java/javax/el/ELContextListener.java
rename to api/src/main/java/jakarta/el/ELContextListener.java
index b6c663b..3820053 100644
--- a/api/src/main/java/javax/el/ELContextListener.java
+++ b/api/src/main/java/jakarta/el/ELContextListener.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 /**
  * The listener interface for receiving notification when an {@link ELContext} is created.
diff --git a/api/src/main/java/javax/el/ELException.java b/api/src/main/java/jakarta/el/ELException.java
similarity index 98%
rename from api/src/main/java/javax/el/ELException.java
rename to api/src/main/java/jakarta/el/ELException.java
index eb9bcbc..82b8f2e 100644
--- a/api/src/main/java/javax/el/ELException.java
+++ b/api/src/main/java/jakarta/el/ELException.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 /**
  * Represents any of the exception conditions that can arise during expression evaluation.
diff --git a/api/src/main/java/javax/el/ELManager.java b/api/src/main/java/jakarta/el/ELManager.java
similarity index 99%
rename from api/src/main/java/javax/el/ELManager.java
rename to api/src/main/java/jakarta/el/ELManager.java
index 5c56070..60e531d 100644
--- a/api/src/main/java/javax/el/ELManager.java
+++ b/api/src/main/java/jakarta/el/ELManager.java
@@ -15,7 +15,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.lang.reflect.Method;
 
diff --git a/api/src/main/java/javax/el/ELProcessor.java b/api/src/main/java/jakarta/el/ELProcessor.java
similarity index 99%
rename from api/src/main/java/javax/el/ELProcessor.java
rename to api/src/main/java/jakarta/el/ELProcessor.java
index 84edb6a..58515c5 100644
--- a/api/src/main/java/javax/el/ELProcessor.java
+++ b/api/src/main/java/jakarta/el/ELProcessor.java
@@ -15,7 +15,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.lang.reflect.Array;
 import java.lang.reflect.Method;
diff --git a/api/src/main/java/javax/el/ELResolver.java b/api/src/main/java/jakarta/el/ELResolver.java
similarity index 99%
rename from api/src/main/java/javax/el/ELResolver.java
rename to api/src/main/java/jakarta/el/ELResolver.java
index f21459d..da6096d 100644
--- a/api/src/main/java/javax/el/ELResolver.java
+++ b/api/src/main/java/jakarta/el/ELResolver.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.beans.FeatureDescriptor;
 import java.util.Iterator;
diff --git a/api/src/main/java/javax/el/ELUtil.java b/api/src/main/java/jakarta/el/ELUtil.java
similarity index 98%
rename from api/src/main/java/javax/el/ELUtil.java
rename to api/src/main/java/jakarta/el/ELUtil.java
index 4df4a44..772b264 100644
--- a/api/src/main/java/javax/el/ELUtil.java
+++ b/api/src/main/java/jakarta/el/ELUtil.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.lang.reflect.Array;
 import java.lang.reflect.Constructor;
@@ -55,7 +55,7 @@
 
     /*
      * For testing Backward Compatibility option static java.util.Properties properties = new java.util.Properties(); static
-     * { properties.setProperty("javax.el.bc2.2", "true"); }
+     * { properties.setProperty("jakarta.el.bc2.2", "true"); }
      */
     public static ExpressionFactory exprFactory = ExpressionFactory.newInstance(/* properties */);
 
@@ -97,7 +97,7 @@
     }
 
     /**
-     * Convenience method, calls through to getExceptionMessageString(javax.el.ELContext,java.lang.String,Object []).
+     * Convenience method, calls through to getExceptionMessageString(ELContext,java.lang.String,Object []).
      *
      * @param context the ELContext from which the Locale for this message is extracted.
      * @param messageId the messageId String in the ResourceBundle
@@ -111,7 +111,7 @@
     /*
      * <p>Return a Localized message String suitable for use as an Exception message. Examine the argument
      * <code>context</code> for a <code>Locale</code>. If not present, use <code>Locale.getDefault()</code>. Load the
-     * <code>ResourceBundle</code> "javax.el.Messages" using that locale. Get the message string for argument
+     * <code>ResourceBundle</code> "jakarta.el.Messages" using that locale. Get the message string for argument
      * <code>messageId</code>. If not found return "Missing Resource in Jakarta Expression Language implementation ??? messageId ???" with messageId
      * substituted with the runtime value of argument <code>messageId</code>. If found, and argument <code>params</code> is
      * non-null, format the message using the params. If formatting fails, return a sensible message including the
@@ -142,7 +142,7 @@
             Map<String, ResourceBundle> threadMap = getCurrentInstance();
             ResourceBundle resourceBundle = null;
             if (null == (resourceBundle = threadMap.get(locale.toString()))) {
-                resourceBundle = ResourceBundle.getBundle("javax.el.PrivateMessages", locale);
+                resourceBundle = ResourceBundle.getBundle("jakarta.el.PrivateMessages", locale);
                 threadMap.put(locale.toString(), resourceBundle);
             }
 
diff --git a/api/src/main/java/javax/el/EvaluationListener.java b/api/src/main/java/jakarta/el/EvaluationListener.java
similarity index 98%
rename from api/src/main/java/javax/el/EvaluationListener.java
rename to api/src/main/java/jakarta/el/EvaluationListener.java
index f359ad2..5433740 100644
--- a/api/src/main/java/javax/el/EvaluationListener.java
+++ b/api/src/main/java/jakarta/el/EvaluationListener.java
@@ -15,7 +15,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.el;
+package jakarta.el;
 
 /**
  * The listener interface for receiving notification when a Jakarta Expression Language expression is evaluated.
diff --git a/api/src/main/java/javax/el/Expression.java b/api/src/main/java/jakarta/el/Expression.java
similarity index 99%
rename from api/src/main/java/javax/el/Expression.java
rename to api/src/main/java/jakarta/el/Expression.java
index fd00f8f..76500a9 100644
--- a/api/src/main/java/javax/el/Expression.java
+++ b/api/src/main/java/jakarta/el/Expression.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.io.Serializable;
 
diff --git a/api/src/main/java/javax/el/ExpressionFactory.java b/api/src/main/java/jakarta/el/ExpressionFactory.java
similarity index 95%
rename from api/src/main/java/javax/el/ExpressionFactory.java
rename to api/src/main/java/jakarta/el/ExpressionFactory.java
index e005de4..a7810bf 100644
--- a/api/src/main/java/javax/el/ExpressionFactory.java
+++ b/api/src/main/java/jakarta/el/ExpressionFactory.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.lang.reflect.Method;
 import java.util.Map;
@@ -94,12 +94,12 @@
      *
      * <ul>
      * <li>Use the Services API (as detailed in the JAR specification). If a resource with the name of
-     * <code>META-INF/services/javax.el.ExpressionFactory</code> exists, then its first line, if present, is used as the
+     * <code>META-INF/services/ExpressionFactory</code> exists, then its first line, if present, is used as the
      * UTF-8 encoded name of the implementation class.</li>
      * <li>Use the properties file "lib/el.properties" in the JRE directory. If this file exists and it is readable by the
      * <code> java.util.Properties.load(InputStream)</code> method, and it contains an entry whose key is
-     * "javax.el.ExpressionFactory", then the value of that entry is used as the name of the implementation class.</li>
-     * <li>Use the <code>javax.el.ExpressionFactory</code> system property. If a system property with this name is defined,
+     * "ExpressionFactory", then the value of that entry is used as the name of the implementation class.</li>
+     * <li>Use the <code>ExpressionFactory</code> system property. If a system property with this name is defined,
      * then its value is used as the name of the implementation class.</li>
      * <li>Use a platform default implementation.</li>
      * </ul>
@@ -124,12 +124,12 @@
      * Properties are optional and can be ignored by an implementation.
      *
      * <p>
-     * The name of a property should start with "javax.el."
+     * The name of a property should start with "jakarta.el."
      *
      * <p>
      * The following are some suggested names for properties.
      * <ul>
-     * <li>javax.el.cacheSize</li>
+     * <li>jakarta.el.cacheSize</li>
      * </ul>
      *
      * @param properties Properties passed to the implementation. If null, then no properties.
@@ -137,7 +137,7 @@
      * @return a new <code>ExpressionFactory</code> instance
      */
     public static ExpressionFactory newInstance(Properties properties) {
-        return (ExpressionFactory) FactoryFinder.find("javax.el.ExpressionFactory", "com.sun.el.ExpressionFactoryImpl", properties);
+        return (ExpressionFactory) FactoryFinder.find("ExpressionFactory", "com.sun.el.ExpressionFactoryImpl", properties);
     }
 
     /**
diff --git a/api/src/main/java/javax/el/FactoryFinder.java b/api/src/main/java/jakarta/el/FactoryFinder.java
similarity index 99%
rename from api/src/main/java/javax/el/FactoryFinder.java
rename to api/src/main/java/jakarta/el/FactoryFinder.java
index 273ab22..5827221 100644
--- a/api/src/main/java/javax/el/FactoryFinder.java
+++ b/api/src/main/java/jakarta/el/FactoryFinder.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import static java.io.File.separator;
 
diff --git a/api/src/main/java/javax/el/FunctionMapper.java b/api/src/main/java/jakarta/el/FunctionMapper.java
similarity index 98%
rename from api/src/main/java/javax/el/FunctionMapper.java
rename to api/src/main/java/jakarta/el/FunctionMapper.java
index 36e76a7..f331a56 100644
--- a/api/src/main/java/javax/el/FunctionMapper.java
+++ b/api/src/main/java/jakarta/el/FunctionMapper.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.lang.reflect.Method;
 
diff --git a/api/src/main/java/javax/el/ImportHandler.java b/api/src/main/java/jakarta/el/ImportHandler.java
similarity index 99%
rename from api/src/main/java/javax/el/ImportHandler.java
rename to api/src/main/java/jakarta/el/ImportHandler.java
index d7b99bd..e128cda 100644
--- a/api/src/main/java/javax/el/ImportHandler.java
+++ b/api/src/main/java/jakarta/el/ImportHandler.java
@@ -15,7 +15,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.el;
+package jakarta.el;
 
 import static java.lang.reflect.Modifier.isAbstract;
 import static java.lang.reflect.Modifier.isInterface;
diff --git a/api/src/main/java/javax/el/LambdaExpression.java b/api/src/main/java/jakarta/el/LambdaExpression.java
similarity index 97%
rename from api/src/main/java/javax/el/LambdaExpression.java
rename to api/src/main/java/jakarta/el/LambdaExpression.java
index 18d3847..206b43a 100644
--- a/api/src/main/java/javax/el/LambdaExpression.java
+++ b/api/src/main/java/jakarta/el/LambdaExpression.java
@@ -15,7 +15,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -36,7 +36,7 @@
  *
  * <p>
  * A <code>LambdaExpression</code> can be invoked by calling {@link LambdaExpression#invoke}, with an
- * {@link javax.el.ELContext} and a list of the actual arguments. Alternately, a <code>LambdaExpression</code> can be
+ * {@link ELContext} and a list of the actual arguments. Alternately, a <code>LambdaExpression</code> can be
  * invoked without passing a <code>ELContext</code>, in which case the <code>ELContext</code> previously set by calling
  * {@link LambdaExpression#setELContext} will be used. The evaluation of the <code>ValueExpression</code> in the body
  * uses the {@link ELContext} to resolve references to the parameters, and to evaluate the lambda expression. The result
diff --git a/api/src/main/java/javax/el/ListELResolver.java b/api/src/main/java/jakarta/el/ListELResolver.java
similarity index 99%
rename from api/src/main/java/javax/el/ListELResolver.java
rename to api/src/main/java/jakarta/el/ListELResolver.java
index 4cd3a2e..3ddfd6a 100644
--- a/api/src/main/java/javax/el/ListELResolver.java
+++ b/api/src/main/java/jakarta/el/ListELResolver.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.beans.FeatureDescriptor;
 import java.util.ArrayList;
diff --git a/api/src/main/java/javax/el/MapELResolver.java b/api/src/main/java/jakarta/el/MapELResolver.java
similarity index 99%
rename from api/src/main/java/javax/el/MapELResolver.java
rename to api/src/main/java/jakarta/el/MapELResolver.java
index cca84f2..e8500c9 100644
--- a/api/src/main/java/javax/el/MapELResolver.java
+++ b/api/src/main/java/jakarta/el/MapELResolver.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import static java.lang.Boolean.TRUE;
 
diff --git a/api/src/main/java/javax/el/MethodExpression.java b/api/src/main/java/jakarta/el/MethodExpression.java
similarity index 95%
rename from api/src/main/java/javax/el/MethodExpression.java
rename to api/src/main/java/jakarta/el/MethodExpression.java
index 38b02e5..07fd3ea 100644
--- a/api/src/main/java/javax/el/MethodExpression.java
+++ b/api/src/main/java/jakarta/el/MethodExpression.java
@@ -16,13 +16,13 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 /**
  * An <code>Expression</code> that refers to a method on an object.
  *
  * <p>
- * The {@link javax.el.ExpressionFactory#createMethodExpression} method can be used to parse an expression string and
+ * The {@link ExpressionFactory#createMethodExpression} method can be used to parse an expression string and
  * return a concrete instance of <code>MethodExpression</code> that encapsulates the parsed expression. The
  * {@link FunctionMapper} is used at parse time, not evaluation time, so one is not needed to evaluate an expression
  * using this class. However, the {@link ELContext} is needed at evaluation time.
@@ -32,7 +32,7 @@
  * The {@link #getMethodInfo} and {@link #invoke} methods will evaluate the expression each time they are called. The
  * {@link ELResolver} in the <code>ELContext</code> is used to resolve the top-level variables and to determine the
  * behavior of the <code>.</code> and <code>[]</code> operators. For any of the two methods, the
- * {@link javax.el.ELResolver#getValue} method is used to resolve all properties up to but excluding the last one. This
+ * {@link ELResolver#getValue} method is used to resolve all properties up to but excluding the last one. This
  * provides the <code>base</code> object on which the method appears. If the <code>base</code> object is null, a
  * <code>PropertyNotFoundException</code> must be thrown. At the last resolution, the final <code>property</code> is
  * then coerced to a <code>String</code>, which provides the name of the method to be found. A method matching the name
diff --git a/api/src/main/java/javax/el/MethodInfo.java b/api/src/main/java/jakarta/el/MethodInfo.java
similarity index 98%
rename from api/src/main/java/javax/el/MethodInfo.java
rename to api/src/main/java/jakarta/el/MethodInfo.java
index b79f077..10ce537 100644
--- a/api/src/main/java/javax/el/MethodInfo.java
+++ b/api/src/main/java/jakarta/el/MethodInfo.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 /**
  * Holds information about a method that a {@link MethodExpression} evaluated to.
diff --git a/api/src/main/java/javax/el/MethodNotFoundException.java b/api/src/main/java/jakarta/el/MethodNotFoundException.java
similarity index 98%
rename from api/src/main/java/javax/el/MethodNotFoundException.java
rename to api/src/main/java/jakarta/el/MethodNotFoundException.java
index a306094..b78113b 100644
--- a/api/src/main/java/javax/el/MethodNotFoundException.java
+++ b/api/src/main/java/jakarta/el/MethodNotFoundException.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 /**
  * Thrown when a method could not be found while evaluating a {@link MethodExpression}.
diff --git a/api/src/main/java/javax/el/PrivateMessages.properties b/api/src/main/java/jakarta/el/PrivateMessages.properties
similarity index 100%
rename from api/src/main/java/javax/el/PrivateMessages.properties
rename to api/src/main/java/jakarta/el/PrivateMessages.properties
diff --git a/api/src/main/java/javax/el/PropertyNotFoundException.java b/api/src/main/java/jakarta/el/PropertyNotFoundException.java
similarity index 98%
rename from api/src/main/java/javax/el/PropertyNotFoundException.java
rename to api/src/main/java/jakarta/el/PropertyNotFoundException.java
index 8a829e1..ceaff2e 100644
--- a/api/src/main/java/javax/el/PropertyNotFoundException.java
+++ b/api/src/main/java/jakarta/el/PropertyNotFoundException.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 /**
  * Thrown when a property could not be found while evaluating a {@link ValueExpression} or {@link MethodExpression}.
diff --git a/api/src/main/java/javax/el/PropertyNotWritableException.java b/api/src/main/java/jakarta/el/PropertyNotWritableException.java
similarity index 98%
rename from api/src/main/java/javax/el/PropertyNotWritableException.java
rename to api/src/main/java/jakarta/el/PropertyNotWritableException.java
index e814168..cb4a1ae 100644
--- a/api/src/main/java/javax/el/PropertyNotWritableException.java
+++ b/api/src/main/java/jakarta/el/PropertyNotWritableException.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 /**
  * Thrown when a property could not be written to while setting the value on a {@link ValueExpression}.
diff --git a/api/src/main/java/javax/el/ResourceBundleELResolver.java b/api/src/main/java/jakarta/el/ResourceBundleELResolver.java
similarity index 99%
rename from api/src/main/java/javax/el/ResourceBundleELResolver.java
rename to api/src/main/java/jakarta/el/ResourceBundleELResolver.java
index cd5e02f..9504013 100644
--- a/api/src/main/java/javax/el/ResourceBundleELResolver.java
+++ b/api/src/main/java/jakarta/el/ResourceBundleELResolver.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 import static java.lang.Boolean.TRUE;
 
diff --git a/api/src/main/java/javax/el/StandardELContext.java b/api/src/main/java/jakarta/el/StandardELContext.java
similarity index 99%
rename from api/src/main/java/javax/el/StandardELContext.java
rename to api/src/main/java/jakarta/el/StandardELContext.java
index 1c17be7..fc39239 100644
--- a/api/src/main/java/javax/el/StandardELContext.java
+++ b/api/src/main/java/jakarta/el/StandardELContext.java
@@ -15,7 +15,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.lang.reflect.Method;
 import java.util.HashMap;
diff --git a/api/src/main/java/javax/el/StaticFieldELResolver.java b/api/src/main/java/jakarta/el/StaticFieldELResolver.java
similarity index 97%
rename from api/src/main/java/javax/el/StaticFieldELResolver.java
rename to api/src/main/java/jakarta/el/StaticFieldELResolver.java
index a945e0d..eb5e15b 100644
--- a/api/src/main/java/javax/el/StaticFieldELResolver.java
+++ b/api/src/main/java/jakarta/el/StaticFieldELResolver.java
@@ -15,11 +15,11 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.el;
+package jakarta.el;
 
 import static java.lang.reflect.Modifier.isPublic;
 import static java.lang.reflect.Modifier.isStatic;
-import static javax.el.ELUtil.getExceptionMessageString;
+import static jakarta.el.ELUtil.getExceptionMessageString;
 
 import java.beans.FeatureDescriptor;
 import java.lang.reflect.Constructor;
@@ -87,7 +87,7 @@
             } catch (IllegalAccessException ex) {
             }
 
-            throw new PropertyNotFoundException(ELUtil.getExceptionMessageString(context, "staticFieldReadError", new Object[] { klass.getName(), fieldName }));
+            throw new PropertyNotFoundException(getExceptionMessageString(context, "staticFieldReadError", new Object[] { klass.getName(), fieldName }));
         }
 
         return null;
diff --git a/api/src/main/java/javax/el/TypeConverter.java b/api/src/main/java/jakarta/el/TypeConverter.java
similarity index 98%
rename from api/src/main/java/javax/el/TypeConverter.java
rename to api/src/main/java/jakarta/el/TypeConverter.java
index e9b3dcd..9b93891 100644
--- a/api/src/main/java/javax/el/TypeConverter.java
+++ b/api/src/main/java/jakarta/el/TypeConverter.java
@@ -15,7 +15,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.beans.FeatureDescriptor;
 import java.util.Iterator;
diff --git a/api/src/main/java/javax/el/ValueExpression.java b/api/src/main/java/jakarta/el/ValueExpression.java
similarity index 99%
rename from api/src/main/java/javax/el/ValueExpression.java
rename to api/src/main/java/jakarta/el/ValueExpression.java
index 7f9cfdc..7f3b5d2 100644
--- a/api/src/main/java/javax/el/ValueExpression.java
+++ b/api/src/main/java/jakarta/el/ValueExpression.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 /**
  * An <code>Expression</code> that can get or set a value.
diff --git a/api/src/main/java/javax/el/ValueReference.java b/api/src/main/java/jakarta/el/ValueReference.java
similarity index 98%
rename from api/src/main/java/javax/el/ValueReference.java
rename to api/src/main/java/jakarta/el/ValueReference.java
index d486c7f..59ce389 100644
--- a/api/src/main/java/javax/el/ValueReference.java
+++ b/api/src/main/java/jakarta/el/ValueReference.java
@@ -15,7 +15,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package javax.el;
+package jakarta.el;
 
 import java.io.Serializable;
 
diff --git a/api/src/main/java/javax/el/VariableMapper.java b/api/src/main/java/jakarta/el/VariableMapper.java
similarity index 98%
rename from api/src/main/java/javax/el/VariableMapper.java
rename to api/src/main/java/jakarta/el/VariableMapper.java
index 1b84214..2a69339 100644
--- a/api/src/main/java/javax/el/VariableMapper.java
+++ b/api/src/main/java/jakarta/el/VariableMapper.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package javax.el;
+package jakarta.el;
 
 /**
  * The interface to a map between Jakarta Expression Language variables and the Jakarta Expression Language expressions
diff --git a/api/src/main/java/javax/el/package.html b/api/src/main/java/jakarta/el/package.html
similarity index 84%
rename from api/src/main/java/javax/el/package.html
rename to api/src/main/java/jakarta/el/package.html
index 22e6086..3d38c9d 100644
--- a/api/src/main/java/javax/el/package.html
+++ b/api/src/main/java/jakarta/el/package.html
@@ -53,7 +53,7 @@
 to adapt to the specific requirements of the environment where it is
 being used.</p>
 
-<p>Class {@link javax.el.ELContext} is what links 
+<p>Class {@link jakarta.el.ELContext} is what links
 the Jakarta Expression Language with the specific environment where it is being used.
 It provides the mechanism through which all relevant context for creating or
 evaluating an expression is specified.
@@ -63,10 +63,10 @@
 </code> objects is controlled through the underlying technology.
 For example, in Jakarta Server Pages, the
  <code>JspContext.getELContext()</code> factory method is used.  In an
-stand-alone environment, a default {@link javax.el.StandardELContext} is
+stand-alone environment, a default {@link StandardELContext} is
 provided.</p>
  
- <p>Some technologies provide the ability to add an {@link javax.el.ELContextListener}
+ <p>Some technologies provide the ability to add an {@link ELContextListener}
  so that applications and frameworks can ensure their own context objects
  are attached to any newly created <code>ELContext</code>.</p>
  
@@ -76,14 +76,14 @@
 that gets parsed according to the grammar defined by the Expression Language.</p>
 
 <p>There are two types of expressions defined by Jakarta Expression Language: <i>value expressions</i>
-and <i>method expressions</i>. A {@link javax.el.ValueExpression} such as 
+and <i>method expressions</i>. A {@link ValueExpression} such as
 <code>"${customer.name}"</code> can be used either
 as an <i>rvalue</i> (return the value associated with property <code>name</code>
 of the model object <code>customer</code>) or as an <i>lvalue</i> 
 (set the value of the property <code>name</code> of the model object
 <code>customer</code>).</p>
 
-<p>A {@link javax.el.MethodExpression} such as 
+<p>A {@link MethodExpression} such as
 <code>"${handler.process}"</code> makes it possible to invoke a method 
 (<code>process</code>) on a specific model object (<code>handler</code>).</p>
 
@@ -91,20 +91,20 @@
 invocation, such as <code>${trader.buy("JAVA")}</code>, where the arguments to
 the method invocation are specified in the expression.</p>
 
-<p>All expression classes extend the base class {@link javax.el.Expression}, making them
+<p>All expression classes extend the base class {@link Expression}, making them
 serializable and forcing them to implement <code>equals()</code> and 
 <code>hashCode()</code>. Moreover, each method on these expression classes 
 that actually evaluates an expression receives a parameter
-of class {@link javax.el.ELContext},
+of class {@link ELContext},
 which provides the context required to evaluate the expression.</p>
 
 <h3><a name="ExpressionCreation">Creation of Expressions</a></h3>
 
-<p>An expression is created through the {@link javax.el.ExpressionFactory} class.
+<p>An expression is created through the {@link jakarta.el.ExpressionFactory} class.
 The factory provides two creation methods; one for each type of expression
  supported by Jakarta Expression Language.</p>
 
-<p>To create an expression, one must provide an {@link javax.el.ELContext}, 
+<p>To create an expression, one must provide an {@link ELContext},
 a string representing 
 the expression, and the expected type (<code>ValueExpression</code>) or signature 
 (<code>MethodExpression</code>). 
@@ -112,13 +112,13 @@
 The <code>ELContext</code> provides the context necessary to parse an expression.
 Specifically, if the expression uses a Jakarta Expression Language function 
 (for example <code>${fn:toUpperCase(customer.name)}</code>) or a Jakarta Expression Language 
-variable, then {@link javax.el.FunctionMapper} and {@link javax.el.VariableMapper}
+variable, then {@link FunctionMapper} and {@link VariableMapper}
 objects must be available within the <code>ELContext</code> so that Jakarta Expression Language 
 functions and Jakarta Expression Language variables are properly mapped.
 
 <h3><a name="ExpressionEvaluation">Evaluation of Expressions</a></h3>
 <p>The creation and the evaluation of an expression are done in two separate
-steps.  At the evaluation of an expression, the {@link javax.el.ELContext} 
+steps.  At the evaluation of an expression, the {@link jakarta.el.ELContext}
 provides the context necessary to support property and method resolution
 for modal objects.</p>
 
@@ -128,13 +128,13 @@
 rendering phrase.</p>
 
 <p>Adding parameters to a <code>ValueExpression</code> further enhances the
-power of deferred expressions.  The {@link javax.el.LambdaExpression}
+power of deferred expressions.  The {@link LambdaExpression}
 encapsulates such a construct.  A <code>LambdaExpression</code> can be
 invoked by supplying the actual parameters at evaluation.  It plays
 an important role in the support for collections operators.</p>
 
 <h3><a name="EvaluationListener">Evaluation Listeners</a></h3>
-<p>By registering {@link javax.el.EvaluationListener}s in ELContext, a user can
+<p>By registering {@link jakarta.el.EvaluationListener}s in ELContext, a user can
 receive notifications during the Jakarta Expression Language expression evaluations.  
 There are three events that trigger the notification:
 <ul>
@@ -145,14 +145,14 @@
 
 <h3><a name="Resolver">Resolution of Model Objects and their Properties</a></h3>
 
-<p>Through the {@link javax.el.ELResolver} base class, Jakarta Expression Language 
+<p>Through the {@link jakarta.el.ELResolver} base class, Jakarta Expression Language
 features a pluggable mechanism to resolve model object references as well as properties 
 and method invocations of these objects.</p>
 
 <p>The Jakarta Expression Language API provides implementations of <code>ELResolver</code> supporting 
 property resolution for common data types which include arrays 
-({@link javax.el.ArrayELResolver}), JavaBeans ({@link javax.el.BeanELResolver}), <code>List</code>s ({@link javax.el.ListELResolver}), 
-<code>Map</code>s ({@link javax.el.MapELResolver}), and <code>ResourceBundle</code>s ({@link javax.el.ResourceBundleELResolver}).</p>
+({@link ArrayELResolver}), JavaBeans ({@link BeanELResolver}), <code>List</code>s ({@link ListELResolver}),
+<code>Map</code>s ({@link MapELResolver}), and <code>ResourceBundle</code>s ({@link ResourceBundleELResolver}).</p>
 
 <p>Tools can easily obtain more information about resolvable model objects and their 
 resolvable properties by calling
@@ -164,7 +164,7 @@
 
 <p>If a Jakarta Expression Language expression uses a function 
 (for example <code>${fn:toUpperCase(customer.name)}</code>), then a 
-{@link javax.el.FunctionMapper} object must also be specified within 
+{@link FunctionMapper} object must also be specified within
 the <code>ELContext</code>. 
 
 The <code>FunctionMapper</code> is responsible to map
@@ -174,9 +174,9 @@
 
 <h3><a name="Variables">Jakarta Expression Language Variables</a></h3>
 
-<p>Just like {@link javax.el.FunctionMapper} provides
+<p>Just like {@link FunctionMapper} provides
 a flexible mechanism to add functions to Jakarta Expression Language, 
-{@link javax.el.VariableMapper} provides a flexible mechanism to support the notion of 
+{@link VariableMapper} provides a flexible mechanism to support the notion of
 <strong>Jakarta Expression Language variables</strong>.
 </p>
  
@@ -214,7 +214,7 @@
 <p>
 Assuming that there are three elements in <code>${model.list}</code>, this means
 that for each invocation of <code>&lt;h:inputText></code>, the following information 
-about <code>item</code> must be preserved in the {@link javax.el.VariableMapper}:
+about <code>item</code> must be preserved in the {@link VariableMapper}:
 <blockquote>
     first invocation: <code>item</code> maps to first element in <code>${model.list}</code><br>
     second invocation: <code>item</code> maps to second element in <code>${model.list}</code><br>
@@ -227,12 +227,12 @@
 
 <h3><a name="Standalone">Jakarta Expression Language in Stand-alone environment</a></h3>
 <p>Jakarta Expression Language 3.0 includes APIs for using Jakarta Expression Language in a stand-alone environment.</p>
-<p>{@link javax.el.ELProcessor} provides simple APIs for the direct
+<p>{@link jakarta.el.ELProcessor} provides simple APIs for the direct
 evaluations of expressions. It also makes it easy to define functions,
 set variables, and define beans locally.</p>
 
-<p>{@link javax.el.ELManager} provides lower level APIs for managing the Jakarta Expression Language
-parsing and evaluation environment.  It contains a default ELContext {@link javax.el.StandardELContext}.</p>
+<p>{@link jakarta.el.ELManager} provides lower level APIs for managing the Jakarta Expression Language
+parsing and evaluation environment.  It contains a default ELContext {@link jakarta.el.StandardELContext}.</p>
 
 </body>
 </html>
diff --git a/impl/pom.xml b/impl/pom.xml
index 9c28069..f97c5f6 100644
--- a/impl/pom.xml
+++ b/impl/pom.xml
@@ -31,19 +31,19 @@
     
     <groupId>com.sun.el</groupId>
     <artifactId>el-ri</artifactId>
-    <version>3.0.3-SNAPSHOT</version>
+    <version>4.0.0-SNAPSHOT</version>
 
-    <name>Jakarta Expression Language 3.0 Implementation</name>
+    <name>Jakarta Expression Language 4.0 Implementation</name>
     <description>Jakarta Expression Language Implementation</description>
     <url>https://projects.eclipse.org/projects/ee4j.el</url>
     
     <properties>
         <!-- the bundle build number must be the same as the maven number -->
-        <bundle.version>3.0.3</bundle.version>
+        <bundle.version>4.0.0-SNAPSHOT</bundle.version>
         <!-- The most current api version -->
-        <spec.version>3.0</spec.version>
-        <extensionName>javax.el.impl</extensionName>
-        <bundle.symbolicName>com.sun.el.javax.el</bundle.symbolicName>
+        <spec.version>4.0</spec.version>
+        <extensionName>jakarta.el.impl</extensionName>
+        <bundle.symbolicName>jakarta.el</bundle.symbolicName>
         <vendorName>Oracle Corporation</vendorName>
         <findbugs.version>2.5.2</findbugs.version>
         <findbugs.exclude>${project.basedir}/exclude.xml</findbugs.exclude>
diff --git a/impl/src/main/java/com/sun/el/ExpressionFactoryImpl.java b/impl/src/main/java/com/sun/el/ExpressionFactoryImpl.java
index ee9a042..71efa55 100644
--- a/impl/src/main/java/com/sun/el/ExpressionFactoryImpl.java
+++ b/impl/src/main/java/com/sun/el/ExpressionFactoryImpl.java
@@ -21,12 +21,12 @@
 import java.util.Map;
 import java.util.Properties;
 
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.ELResolver;
-import javax.el.ExpressionFactory;
-import javax.el.MethodExpression;
-import javax.el.ValueExpression;
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.ELResolver;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.MethodExpression;
+import jakarta.el.ValueExpression;
 
 import com.sun.el.lang.ELSupport;
 import com.sun.el.lang.ExpressionBuilder;
@@ -34,7 +34,7 @@
 import com.sun.el.util.MessageFactory;
 
 /**
- * @see javax.el.ExpressionFactory
+ * @see ExpressionFactory
  *
  * @author Jacob Hookom [jacob@hookom.net]
  * @author Kin-man Chung
@@ -52,9 +52,16 @@
     public ExpressionFactoryImpl(Properties properties) {
         super();
         this.properties = properties;
-        this.isBackwardCompatible22 = "true".equals(getProperty("javax.el.bc2.2"));
+        this.isBackwardCompatible22 = "true".equals(getProperty("jakarta.el.bc2.2"));
     }
 
+    /**
+     * Coerces an object to a specific type according to the Jakarta Expression Language type conversion rules. The custom
+     * type conversions in the <code>ELResolver</code>s are not considered.
+     *
+     * Jakarta Expression Language version 2.2 backward compatibility conversion rules apply if ExpressionFactoryImpl was created with property
+     * "jakarta.el.bc2.2" set to true.
+     */
     @Override
     public Object coerceToType(Object obj, Class<?> type) {
         try {
diff --git a/impl/src/main/java/com/sun/el/MethodExpressionImpl.java b/impl/src/main/java/com/sun/el/MethodExpressionImpl.java
index fb0aea4..99c9221 100644
--- a/impl/src/main/java/com/sun/el/MethodExpressionImpl.java
+++ b/impl/src/main/java/com/sun/el/MethodExpressionImpl.java
@@ -25,17 +25,17 @@
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.ELResolver;
-import javax.el.Expression;
-import javax.el.ExpressionFactory;
-import javax.el.FunctionMapper;
-import javax.el.MethodExpression;
-import javax.el.MethodInfo;
-import javax.el.MethodNotFoundException;
-import javax.el.PropertyNotFoundException;
-import javax.el.VariableMapper;
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.ELResolver;
+import jakarta.el.Expression;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.FunctionMapper;
+import jakarta.el.MethodExpression;
+import jakarta.el.MethodInfo;
+import jakarta.el.MethodNotFoundException;
+import jakarta.el.PropertyNotFoundException;
+import jakarta.el.VariableMapper;
 
 import com.sun.el.lang.EvaluationContext;
 import com.sun.el.lang.ExpressionBuilder;
@@ -66,10 +66,10 @@
  * <p>
  * See the notes about comparison, serialization and immutability in the {@link Expression} javadocs.
  *
- * @see javax.el.ELResolver
- * @see javax.el.Expression
- * @see javax.el.ExpressionFactory
- * @see javax.el.MethodExpression
+ * @see ELResolver
+ * @see Expression
+ * @see ExpressionFactory
+ * @see MethodExpression
  *
  * @author Jacob Hookom [jacob@hookom.net]
  * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: kchung $
@@ -152,7 +152,7 @@
      *
      * @return The original expression String.
      *
-     * @see javax.el.Expression#getExpressionString()
+     * @see Expression#getExpressionString()
      */
     @Override
     public String getExpressionString() {
@@ -172,7 +172,7 @@
      * @throws MethodNotFoundException if no suitable method can be found.
      * @throws ELException if an exception was thrown while performing property or variable resolution. The thrown exception
      * must be included as the cause property of this exception, if available.
-     * @see javax.el.MethodExpression#getMethodInfo(javax.el.ELContext)
+     * @see MethodExpression#getMethodInfo(ELContext)
      */
     @Override
     public MethodInfo getMethodInfo(ELContext context) throws PropertyNotFoundException, MethodNotFoundException, ELException {
@@ -227,7 +227,7 @@
      * must be included as the cause property of this exception, if available. If the exception thrown is an
      * <code>InvocationTargetException</code>, extract its <code>cause</code> and pass it to the <code>ELException</code>
      * constructor.
-     * @see javax.el.MethodExpression#invoke(javax.el.ELContext, java.lang.Object[])
+     * @see MethodExpression#invoke(ELContext, java.lang.Object[])
      */
     @Override
     public Object invoke(ELContext context, Object[] params) throws PropertyNotFoundException, MethodNotFoundException, ELException {
diff --git a/impl/src/main/java/com/sun/el/MethodExpressionLiteral.java b/impl/src/main/java/com/sun/el/MethodExpressionLiteral.java
index ae2b5b6..e3e7b3f 100644
--- a/impl/src/main/java/com/sun/el/MethodExpressionLiteral.java
+++ b/impl/src/main/java/com/sun/el/MethodExpressionLiteral.java
@@ -24,10 +24,10 @@
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.MethodExpression;
-import javax.el.MethodInfo;
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.MethodExpression;
+import jakarta.el.MethodInfo;
 
 import com.sun.el.util.ReflectionUtil;
 
diff --git a/impl/src/main/java/com/sun/el/ValueExpressionImpl.java b/impl/src/main/java/com/sun/el/ValueExpressionImpl.java
index 7f476eb..c814dc0 100644
--- a/impl/src/main/java/com/sun/el/ValueExpressionImpl.java
+++ b/impl/src/main/java/com/sun/el/ValueExpressionImpl.java
@@ -23,17 +23,17 @@
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.ELResolver;
-import javax.el.Expression;
-import javax.el.ExpressionFactory;
-import javax.el.FunctionMapper;
-import javax.el.PropertyNotFoundException;
-import javax.el.PropertyNotWritableException;
-import javax.el.ValueExpression;
-import javax.el.ValueReference;
-import javax.el.VariableMapper;
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.ELResolver;
+import jakarta.el.Expression;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.FunctionMapper;
+import jakarta.el.PropertyNotFoundException;
+import jakarta.el.PropertyNotWritableException;
+import jakarta.el.ValueExpression;
+import jakarta.el.ValueReference;
+import jakarta.el.VariableMapper;
 
 import com.sun.el.lang.EvaluationContext;
 import com.sun.el.lang.ExpressionBuilder;
@@ -72,10 +72,10 @@
  * <p>
  * See the notes about comparison, serialization and immutability in the {@link Expression} javadocs.
  *
- * @see javax.el.ELResolver
- * @see javax.el.Expression
- * @see javax.el.ExpressionFactory
- * @see javax.el.ValueExpression
+ * @see ELResolver
+ * @see Expression
+ * @see ExpressionFactory
+ * @see ValueExpression
  *
  * @author Jacob Hookom [jacob@hookom.net]
  * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: dochez $
@@ -118,7 +118,7 @@
     /*
      * (non-Javadoc)
      *
-     * @see javax.el.ValueExpression#getExpectedType()
+     * @see ValueExpression#getExpectedType()
      */
     @Override
     public Class<?> getExpectedType() {
@@ -131,7 +131,7 @@
      * @return the <code>expectedType</code> passed to the <code>ExpressionFactory.createValueExpression</code> method that
      * created this <code>ValueExpression</code>.
      *
-     * @see javax.el.Expression#getExpressionString()
+     * @see Expression#getExpressionString()
      */
     @Override
     public String getExpressionString() {
@@ -153,7 +153,7 @@
     /*
      * (non-Javadoc)
      *
-     * @see javax.el.ValueExpression#getType(javax.el.ELContext)
+     * @see ValueExpression#getType(ELContext)
      */
     @Override
     public Class<?> getType(ELContext context) throws PropertyNotFoundException, ELException {
@@ -163,7 +163,7 @@
     /*
      * (non-Javadoc)
      *
-     * @see javax.el.ValueExpression#getValueReference(javax.el.ELContext)
+     * @see ValueExpression#getValueReference(ELContext)
      */
     @Override
     public ValueReference getValueReference(ELContext context) throws PropertyNotFoundException, ELException {
@@ -173,7 +173,7 @@
     /*
      * (non-Javadoc)
      *
-     * @see javax.el.ValueExpression#getValue(javax.el.ELContext)
+     * @see ValueExpression#getValue(ELContext)
      */
     @Override
     public Object getValue(ELContext context) throws PropertyNotFoundException, ELException {
@@ -206,7 +206,7 @@
     /*
      * (non-Javadoc)
      *
-     * @see javax.el.ValueExpression#isLiteralText()
+     * @see ValueExpression#isLiteralText()
      */
     @Override
     public boolean isLiteralText() {
@@ -220,7 +220,7 @@
     /*
      * (non-Javadoc)
      *
-     * @see javax.el.ValueExpression#isReadOnly(javax.el.ELContext)
+     * @see ValueExpression#isReadOnly(ELContext)
      */
     @Override
     public boolean isReadOnly(ELContext context) throws PropertyNotFoundException, ELException {
@@ -241,7 +241,7 @@
     /*
      * (non-Javadoc)
      *
-     * @see javax.el.ValueExpression#setValue(javax.el.ELContext, java.lang.Object)
+     * @see ValueExpression#setValue(ELContext, java.lang.Object)
      */
     @Override
     public void setValue(ELContext context, Object value) throws PropertyNotFoundException, PropertyNotWritableException, ELException {
diff --git a/impl/src/main/java/com/sun/el/ValueExpressionLiteral.java b/impl/src/main/java/com/sun/el/ValueExpressionLiteral.java
index 7dc21e9..94cb429 100644
--- a/impl/src/main/java/com/sun/el/ValueExpressionLiteral.java
+++ b/impl/src/main/java/com/sun/el/ValueExpressionLiteral.java
@@ -23,10 +23,10 @@
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.PropertyNotWritableException;
-import javax.el.ValueExpression;
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.PropertyNotWritableException;
+import jakarta.el.ValueExpression;
 
 import com.sun.el.util.MessageFactory;
 
diff --git a/impl/src/main/java/com/sun/el/lang/ELSupport.java b/impl/src/main/java/com/sun/el/lang/ELSupport.java
index f0a8368..1c68c91 100644
--- a/impl/src/main/java/com/sun/el/lang/ELSupport.java
+++ b/impl/src/main/java/com/sun/el/lang/ELSupport.java
@@ -21,8 +21,8 @@
 import java.math.BigDecimal;
 import java.math.BigInteger;
 
-import javax.el.ELException;
-import javax.el.PropertyNotFoundException;
+import jakarta.el.ELException;
+import jakarta.el.PropertyNotFoundException;
 
 import com.sun.el.util.MessageFactory;
 
diff --git a/impl/src/main/java/com/sun/el/lang/EvaluationContext.java b/impl/src/main/java/com/sun/el/lang/EvaluationContext.java
index 4b07a60..e46dad2 100644
--- a/impl/src/main/java/com/sun/el/lang/EvaluationContext.java
+++ b/impl/src/main/java/com/sun/el/lang/EvaluationContext.java
@@ -19,12 +19,12 @@
 import java.util.List;
 import java.util.Map;
 
-import javax.el.ELContext;
-import javax.el.ELResolver;
-import javax.el.EvaluationListener;
-import javax.el.FunctionMapper;
-import javax.el.ImportHandler;
-import javax.el.VariableMapper;
+import jakarta.el.ELContext;
+import jakarta.el.ELResolver;
+import jakarta.el.EvaluationListener;
+import jakarta.el.FunctionMapper;
+import jakarta.el.ImportHandler;
+import jakarta.el.VariableMapper;
 
 /**
  * The context for Jakarta Expression expression evaluation. This wrapper ELContext captures the function mapper and the
diff --git a/impl/src/main/java/com/sun/el/lang/ExpressionBuilder.java b/impl/src/main/java/com/sun/el/lang/ExpressionBuilder.java
index e1de322..1c0e090 100644
--- a/impl/src/main/java/com/sun/el/lang/ExpressionBuilder.java
+++ b/impl/src/main/java/com/sun/el/lang/ExpressionBuilder.java
@@ -22,12 +22,12 @@
 import java.lang.reflect.Method;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.FunctionMapper;
-import javax.el.MethodExpression;
-import javax.el.ValueExpression;
-import javax.el.VariableMapper;
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.FunctionMapper;
+import jakarta.el.MethodExpression;
+import jakarta.el.ValueExpression;
+import jakarta.el.VariableMapper;
 
 import com.sun.el.MethodExpressionImpl;
 import com.sun.el.MethodExpressionLiteral;
diff --git a/impl/src/main/java/com/sun/el/lang/FunctionMapperFactory.java b/impl/src/main/java/com/sun/el/lang/FunctionMapperFactory.java
index 3bb0157..f790365 100644
--- a/impl/src/main/java/com/sun/el/lang/FunctionMapperFactory.java
+++ b/impl/src/main/java/com/sun/el/lang/FunctionMapperFactory.java
@@ -18,7 +18,7 @@
 
 import java.lang.reflect.Method;
 
-import javax.el.FunctionMapper;
+import jakarta.el.FunctionMapper;
 
 /**
  * @author Jacob Hookom [jacob@hookom.net]
@@ -39,7 +39,7 @@
     /*
      * (non-Javadoc)
      *
-     * @see javax.el.FunctionMapper#resolveFunction(java.lang.String, java.lang.String)
+     * @see FunctionMapper#resolveFunction(java.lang.String, java.lang.String)
      */
     @Override
     public Method resolveFunction(String prefix, String localName) {
diff --git a/impl/src/main/java/com/sun/el/lang/FunctionMapperImpl.java b/impl/src/main/java/com/sun/el/lang/FunctionMapperImpl.java
index 970bc0e..1198496 100644
--- a/impl/src/main/java/com/sun/el/lang/FunctionMapperImpl.java
+++ b/impl/src/main/java/com/sun/el/lang/FunctionMapperImpl.java
@@ -24,7 +24,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.el.FunctionMapper;
+import jakarta.el.FunctionMapper;
 
 import com.sun.el.util.ReflectionUtil;
 
@@ -41,7 +41,7 @@
     /*
      * (non-Javadoc)
      *
-     * @see javax.el.FunctionMapper#resolveFunction(java.lang.String, java.lang.String)
+     * @see FunctionMapper#resolveFunction(java.lang.String, java.lang.String)
      */
     @Override
     public Method resolveFunction(String prefix, String localName) {
diff --git a/impl/src/main/java/com/sun/el/lang/VariableMapperFactory.java b/impl/src/main/java/com/sun/el/lang/VariableMapperFactory.java
index b67aade..e498b7c 100644
--- a/impl/src/main/java/com/sun/el/lang/VariableMapperFactory.java
+++ b/impl/src/main/java/com/sun/el/lang/VariableMapperFactory.java
@@ -16,8 +16,8 @@
 
 package com.sun.el.lang;
 
-import javax.el.ValueExpression;
-import javax.el.VariableMapper;
+import jakarta.el.ValueExpression;
+import jakarta.el.VariableMapper;
 
 /**
  * Creates a VariableMapper for the variables used in the expression.
diff --git a/impl/src/main/java/com/sun/el/lang/VariableMapperImpl.java b/impl/src/main/java/com/sun/el/lang/VariableMapperImpl.java
index 027bbe6..07a495b 100644
--- a/impl/src/main/java/com/sun/el/lang/VariableMapperImpl.java
+++ b/impl/src/main/java/com/sun/el/lang/VariableMapperImpl.java
@@ -23,8 +23,8 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.el.ValueExpression;
-import javax.el.VariableMapper;
+import jakarta.el.ValueExpression;
+import jakarta.el.VariableMapper;
 
 public class VariableMapperImpl extends VariableMapper implements Externalizable {
 
diff --git a/impl/src/main/java/com/sun/el/parser/ArithmeticNode.java b/impl/src/main/java/com/sun/el/parser/ArithmeticNode.java
index 36fce35..0d96776 100644
--- a/impl/src/main/java/com/sun/el/parser/ArithmeticNode.java
+++ b/impl/src/main/java/com/sun/el/parser/ArithmeticNode.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstAnd.java b/impl/src/main/java/com/sun/el/parser/AstAnd.java
index 6e30086..2ab076c 100644
--- a/impl/src/main/java/com/sun/el/parser/AstAnd.java
+++ b/impl/src/main/java/com/sun/el/parser/AstAnd.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstAssign.java b/impl/src/main/java/com/sun/el/parser/AstAssign.java
index 6ef715a..fbfcd7e 100644
--- a/impl/src/main/java/com/sun/el/parser/AstAssign.java
+++ b/impl/src/main/java/com/sun/el/parser/AstAssign.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstBracketSuffix.java b/impl/src/main/java/com/sun/el/parser/AstBracketSuffix.java
index 03454ab..4d8ffc6 100644
--- a/impl/src/main/java/com/sun/el/parser/AstBracketSuffix.java
+++ b/impl/src/main/java/com/sun/el/parser/AstBracketSuffix.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstChoice.java b/impl/src/main/java/com/sun/el/parser/AstChoice.java
index 78f3fb4..7a7d870 100644
--- a/impl/src/main/java/com/sun/el/parser/AstChoice.java
+++ b/impl/src/main/java/com/sun/el/parser/AstChoice.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstCompositeExpression.java b/impl/src/main/java/com/sun/el/parser/AstCompositeExpression.java
index b9f4a18..af632d5 100644
--- a/impl/src/main/java/com/sun/el/parser/AstCompositeExpression.java
+++ b/impl/src/main/java/com/sun/el/parser/AstCompositeExpression.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstConcat.java b/impl/src/main/java/com/sun/el/parser/AstConcat.java
index e0957f8..f936de1 100644
--- a/impl/src/main/java/com/sun/el/parser/AstConcat.java
+++ b/impl/src/main/java/com/sun/el/parser/AstConcat.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstDeferredExpression.java b/impl/src/main/java/com/sun/el/parser/AstDeferredExpression.java
index 9992b44..e0feecc 100644
--- a/impl/src/main/java/com/sun/el/parser/AstDeferredExpression.java
+++ b/impl/src/main/java/com/sun/el/parser/AstDeferredExpression.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstDiv.java b/impl/src/main/java/com/sun/el/parser/AstDiv.java
index 2979ac7..2a3df68 100644
--- a/impl/src/main/java/com/sun/el/parser/AstDiv.java
+++ b/impl/src/main/java/com/sun/el/parser/AstDiv.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.ELArithmetic;
 import com.sun.el.lang.EvaluationContext;
diff --git a/impl/src/main/java/com/sun/el/parser/AstDotSuffix.java b/impl/src/main/java/com/sun/el/parser/AstDotSuffix.java
index 17083cc..af129af 100644
--- a/impl/src/main/java/com/sun/el/parser/AstDotSuffix.java
+++ b/impl/src/main/java/com/sun/el/parser/AstDotSuffix.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstDynamicExpression.java b/impl/src/main/java/com/sun/el/parser/AstDynamicExpression.java
index a9d5f8f..52e8580 100644
--- a/impl/src/main/java/com/sun/el/parser/AstDynamicExpression.java
+++ b/impl/src/main/java/com/sun/el/parser/AstDynamicExpression.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstEmpty.java b/impl/src/main/java/com/sun/el/parser/AstEmpty.java
index 847300a..abf13ba 100644
--- a/impl/src/main/java/com/sun/el/parser/AstEmpty.java
+++ b/impl/src/main/java/com/sun/el/parser/AstEmpty.java
@@ -19,7 +19,7 @@
 import java.util.Collection;
 import java.util.Map;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstEqual.java b/impl/src/main/java/com/sun/el/parser/AstEqual.java
index ae26ef8..6fbae03 100644
--- a/impl/src/main/java/com/sun/el/parser/AstEqual.java
+++ b/impl/src/main/java/com/sun/el/parser/AstEqual.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstFalse.java b/impl/src/main/java/com/sun/el/parser/AstFalse.java
index 2c7ac5c..c9c7dbc 100644
--- a/impl/src/main/java/com/sun/el/parser/AstFalse.java
+++ b/impl/src/main/java/com/sun/el/parser/AstFalse.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstFloatingPoint.java b/impl/src/main/java/com/sun/el/parser/AstFloatingPoint.java
index bf3d003..6079e5f 100644
--- a/impl/src/main/java/com/sun/el/parser/AstFloatingPoint.java
+++ b/impl/src/main/java/com/sun/el/parser/AstFloatingPoint.java
@@ -18,7 +18,7 @@
 
 import java.math.BigDecimal;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstFunction.java b/impl/src/main/java/com/sun/el/parser/AstFunction.java
index 15fb1af..3dca551 100644
--- a/impl/src/main/java/com/sun/el/parser/AstFunction.java
+++ b/impl/src/main/java/com/sun/el/parser/AstFunction.java
@@ -19,12 +19,12 @@
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
-import javax.el.ELClass;
-import javax.el.ELException;
-import javax.el.FunctionMapper;
-import javax.el.LambdaExpression;
-import javax.el.ValueExpression;
-import javax.el.VariableMapper;
+import jakarta.el.ELClass;
+import jakarta.el.ELException;
+import jakarta.el.FunctionMapper;
+import jakarta.el.LambdaExpression;
+import jakarta.el.ValueExpression;
+import jakarta.el.VariableMapper;
 
 import com.sun.el.lang.EvaluationContext;
 import com.sun.el.util.MessageFactory;
diff --git a/impl/src/main/java/com/sun/el/parser/AstGreaterThan.java b/impl/src/main/java/com/sun/el/parser/AstGreaterThan.java
index 2de0bd9..e9a6e57 100644
--- a/impl/src/main/java/com/sun/el/parser/AstGreaterThan.java
+++ b/impl/src/main/java/com/sun/el/parser/AstGreaterThan.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstGreaterThanEqual.java b/impl/src/main/java/com/sun/el/parser/AstGreaterThanEqual.java
index 06252c0..a6e093d 100644
--- a/impl/src/main/java/com/sun/el/parser/AstGreaterThanEqual.java
+++ b/impl/src/main/java/com/sun/el/parser/AstGreaterThanEqual.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstIdentifier.java b/impl/src/main/java/com/sun/el/parser/AstIdentifier.java
index a5a149b..f38b869 100644
--- a/impl/src/main/java/com/sun/el/parser/AstIdentifier.java
+++ b/impl/src/main/java/com/sun/el/parser/AstIdentifier.java
@@ -16,16 +16,16 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELClass;
-import javax.el.ELException;
-import javax.el.ELResolver;
-import javax.el.MethodExpression;
-import javax.el.MethodInfo;
-import javax.el.MethodNotFoundException;
-import javax.el.PropertyNotWritableException;
-import javax.el.ValueExpression;
-import javax.el.ValueReference;
-import javax.el.VariableMapper;
+import jakarta.el.ELClass;
+import jakarta.el.ELException;
+import jakarta.el.ELResolver;
+import jakarta.el.MethodExpression;
+import jakarta.el.MethodInfo;
+import jakarta.el.MethodNotFoundException;
+import jakarta.el.PropertyNotWritableException;
+import jakarta.el.ValueExpression;
+import jakarta.el.ValueReference;
+import jakarta.el.VariableMapper;
 
 import com.sun.el.lang.ELSupport;
 import com.sun.el.lang.EvaluationContext;
diff --git a/impl/src/main/java/com/sun/el/parser/AstInteger.java b/impl/src/main/java/com/sun/el/parser/AstInteger.java
index 8c6d7c7..4d62759 100644
--- a/impl/src/main/java/com/sun/el/parser/AstInteger.java
+++ b/impl/src/main/java/com/sun/el/parser/AstInteger.java
@@ -18,7 +18,7 @@
 
 import java.math.BigInteger;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstLambdaExpression.java b/impl/src/main/java/com/sun/el/parser/AstLambdaExpression.java
index 1349899..633098b 100644
--- a/impl/src/main/java/com/sun/el/parser/AstLambdaExpression.java
+++ b/impl/src/main/java/com/sun/el/parser/AstLambdaExpression.java
@@ -18,9 +18,9 @@
 
 import java.util.List;
 
-import javax.el.ELException;
-import javax.el.LambdaExpression;
-import javax.el.ValueExpression;
+import jakarta.el.ELException;
+import jakarta.el.LambdaExpression;
+import jakarta.el.ValueExpression;
 
 import com.sun.el.ValueExpressionImpl;
 import com.sun.el.lang.EvaluationContext;
diff --git a/impl/src/main/java/com/sun/el/parser/AstLessThan.java b/impl/src/main/java/com/sun/el/parser/AstLessThan.java
index c1bd471..fb77653 100644
--- a/impl/src/main/java/com/sun/el/parser/AstLessThan.java
+++ b/impl/src/main/java/com/sun/el/parser/AstLessThan.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstLessThanEqual.java b/impl/src/main/java/com/sun/el/parser/AstLessThanEqual.java
index 8f2c837..775ac5b 100644
--- a/impl/src/main/java/com/sun/el/parser/AstLessThanEqual.java
+++ b/impl/src/main/java/com/sun/el/parser/AstLessThanEqual.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstLiteralExpression.java b/impl/src/main/java/com/sun/el/parser/AstLiteralExpression.java
index 9672246..6445913 100644
--- a/impl/src/main/java/com/sun/el/parser/AstLiteralExpression.java
+++ b/impl/src/main/java/com/sun/el/parser/AstLiteralExpression.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstMapData.java b/impl/src/main/java/com/sun/el/parser/AstMapData.java
index 41435c8..4f5ea67 100644
--- a/impl/src/main/java/com/sun/el/parser/AstMapData.java
+++ b/impl/src/main/java/com/sun/el/parser/AstMapData.java
@@ -19,7 +19,7 @@
 import java.util.HashMap;
 import java.util.HashSet;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstMethodArguments.java b/impl/src/main/java/com/sun/el/parser/AstMethodArguments.java
index 24ef021..bba9544 100644
--- a/impl/src/main/java/com/sun/el/parser/AstMethodArguments.java
+++ b/impl/src/main/java/com/sun/el/parser/AstMethodArguments.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstMinus.java b/impl/src/main/java/com/sun/el/parser/AstMinus.java
index 11fdf84..a25b083 100644
--- a/impl/src/main/java/com/sun/el/parser/AstMinus.java
+++ b/impl/src/main/java/com/sun/el/parser/AstMinus.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.ELArithmetic;
 import com.sun.el.lang.EvaluationContext;
diff --git a/impl/src/main/java/com/sun/el/parser/AstMod.java b/impl/src/main/java/com/sun/el/parser/AstMod.java
index d69b928..c0f76d3 100644
--- a/impl/src/main/java/com/sun/el/parser/AstMod.java
+++ b/impl/src/main/java/com/sun/el/parser/AstMod.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.ELArithmetic;
 import com.sun.el.lang.EvaluationContext;
diff --git a/impl/src/main/java/com/sun/el/parser/AstMult.java b/impl/src/main/java/com/sun/el/parser/AstMult.java
index 8ee4751..4f3b362 100644
--- a/impl/src/main/java/com/sun/el/parser/AstMult.java
+++ b/impl/src/main/java/com/sun/el/parser/AstMult.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.ELArithmetic;
 import com.sun.el.lang.EvaluationContext;
diff --git a/impl/src/main/java/com/sun/el/parser/AstNegative.java b/impl/src/main/java/com/sun/el/parser/AstNegative.java
index e4b4465..1a534e1 100644
--- a/impl/src/main/java/com/sun/el/parser/AstNegative.java
+++ b/impl/src/main/java/com/sun/el/parser/AstNegative.java
@@ -19,7 +19,7 @@
 import java.math.BigDecimal;
 import java.math.BigInteger;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstNot.java b/impl/src/main/java/com/sun/el/parser/AstNot.java
index 5f0886b..b535590 100644
--- a/impl/src/main/java/com/sun/el/parser/AstNot.java
+++ b/impl/src/main/java/com/sun/el/parser/AstNot.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstNotEqual.java b/impl/src/main/java/com/sun/el/parser/AstNotEqual.java
index 359f479..d79a05c 100644
--- a/impl/src/main/java/com/sun/el/parser/AstNotEqual.java
+++ b/impl/src/main/java/com/sun/el/parser/AstNotEqual.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstNull.java b/impl/src/main/java/com/sun/el/parser/AstNull.java
index 548a387..34fdfd8 100644
--- a/impl/src/main/java/com/sun/el/parser/AstNull.java
+++ b/impl/src/main/java/com/sun/el/parser/AstNull.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstOr.java b/impl/src/main/java/com/sun/el/parser/AstOr.java
index 2fc12d4..9565e30 100644
--- a/impl/src/main/java/com/sun/el/parser/AstOr.java
+++ b/impl/src/main/java/com/sun/el/parser/AstOr.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstPlus.java b/impl/src/main/java/com/sun/el/parser/AstPlus.java
index 2592188..e7f815a 100644
--- a/impl/src/main/java/com/sun/el/parser/AstPlus.java
+++ b/impl/src/main/java/com/sun/el/parser/AstPlus.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.ELArithmetic;
 import com.sun.el.lang.EvaluationContext;
diff --git a/impl/src/main/java/com/sun/el/parser/AstSemiColon.java b/impl/src/main/java/com/sun/el/parser/AstSemiColon.java
index 275aaba..abed071 100644
--- a/impl/src/main/java/com/sun/el/parser/AstSemiColon.java
+++ b/impl/src/main/java/com/sun/el/parser/AstSemiColon.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstString.java b/impl/src/main/java/com/sun/el/parser/AstString.java
index 77a7ad1..089c29f 100644
--- a/impl/src/main/java/com/sun/el/parser/AstString.java
+++ b/impl/src/main/java/com/sun/el/parser/AstString.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstTrue.java b/impl/src/main/java/com/sun/el/parser/AstTrue.java
index 607e6bd..f33696d 100644
--- a/impl/src/main/java/com/sun/el/parser/AstTrue.java
+++ b/impl/src/main/java/com/sun/el/parser/AstTrue.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/AstValue.java b/impl/src/main/java/com/sun/el/parser/AstValue.java
index dfe0f82..2b99930 100644
--- a/impl/src/main/java/com/sun/el/parser/AstValue.java
+++ b/impl/src/main/java/com/sun/el/parser/AstValue.java
@@ -18,14 +18,14 @@
 
 import java.lang.reflect.Method;
 
-import javax.el.ELClass;
-import javax.el.ELException;
-import javax.el.ELResolver;
-import javax.el.ImportHandler;
-import javax.el.MethodInfo;
-import javax.el.PropertyNotFoundException;
-import javax.el.PropertyNotWritableException;
-import javax.el.ValueReference;
+import jakarta.el.ELClass;
+import jakarta.el.ELException;
+import jakarta.el.ELResolver;
+import jakarta.el.ImportHandler;
+import jakarta.el.MethodInfo;
+import jakarta.el.PropertyNotFoundException;
+import jakarta.el.PropertyNotWritableException;
+import jakarta.el.ValueReference;
 
 import com.sun.el.lang.ELSupport;
 import com.sun.el.lang.EvaluationContext;
diff --git a/impl/src/main/java/com/sun/el/parser/BooleanNode.java b/impl/src/main/java/com/sun/el/parser/BooleanNode.java
index 5f4dec1..b4beed4 100644
--- a/impl/src/main/java/com/sun/el/parser/BooleanNode.java
+++ b/impl/src/main/java/com/sun/el/parser/BooleanNode.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/ELParser.java b/impl/src/main/java/com/sun/el/parser/ELParser.java
index 889865f..0fd3f4a 100644
--- a/impl/src/main/java/com/sun/el/parser/ELParser.java
+++ b/impl/src/main/java/com/sun/el/parser/ELParser.java
@@ -17,7 +17,7 @@
 /* Generated By:JJTree&JavaCC: Do not edit this line. ELParser.java */
 package com.sun.el.parser;
 import java.io.StringReader;
-import javax.el.ELException;
+import jakarta.el.ELException;
 public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParserConstants {/*@bgen(jjtree)*/
   protected JJTELParserState jjtree = new JJTELParserState();public static Node parse(String ref) throws ELException
     {
diff --git a/impl/src/main/java/com/sun/el/parser/ELParser.jjt b/impl/src/main/java/com/sun/el/parser/ELParser.jjt
index 2821577..9411460 100644
--- a/impl/src/main/java/com/sun/el/parser/ELParser.jjt
+++ b/impl/src/main/java/com/sun/el/parser/ELParser.jjt
@@ -26,7 +26,7 @@
 {
 	STATIC=false;
 	NODE_PREFIX="Ast";
-	VISITOR_EXCEPTION="javax.el.ELException";
+	VISITOR_EXCEPTION="ELException";
 	VISITOR=false;
 	MULTI=true;
 	NODE_DEFAULT_VOID=true;
@@ -39,7 +39,7 @@
 PARSER_BEGIN( ELParser )
 package com.sun.el.parser;
 import java.io.StringReader;
-import javax.el.ELException;
+import ELException;
 public class ELParser
 {
     public static Node parse(String ref) throws ELException
diff --git a/impl/src/main/java/com/sun/el/parser/Node.java b/impl/src/main/java/com/sun/el/parser/Node.java
index be71187..5eed9bc 100644
--- a/impl/src/main/java/com/sun/el/parser/Node.java
+++ b/impl/src/main/java/com/sun/el/parser/Node.java
@@ -16,9 +16,9 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
-import javax.el.MethodInfo;
-import javax.el.ValueReference;
+import jakarta.el.ELException;
+import jakarta.el.MethodInfo;
+import jakarta.el.ValueReference;
 
 import com.sun.el.lang.EvaluationContext;
 
diff --git a/impl/src/main/java/com/sun/el/parser/NodeVisitor.java b/impl/src/main/java/com/sun/el/parser/NodeVisitor.java
index e18922c..52aec12 100644
--- a/impl/src/main/java/com/sun/el/parser/NodeVisitor.java
+++ b/impl/src/main/java/com/sun/el/parser/NodeVisitor.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
+import jakarta.el.ELException;
 
 /**
  * @author Jacob Hookom [jacob@hookom.net]
diff --git a/impl/src/main/java/com/sun/el/parser/SimpleNode.java b/impl/src/main/java/com/sun/el/parser/SimpleNode.java
index 1c004c6..e80c0b3 100644
--- a/impl/src/main/java/com/sun/el/parser/SimpleNode.java
+++ b/impl/src/main/java/com/sun/el/parser/SimpleNode.java
@@ -16,10 +16,10 @@
 
 package com.sun.el.parser;
 
-import javax.el.ELException;
-import javax.el.MethodInfo;
-import javax.el.PropertyNotWritableException;
-import javax.el.ValueReference;
+import jakarta.el.ELException;
+import jakarta.el.MethodInfo;
+import jakarta.el.PropertyNotWritableException;
+import jakarta.el.ValueReference;
 
 import com.sun.el.lang.ELSupport;
 import com.sun.el.lang.EvaluationContext;
diff --git a/impl/src/main/java/com/sun/el/stream/Optional.java b/impl/src/main/java/com/sun/el/stream/Optional.java
index 2ea52b6..6f529d4 100644
--- a/impl/src/main/java/com/sun/el/stream/Optional.java
+++ b/impl/src/main/java/com/sun/el/stream/Optional.java
@@ -16,7 +16,7 @@
 
 package com.sun.el.stream;
 
-import javax.el.LambdaExpression;
+import jakarta.el.LambdaExpression;
 
 public class Optional {
 
diff --git a/impl/src/main/java/com/sun/el/stream/Stream.java b/impl/src/main/java/com/sun/el/stream/Stream.java
index 9091271..5a14214 100644
--- a/impl/src/main/java/com/sun/el/stream/Stream.java
+++ b/impl/src/main/java/com/sun/el/stream/Stream.java
@@ -23,8 +23,8 @@
 import java.util.PriorityQueue;
 import java.util.Set;
 
-import javax.el.ELException;
-import javax.el.LambdaExpression;
+import jakarta.el.ELException;
+import jakarta.el.LambdaExpression;
 
 import com.sun.el.lang.ELArithmetic;
 import com.sun.el.lang.ELSupport;
diff --git a/impl/src/main/java/com/sun/el/stream/StreamELResolver.java b/impl/src/main/java/com/sun/el/stream/StreamELResolver.java
index 0963a55..1dd6a8c 100644
--- a/impl/src/main/java/com/sun/el/stream/StreamELResolver.java
+++ b/impl/src/main/java/com/sun/el/stream/StreamELResolver.java
@@ -21,8 +21,8 @@
 import java.util.Collection;
 import java.util.Iterator;
 
-import javax.el.ELContext;
-import javax.el.ELResolver;
+import jakarta.el.ELContext;
+import jakarta.el.ELResolver;
 
 /*
  * This ELResolver intercepts method calls to a Collections, to provide
diff --git a/impl/src/main/java/com/sun/el/util/ReflectionUtil.java b/impl/src/main/java/com/sun/el/util/ReflectionUtil.java
index 3e4e48e..8458a4e 100644
--- a/impl/src/main/java/com/sun/el/util/ReflectionUtil.java
+++ b/impl/src/main/java/com/sun/el/util/ReflectionUtil.java
@@ -29,10 +29,10 @@
 import java.util.Iterator;
 import java.util.List;
 
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.MethodNotFoundException;
-import javax.el.PropertyNotFoundException;
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.MethodNotFoundException;
+import jakarta.el.PropertyNotFoundException;
 
 import com.sun.el.lang.ELSupport;
 
@@ -144,7 +144,7 @@
     }
 
     /*
-     * This method duplicates code in javax.el.ELUtil. When making changes keep the code in sync.
+     * This method duplicates code in jakarta.el.ELUtil. When making changes keep the code in sync.
      */
     public static Object invokeMethod(ELContext context, Method m, Object base, Object[] params) {
 
@@ -161,7 +161,7 @@
     }
 
     /*
-     * This method duplicates code in javax.el.ELUtil. When making changes keep the code in sync.
+     * This method duplicates code in jakarta.el.ELUtil. When making changes keep the code in sync.
      */
     public static Method findMethod(Class<?> clazz, String methodName, Class<?>[] paramTypes, Object[] paramValues) {
 
@@ -186,7 +186,7 @@
     }
 
     /*
-     * This method duplicates code in javax.el.ELUtil. When making changes keep the code in sync.
+     * This method duplicates code in jakarta.el.ELUtil. When making changes keep the code in sync.
      */
     private static Wrapper findWrapper(Class<?> clazz, List<Wrapper> wrappers, String name, Class<?>[] paramTypes, Object[] paramValues) {
 
@@ -289,7 +289,7 @@
     }
 
     /*
-     * This method duplicates code in javax.el.ELUtil. When making changes keep the code in sync.
+     * This method duplicates code in jakarta.el.ELUtil. When making changes keep the code in sync.
      */
     private static Wrapper findMostSpecificWrapper(List<Wrapper> candidates, Class<?>[] matchingTypes, boolean elSpecific, String errorMsg) {
         List<Wrapper> ambiguouses = new ArrayList<Wrapper>();
@@ -319,7 +319,7 @@
     }
 
     /*
-     * This method duplicates code in javax.el.ELUtil. When making changes keep the code in sync.
+     * This method duplicates code in jakarta.el.ELUtil. When making changes keep the code in sync.
      */
     private static int isMoreSpecific(Wrapper wrapper1, Wrapper wrapper2, Class<?>[] matchingTypes, boolean elSpecific) {
         Class<?>[] paramTypes1 = wrapper1.getParameterTypes();
@@ -370,7 +370,7 @@
     }
 
     /*
-     * This method duplicates code in javax.el.ELUtil. When making changes keep the code in sync.
+     * This method duplicates code in jakarta.el.ELUtil. When making changes keep the code in sync.
      */
     private static int isMoreSpecific(Class<?> type1, Class<?> type2, Class<?> matchingType, boolean elSpecific) {
         type1 = getBoxingTypeIfPrimitive(type1);
@@ -407,7 +407,7 @@
     }
 
     /*
-     * This method duplicates code in javax.el.ELUtil. When making changes keep the code in sync.
+     * This method duplicates code in jakarta.el.ELUtil. When making changes keep the code in sync.
      */
     private static Class<?> getBoxingTypeIfPrimitive(Class<?> clazz) {
         if (clazz.isPrimitive()) {
@@ -435,7 +435,7 @@
     }
 
     /*
-     * This method duplicates code in javax.el.ELUtil. When making changes keep the code in sync.
+     * This method duplicates code in jakarta.el.ELUtil. When making changes keep the code in sync.
      */
     private static Class<?>[] getComparingParamTypesForVarArgsMethod(Class<?>[] paramTypes, int length) {
         Class<?>[] result = new Class<?>[length];
@@ -449,7 +449,7 @@
     }
 
     /*
-     * This method duplicates code in javax.el.ELUtil. When making changes keep the code in sync.
+     * This method duplicates code in jakarta.el.ELUtil. When making changes keep the code in sync.
      */
     private static final String paramString(Class<?>[] types) {
         if (types != null) {
@@ -470,7 +470,7 @@
     }
 
     /*
-     * This method duplicates code in javax.el.ELUtil. When making changes keep the code in sync.
+     * This method duplicates code in jakarta.el.ELUtil. When making changes keep the code in sync.
      */
     static boolean isAssignableFrom(Class<?> src, Class<?> target) {
         // src will always be an object
@@ -486,7 +486,7 @@
     }
 
     /*
-     * This method duplicates code in javax.el.ELUtil. When making changes keep the code in sync.
+     * This method duplicates code in jakarta.el.ELUtil. When making changes keep the code in sync.
      */
     private static boolean isCoercibleFrom(Object src, Class<?> target) {
         // TODO: This isn't pretty but it works. Significant refactoring would
@@ -500,7 +500,7 @@
     }
 
     /*
-     * This method duplicates code in javax.el.ELUtil. When making changes keep the code in sync.
+     * This method duplicates code in jakarta.el.ELUtil. When making changes keep the code in sync.
      */
     private static Class<?>[] getTypesFromValues(Object[] values) {
         if (values == null) {
@@ -519,7 +519,7 @@
     }
 
     /*
-     * This method duplicates code in javax.el.ELUtil. When making changes keep the code in sync.
+     * This method duplicates code in jakarta.el.ELUtil. When making changes keep the code in sync.
      *
      * Get a public method form a public class or interface of a given method. Note that if a PropertyDescriptor is obtained
      * for a non-public class that implements a public interface, the read/write methods will be for the class, and
@@ -559,7 +559,7 @@
     }
 
     /*
-     * This method duplicates code in javax.el.ELUtil. When making changes keep the code in sync.
+     * This method duplicates code in jakarta.el.ELUtil. When making changes keep the code in sync.
      */
     static Constructor<?> getConstructor(Class<?> type, Constructor<?> c) {
         if (c == null || Modifier.isPublic(type.getModifiers())) {
@@ -582,7 +582,7 @@
     }
 
     /*
-     * This method duplicates code in javax.el.ELUtil. When making changes keep the code in sync.
+     * This method duplicates code in jakarta.el.ELUtil. When making changes keep the code in sync.
      */
     static Object[] buildParameters(ELContext context, Class<?>[] parameterTypes, boolean isVarArgs, Object[] params) {
         Object[] parameters = null;
@@ -616,7 +616,7 @@
     }
 
     /*
-     * This method duplicates code in javax.el.ELUtil. When making changes keep the code in sync.
+     * This method duplicates code in jakarta.el.ELUtil. When making changes keep the code in sync.
      */
     private abstract static class Wrapper {
 
@@ -648,7 +648,7 @@
     }
 
     /*
-     * This method duplicates code in javax.el.ELUtil. When making changes keep the code in sync.
+     * This method duplicates code in jakarta.el.ELUtil. When making changes keep the code in sync.
      */
     private static class MethodWrapper extends Wrapper {
         private final Method m;
@@ -679,7 +679,7 @@
     }
 
     /*
-     * This method duplicates code in javax.el.ELUtil. When making changes keep the code in sync.
+     * This method duplicates code in jakarta.el.ELUtil. When making changes keep the code in sync.
      */
     private static class ConstructorWrapper extends Wrapper {
         private final Constructor<?> c;
diff --git a/parent-pom/pom.xml b/parent-pom/pom.xml
index 26c74f5..f8cecdf 100644
--- a/parent-pom/pom.xml
+++ b/parent-pom/pom.xml
@@ -21,7 +21,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.glassfish.web</groupId>
     <artifactId>el</artifactId>
-    <version>2.2.1-SNAPSHOT</version>
+    <version>4.0.0-SNAPSHOT</version>
     <packaging>pom</packaging>
     <name>Expression Language related modules</name>
 
diff --git a/pom.xml b/pom.xml
index afd2dca..0203062 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,9 +28,9 @@
 
     <groupId>org.glassfish</groupId>
     <artifactId>jakarta.el</artifactId>
-    <version>3.0.4</version>
+    <version>4.0.0-SNAPSHOT</version>
     
-    <name>Jakarta Expression Language 3.0</name>
+    <name>Jakarta Expression Language 4.0</name>
     <description>
         Jakarta Expression Language provides a specification document, API, reference implementation and TCK 
         that describes an expression language for Java applications.
@@ -39,11 +39,11 @@
 
     <properties>
         <!-- the bundle build number must be the same as the maven number -->
-        <bundle.version>3.0.3</bundle.version>
+        <bundle.version>4.0.0-SNAPSHOT</bundle.version>
         <!-- The most current api version -->
-        <spec.version>3.0</spec.version>
-        <extensionName>javax.el</extensionName>
-        <bundle.symbolicName>com.sun.el.javax.el</bundle.symbolicName>
+        <spec.version>4.0</spec.version>
+        <extensionName>jakarta.el</extensionName>
+        <bundle.symbolicName>jakarta.el</bundle.symbolicName>
         <vendorName>Oracle Corporation</vendorName>
         <findbugs.version>2.5.2</findbugs.version>
         <findbugs.exclude>${project.basedir}/exclude.xml</findbugs.exclude>
diff --git a/spec/pom.xml b/spec/pom.xml
index 8eacf9b..a1fe38d 100644
--- a/spec/pom.xml
+++ b/spec/pom.xml
@@ -27,7 +27,7 @@
     
     <groupId>org.eclipse.ee4j.expression-language</groupId>
     <artifactId>expression-language-spec</artifactId>
-    <version>3.0</version>
+    <version>4.0.0-SNAPSHOT</version>
     <packaging>pom</packaging>
     <name>Jakarta Expression Language Specification</name>
 
diff --git a/src/test/java/org/glassfish/el/test/ConvertTest.java b/src/test/java/org/glassfish/el/test/ConvertTest.java
index 814e924..c9fbb76 100644
--- a/src/test/java/org/glassfish/el/test/ConvertTest.java
+++ b/src/test/java/org/glassfish/el/test/ConvertTest.java
@@ -16,6 +16,9 @@
 
 package org.glassfish.el.test;
 
+import jakarta.el.ELContext;
+import jakarta.el.ELProcessor;
+import jakarta.el.TypeConverter;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -23,7 +26,7 @@
 import org.junit.Test;
 import static org.junit.Assert.*;
 
-import javax.el.*;
+import jakarta.el.*;
 
 /**
  *
diff --git a/src/test/java/org/glassfish/el/test/ELProcessorTest.java b/src/test/java/org/glassfish/el/test/ELProcessorTest.java
index be19e8a..d329517 100644
--- a/src/test/java/org/glassfish/el/test/ELProcessorTest.java
+++ b/src/test/java/org/glassfish/el/test/ELProcessorTest.java
@@ -22,11 +22,11 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
-import javax.el.ELProcessor;
-import javax.el.ELManager;
-import javax.el.ExpressionFactory;
-import javax.el.MethodExpression;
-import javax.el.ELContext;
+import jakarta.el.ELProcessor;
+import jakarta.el.ELManager;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.MethodExpression;
+import jakarta.el.ELContext;
 import java.lang.reflect.Method;
 
 public class ELProcessorTest {
diff --git a/src/test/java/org/glassfish/el/test/ElasticityTest.java.sav b/src/test/java/org/glassfish/el/test/ElasticityTest.java.sav
index 3da7dce..63aa714 100644
--- a/src/test/java/org/glassfish/el/test/ElasticityTest.java.sav
+++ b/src/test/java/org/glassfish/el/test/ElasticityTest.java.sav
@@ -17,7 +17,7 @@
 package org.glassfish.el.test;
 
 import java.util.*;
-import javax.el.*;
+import jakarta.el.*;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
diff --git a/src/test/java/org/glassfish/el/test/EvalListenerTest.java b/src/test/java/org/glassfish/el/test/EvalListenerTest.java
index 410bde2..ce50674 100644
--- a/src/test/java/org/glassfish/el/test/EvalListenerTest.java
+++ b/src/test/java/org/glassfish/el/test/EvalListenerTest.java
@@ -17,10 +17,10 @@
 package org.glassfish.el.test;
 
 import java.util.ArrayList;
-import javax.el.ELManager;
-import javax.el.ELContext;
-import javax.el.ELProcessor;
-import javax.el.EvaluationListener;
+import jakarta.el.ELManager;
+import jakarta.el.ELContext;
+import jakarta.el.ELProcessor;
+import jakarta.el.EvaluationListener;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
diff --git a/src/test/java/org/glassfish/el/test/LambdaTest.java b/src/test/java/org/glassfish/el/test/LambdaTest.java
index 924c37e..32ee26d 100644
--- a/src/test/java/org/glassfish/el/test/LambdaTest.java
+++ b/src/test/java/org/glassfish/el/test/LambdaTest.java
@@ -22,7 +22,7 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
-import javax.el.ELProcessor;
+import jakarta.el.ELProcessor;
 
 public class LambdaTest {
     
diff --git a/src/test/java/org/glassfish/el/test/OperatorTest.java b/src/test/java/org/glassfish/el/test/OperatorTest.java
index 020c15a..774a6f1 100644
--- a/src/test/java/org/glassfish/el/test/OperatorTest.java
+++ b/src/test/java/org/glassfish/el/test/OperatorTest.java
@@ -21,11 +21,9 @@
 import org.junit.BeforeClass;
 import org.junit.Test;
 import static org.junit.Assert.*;
-import javax.el.ELProcessor;
-import javax.el.ELManager;
-import javax.el.ExpressionFactory;
-import javax.el.ValueExpression;
-import javax.el.MethodExpression;
+import jakarta.el.ELProcessor;
+import jakarta.el.ELManager;
+import jakarta.el.ValueExpression;
 
 /**
  *
diff --git a/src/test/java/org/glassfish/el/test/OverloadedMethodTest.java b/src/test/java/org/glassfish/el/test/OverloadedMethodTest.java
index c0a3aa4..bf1e883 100644
--- a/src/test/java/org/glassfish/el/test/OverloadedMethodTest.java
+++ b/src/test/java/org/glassfish/el/test/OverloadedMethodTest.java
@@ -16,13 +16,19 @@
 
 package org.glassfish.el.test;
 
+import jakarta.el.ELContext;
+import jakarta.el.ELException;
+import jakarta.el.ELProcessor;
+import jakarta.el.ExpressionFactory;
+import jakarta.el.MethodExpression;
+import jakarta.el.MethodNotFoundException;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
 import static org.junit.Assert.*;
 
-import javax.el.*;
+import jakarta.el.*;
 
 /**
  *
diff --git a/src/test/java/org/glassfish/el/test/StaticRefTest.java b/src/test/java/org/glassfish/el/test/StaticRefTest.java
index 4c8df7b..ca092c8 100644
--- a/src/test/java/org/glassfish/el/test/StaticRefTest.java
+++ b/src/test/java/org/glassfish/el/test/StaticRefTest.java
@@ -16,6 +16,7 @@
 
 package org.glassfish.el.test;
 
+import jakarta.el.ELProcessor;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -23,7 +24,7 @@
 import org.junit.Test;
 import static org.junit.Assert.*;
 
-import javax.el.*;
+import jakarta.el.*;
 
 /**
  *
diff --git a/src/test/java/org/glassfish/el/test/StreamTest.java b/src/test/java/org/glassfish/el/test/StreamTest.java
index c37c71e..d5b00e3 100644
--- a/src/test/java/org/glassfish/el/test/StreamTest.java
+++ b/src/test/java/org/glassfish/el/test/StreamTest.java
@@ -18,7 +18,6 @@
 
 import java.lang.reflect.Array;
 import java.util.List;
-import java.util.Map;
 import java.util.Iterator;
 
 import org.junit.Test;
@@ -27,8 +26,8 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
-import javax.el.ELProcessor;
-import javax.el.ELException;
+import jakarta.el.ELProcessor;
+import jakarta.el.ELException;
 
 public class StreamTest {