OPENJPA-2908 fix delayed collection proxies

some new methods in base interfaces did not get handled correctly
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java
index 8c8f89c..6108d7d 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java
@@ -350,9 +350,11 @@
      * user-defined.
      */
     protected static boolean isUserDefined(Class<?> cls) {
-        return cls != null && !cls.getName().startsWith("java.")
-            && !cls.getName().startsWith ("javax.");
-	}
+        return cls != null
+                && !cls.getName().startsWith("java.")
+                && !cls.getName().startsWith ("javax.")
+                && !cls.getName().startsWith ("jakarta.");
+    }
 
     /**
      * Affirms if the given method matches the following signature
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedArrayListProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedArrayListProxy.java
index bef35b6..9a8bcc4 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedArrayListProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedArrayListProxy.java
@@ -25,6 +25,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
+import java.util.function.IntFunction;
 
 import org.apache.openjpa.kernel.AutoDetach;
 import org.apache.openjpa.kernel.Broker;
@@ -407,6 +408,14 @@
     }
 
     @Override
+    public Object[] toArray(IntFunction generator) {
+        if (!_directAccess && isDelayLoad()) {
+            load();
+        }
+        return super.toArray(generator);
+    }
+
+    @Override
     public boolean equals(Object paramObject) {
         if (!_directAccess && isDelayLoad()) {
             load();
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedHashSetProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedHashSetProxy.java
index d15fedf..cb142f5 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedHashSetProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedHashSetProxy.java
@@ -23,6 +23,7 @@
 import java.util.Comparator;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.function.IntFunction;
 
 import org.apache.openjpa.kernel.AutoDetach;
 import org.apache.openjpa.kernel.Broker;
@@ -277,6 +278,14 @@
     }
 
     @Override
+    public Object[] toArray(IntFunction generator) {
+        if (!_directAccess && isDelayLoad()) {
+            load();
+        }
+        return super.toArray(generator);
+    }
+
+    @Override
     public boolean containsAll(Collection c) {
         if (!_directAccess && isDelayLoad()) {
             load();
@@ -284,6 +293,7 @@
         return super.containsAll(c);
     }
 
+
     @Override
     public String toString() {
         if (!_directAccess && isDelayLoad()) {
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedHashSetProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedHashSetProxy.java
index 15e6b1d..a156187 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedHashSetProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedHashSetProxy.java
@@ -23,6 +23,7 @@
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
+import java.util.function.IntFunction;
 
 import org.apache.openjpa.kernel.AutoDetach;
 import org.apache.openjpa.kernel.Broker;
@@ -276,6 +277,14 @@
     }
 
     @Override
+    public Object[] toArray(IntFunction generator) {
+        if (!_directAccess && isDelayLoad()) {
+            load();
+        }
+        return super.toArray(generator);
+    }
+
+    @Override
     public boolean containsAll(Collection c) {
         if (!_directAccess && isDelayLoad()) {
             load();
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedListProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedListProxy.java
index 8df82db..77562c6 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedListProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedListProxy.java
@@ -25,6 +25,7 @@
 import java.util.LinkedList;
 import java.util.List;
 import java.util.ListIterator;
+import java.util.function.IntFunction;
 
 import org.apache.openjpa.kernel.AutoDetach;
 import org.apache.openjpa.kernel.Broker;
@@ -569,6 +570,14 @@
     }
 
     @Override
+    public Object[] toArray(IntFunction generator) {
+        if (!_directAccess && isDelayLoad()) {
+            load();
+        }
+        return super.toArray(generator);
+    }
+
+    @Override
     public boolean contains(Object object) {
         if (!_directAccess && isDelayLoad()) {
             load();
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedPriorityQueueProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedPriorityQueueProxy.java
index 10f07da..54283b9 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedPriorityQueueProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedPriorityQueueProxy.java
@@ -24,6 +24,7 @@
 import java.util.Iterator;
 import java.util.PriorityQueue;
 import java.util.SortedSet;
+import java.util.function.IntFunction;
 
 import org.apache.openjpa.kernel.AutoDetach;
 import org.apache.openjpa.kernel.Broker;
@@ -331,6 +332,14 @@
     }
 
     @Override
+    public Object[] toArray(IntFunction generator) {
+        if (!_directAccess && isDelayLoad()) {
+            load();
+        }
+        return super.toArray(generator);
+    }
+
+    @Override
     public boolean containsAll(Collection c) {
         if (!_directAccess && isDelayLoad()) {
             load();
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedTreeSetProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedTreeSetProxy.java
index 281bf9a..0bdbb4b 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedTreeSetProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedTreeSetProxy.java
@@ -25,6 +25,7 @@
 import java.util.NavigableSet;
 import java.util.SortedSet;
 import java.util.TreeSet;
+import java.util.function.IntFunction;
 
 import org.apache.openjpa.kernel.AutoDetach;
 import org.apache.openjpa.kernel.Broker;
@@ -316,6 +317,14 @@
     }
 
     @Override
+    public Object[] toArray(IntFunction generator) {
+        if (!_directAccess && isDelayLoad()) {
+            load();
+        }
+        return super.toArray(generator);
+    }
+
+    @Override
     public Comparator comparator() {
         if (!_directAccess && isDelayLoad()) {
             load();
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedVectorProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedVectorProxy.java
index ee2ea87..d714950 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedVectorProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedVectorProxy.java
@@ -26,6 +26,7 @@
 import java.util.List;
 import java.util.ListIterator;
 import java.util.Vector;
+import java.util.function.IntFunction;
 
 import org.apache.openjpa.kernel.AutoDetach;
 import org.apache.openjpa.kernel.Broker;
@@ -526,6 +527,14 @@
     }
 
     @Override
+    public Object[] toArray(IntFunction generator) {
+        if (!_directAccess && isDelayLoad()) {
+            load();
+        }
+        return super.toArray(generator);
+    }
+
+    @Override
     public synchronized boolean equals(Object paramObject) {
         if (!_directAccess && isDelayLoad()) {
             load();
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java
index b0acd13..8c97b39 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java
@@ -769,7 +769,7 @@
     /**
      * Adds a prefix <code>"openjpa."</code> to the given key, if necessary. A key is
      * considered without prefix if it starts neither of <code>"openjpa."</code>,
-     * <code>"java."</code> and <code>"javax."</code>.
+     * <code>"java."</code>, <code>"javax."</code> and {@code "jakarta."}.
      */
     String fixPrefix(String key) {
         return (key == null || hasKnownPrefix(key)) ? key : "openjpa."+key;
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassMetaDataIterator.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassMetaDataIterator.java
index 246ea3b..1b104dc 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassMetaDataIterator.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassMetaDataIterator.java
@@ -66,6 +66,7 @@
             ClassLoader loader, boolean topDown) {
         // skip classes that can't have metadata
         if (cls != null && (cls.isPrimitive()
+            || cls.getName().startsWith("jakarta.")
             || cls.getName().startsWith("java.")
             || cls.getName().startsWith("javax."))) {
             _loader = null;
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/TemporaryClassLoader.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/TemporaryClassLoader.java
index f56f2fc..1c38817 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/TemporaryClassLoader.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/TemporaryClassLoader.java
@@ -55,7 +55,8 @@
         // "sun." is required for JDK 1.4, which has an access check for
         // sun.reflect.GeneratedSerializationConstructorAccessor1
         if (name.startsWith("java.") || name.startsWith("javax.")
-            || name.startsWith("sun.") || name.startsWith("jdk.")) {
+            || name.startsWith("sun.") || name.startsWith("jdk.")
+            || name.startsWith("jakarta.") ) {
             return Class.forName(name, resolve, getClass().getClassLoader());
         }