Actually updated dependencies to Servlet 3.0 and JSP 2.2. (Also, some minor code cleanup.)
diff --git a/build.gradle.kts b/build.gradle.kts
index b023bee..7d39c9b 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -498,12 +498,6 @@
     }
 }
 
-// Choose the Jetty version very carefully, as it should implement the same Servlet API, JSP API, and EL API
-// what we declare below, because the same classes will come from Jetty as well. For example, Jetty depends
-// on org.mortbay.jasper:apache-el, which contains the javax.el classes, along with non-javax.el classes, so you
-// can't even exclude it. Similarly, org.eclipse.jetty:apache-jsp contains the JSP API javax.servlet.jsp classes,
-// yet again along with other classes. Anyway, this mess is temporary, as we will migrate to Jakarta, and only
-// support that.
 val jettyVersion = "9.4.53.v20231009"
 val slf4jVersion = "1.6.1"
 val springVersion = "2.5.6.SEC03"
@@ -516,8 +510,10 @@
 
     "javaxServletTestImplementation" {
         extendsFrom(compileClasspath.get())
+        // Exclude classes that are also coming from Jetty, which we use for testing:
         exclude(group = "javax.servlet.jsp")
         exclude(group = "javax.servlet", module = "servlet-api")
+        exclude(group = "javax.el", module = "el-api")
     }
 }
 
@@ -543,14 +539,15 @@
 
     testImplementation(xalan)
 
-    "javaxServletCompileOnly"("javax.servlet.jsp:jsp-api:2.1")
-    "javaxServletCompileOnly"("javax.servlet:servlet-api:2.5")
+    "javaxServletCompileOnly"("javax.servlet:javax.servlet-api:3.0.1")
+    "javaxServletCompileOnly"("javax.servlet.jsp:jsp-api:2.2")
+    "javaxServletCompileOnly"("javax.el:el-api:2.2")
 
     "javaxServletTestImplementation"("org.eclipse.jetty:jetty-server:${jettyVersion}")
     "javaxServletTestImplementation"("org.eclipse.jetty:jetty-webapp:${jettyVersion}")
     "javaxServletTestImplementation"("org.eclipse.jetty:jetty-util:${jettyVersion}")
     "javaxServletTestImplementation"("org.eclipse.jetty:apache-jsp:${jettyVersion}")
-    // Jetty also contains the servlet-api and jsp-api classes
+    // Jetty also contains the servlet-api and jsp-api and el-api classes
 
     // JSP JSTL (not included in Jetty):
     "javaxServletTestImplementation"("org.apache.taglibs:taglibs-standard-impl:${tagLibsVersion}")
diff --git a/freemarker-javax-servlet/src/main/java/freemarker/ext/jsp/FreeMarkerJspFactory.java b/freemarker-javax-servlet/src/main/java/freemarker/ext/jsp/FreeMarkerJspFactory.java
index 0df7dfd..9633e14 100644
--- a/freemarker-javax-servlet/src/main/java/freemarker/ext/jsp/FreeMarkerJspFactory.java
+++ b/freemarker-javax-servlet/src/main/java/freemarker/ext/jsp/FreeMarkerJspFactory.java
@@ -30,9 +30,11 @@
 
 class FreeMarkerJspFactory extends JspFactory {
     private static final String SPECIFICATION_VERSION = "2.2";
+
+    // This still ends with "21", just in case someone used that key for some workaround.
     private static final String JSPCTX_KEY = "freemarker.ext.jsp.FreeMarkerJspFactory21#jspAppContext";
 
-    protected String getSpecificationVersion() {
+    String getSpecificationVersion() {
         return SPECIFICATION_VERSION;
     }
     
diff --git a/freemarker-javax-servlet/src/main/java/freemarker/ext/jsp/FreeMarkerPageContext.java b/freemarker-javax-servlet/src/main/java/freemarker/ext/jsp/FreeMarkerPageContext.java
index b97d2c7..6110b42 100644
--- a/freemarker-javax-servlet/src/main/java/freemarker/ext/jsp/FreeMarkerPageContext.java
+++ b/freemarker-javax-servlet/src/main/java/freemarker/ext/jsp/FreeMarkerPageContext.java
@@ -86,8 +86,6 @@
                 JspFactory.getDefaultFactory().getClass().getName());
     }
 
-    private static final Class OBJECT_CLASS = Object.class;
-
     private final Environment environment;
     private final int incompatibleImprovements;
     private List tags = new ArrayList();
@@ -219,7 +217,7 @@
                         return unwrapper.unwrap(tm);
                     } else { // Legacy behavior branch
                         if (tm instanceof AdapterTemplateModel) {
-                            return ((AdapterTemplateModel) tm).getAdaptedObject(OBJECT_CLASS);
+                            return ((AdapterTemplateModel) tm).getAdaptedObject(Object.class);
                         }
                         if (tm instanceof WrapperTemplateModel) {
                             return ((WrapperTemplateModel) tm).getWrappedObject();