Upgrade ecj version to 3.33.0
Bump source and target version to 11 for Java UDFs
ICompilationUnit has new default methods

patch by Ekaterina Dimitrova; reviewed by Andres de la Pena and Berenguer Blasi for CASSANRA-18190
diff --git a/.build/cassandra-deps-template.xml b/.build/cassandra-deps-template.xml
index 4041a54..4b69504 100644
--- a/.build/cassandra-deps-template.xml
+++ b/.build/cassandra-deps-template.xml
@@ -244,7 +244,7 @@
       <artifactId>sigar</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.eclipse.jdt.core.compiler</groupId>
+      <groupId>org.eclipse.jdt</groupId>
       <artifactId>ecj</artifactId>
     </dependency>
     <dependency>
diff --git a/.build/parent-pom-template.xml b/.build/parent-pom-template.xml
index 53120c2..af4a32d 100644
--- a/.build/parent-pom-template.xml
+++ b/.build/parent-pom-template.xml
@@ -829,7 +829,7 @@
         </exclusions>
       </dependency>
       <dependency>
-        <groupId>org.eclipse.jdt.core.compiler</groupId>
+        <groupId>org.eclipse.jdt</groupId>
         <artifactId>ecj</artifactId>
         <version>${ecj.version}</version>
       </dependency>
diff --git a/CHANGES.txt b/CHANGES.txt
index 2fc9df8..8f45c74 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 5.0
+ * Upgrade ECJ to version 3.33.0 (CASSANDRA-18190)
  * Fix ClassCastException  from jdk GaloisCounterMode when using JDK17 provider (CASSANDRA-18180)
  * Drop JDK8, add JDK17 (CASSANDRA-18255)
  * Remove WaitingOnFreeMemtableSpace and DroppedMutations metrics (CASSANDRA-18298)
diff --git a/build.xml b/build.xml
index eb22185..ef5910f 100644
--- a/build.xml
+++ b/build.xml
@@ -143,7 +143,7 @@
 
     <property name="jflex.version" value="1.8.2"/>
     <property name="jamm.version" value="0.4.0"/>
-    <property name="ecj.version" value="4.6.1"/>
+    <property name="ecj.version" value="3.33.0"/>
     <!-- When updating ASM, please, do consider whether you might need to update also FBUtilities#ASM_BYTECODE_VERSION
       and the simulator InterceptClasses#BYTECODE_VERSION, in particular if we are looking to provide Cassandra support
       for newer JDKs (CASSANDRA-17873). -->
diff --git a/src/java/org/apache/cassandra/cql3/functions/JavaBasedUDFunction.java b/src/java/org/apache/cassandra/cql3/functions/JavaBasedUDFunction.java
index 132721e..c84ab56 100644
--- a/src/java/org/apache/cassandra/cql3/functions/JavaBasedUDFunction.java
+++ b/src/java/org/apache/cassandra/cql3/functions/JavaBasedUDFunction.java
@@ -59,6 +59,8 @@
 import org.eclipse.jdt.internal.compiler.env.INameEnvironment;
 import org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
 import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+import org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
+import org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
 import org.eclipse.jdt.internal.compiler.problem.DefaultProblemFactory;
 
 public final class JavaBasedUDFunction extends UDFunction
@@ -138,9 +140,9 @@
         settings.put(CompilerOptions.OPTION_ReportDeprecation,
                      CompilerOptions.IGNORE);
         settings.put(CompilerOptions.OPTION_Source,
-                     CompilerOptions.VERSION_1_8);
+                     CompilerOptions.VERSION_11);
         settings.put(CompilerOptions.OPTION_TargetPlatform,
-                     CompilerOptions.VERSION_1_8);
+                     CompilerOptions.VERSION_11);
 
         compilerOptions = new CompilerOptions(settings);
         compilerOptions.parseLiteralExpressionsAsConstants = true;
@@ -538,6 +540,30 @@
             return false;
         }
 
+        @Override
+        public ModuleBinding module(LookupEnvironment environment)
+        {
+            return environment.getModule(this.getModuleName());
+        }
+
+        @Override
+        public char[] getModuleName()
+        {
+            return null;
+        }
+
+        @Override
+        public String getDestinationPath()
+        {
+            return null;
+        }
+
+        @Override
+        public String getExternalAnnotationPath(String qualifiedTypeName)
+        {
+            return null;
+        }
+
         // ICompilerRequestor
 
         @Override