Merge branch '4.0.0-M3'  - part 1
diff --git a/Jenkinsfile b/Jenkinsfile
index f03d528..c733888 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -19,13 +19,13 @@
   agent any
   options {
     // keep at most 50 builds
-    buildDiscarder(logRotator(numToKeepStr: '50'))
+    buildDiscarder(logRotator(numToKeepStr: '50', artifactNumToKeepStr: '2'))
     // abort pipeline if previous stage is unstable
     skipStagesAfterUnstable()
     // show timestamps in logs
     timestamps()
     // global timeout
-    timeout(time: 20, unit: 'MINUTES')
+    timeout(time: 120, unit: 'MINUTES')
   }
   stages {
     stage('build') {
diff --git a/LICENSE.md b/LICENSE.md
old mode 100755
new mode 100644
diff --git a/README.md b/README.md
old mode 100755
new mode 100644
diff --git a/bom/pom.xml b/bom/pom.xml
index 7506ba2..9a106a9 100644
--- a/bom/pom.xml
+++ b/bom/pom.xml
@@ -31,7 +31,7 @@
 
     <groupId>org.glassfish.hk2</groupId>
     <artifactId>hk2-bom</artifactId>
-    <version>4.0.0-SNAPSHOT</version>
+    <version>3.1.2-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>HK2 Bom Pom</name>
@@ -42,7 +42,7 @@
     </scm>
 
     <properties>
-        <asm.version>9.7</asm.version>
+        <asm.version>9.9.1</asm.version>
         <jakarta-inject.version>2.0.1</jakarta-inject.version>
         <jakarta-annotation.version>2.1.1</jakarta-annotation.version>
         <project.build.outputTimestamp>2023-04-09T08:38:05Z</project.build.outputTimestamp>
@@ -124,7 +124,7 @@
                 <groupId>org.glassfish.hk2</groupId>
                 <artifactId>osgi-resource-locator</artifactId>
                 <!-- Unfortunately we use the same coordinates as old Oracle, but versioning started from 1.0.0 -->
-                <version>1.0.3</version>
+                <version>1.0.4</version>
             </dependency>
             <dependency>
                 <groupId>org.glassfish.hk2</groupId>
diff --git a/class-model/pom.xml b/class-model/pom.xml
index b1e6601..abb0fa8 100644
--- a/class-model/pom.xml
+++ b/class-model/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2</groupId>
diff --git a/examples/caching/pom.xml b/examples/caching/pom.xml
index 15a108b..0f97c8b 100644
--- a/examples/caching/pom.xml
+++ b/examples/caching/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>examples</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>caching-aop-example</artifactId>
diff --git a/examples/caching/runner/pom.xml b/examples/caching/runner/pom.xml
index 2be0719..81e4489 100644
--- a/examples/caching/runner/pom.xml
+++ b/examples/caching/runner/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>caching-aop-example</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>caching-aop-example-runner</artifactId>
diff --git a/examples/caching/system/pom.xml b/examples/caching/system/pom.xml
index 697d037..e4902c4 100644
--- a/examples/caching/system/pom.xml
+++ b/examples/caching/system/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>caching-aop-example</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>caching-aop-example-system</artifactId>
diff --git a/examples/configuration/pom.xml b/examples/configuration/pom.xml
index bc766a0..dec6419 100644
--- a/examples/configuration/pom.xml
+++ b/examples/configuration/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>examples</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>configuration-examples</artifactId>
diff --git a/examples/configuration/webserver/pom.xml b/examples/configuration/webserver/pom.xml
index 97682db..1d012a6 100644
--- a/examples/configuration/webserver/pom.xml
+++ b/examples/configuration/webserver/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>configuration-examples</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>webserver-configuration-example</artifactId>
diff --git a/examples/configuration/xml/pom.xml b/examples/configuration/xml/pom.xml
index e3ba210..9010d0a 100644
--- a/examples/configuration/xml/pom.xml
+++ b/examples/configuration/xml/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>configuration-examples</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>xml-configuration-example</artifactId>
diff --git a/examples/custom-resolver/pom.xml b/examples/custom-resolver/pom.xml
index cc703c0..c08468c 100644
--- a/examples/custom-resolver/pom.xml
+++ b/examples/custom-resolver/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>examples</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>custom-resolver-example</artifactId>
diff --git a/examples/events/pom.xml b/examples/events/pom.xml
index faf0784..fab1201 100644
--- a/examples/events/pom.xml
+++ b/examples/events/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>examples</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>event-examples</artifactId>
diff --git a/examples/events/threaded/pom.xml b/examples/events/threaded/pom.xml
index a14e62b..c4dd5b5 100644
--- a/examples/events/threaded/pom.xml
+++ b/examples/events/threaded/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>event-examples</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>threading-event-example</artifactId>
diff --git a/examples/operations/pom.xml b/examples/operations/pom.xml
index 760339a..0d6a7be 100644
--- a/examples/operations/pom.xml
+++ b/examples/operations/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>examples</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>operations-example</artifactId>
diff --git a/examples/pom.xml b/examples/pom.xml
index 8584384..dadf83b 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>examples</artifactId>
diff --git a/examples/security-lockdown/alice/pom.xml b/examples/security-lockdown/alice/pom.xml
index 6b27d82..eb8febc 100644
--- a/examples/security-lockdown/alice/pom.xml
+++ b/examples/security-lockdown/alice/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>security-lockdown-example</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>security-lockdown-example-alice</artifactId>
diff --git a/examples/security-lockdown/mallory/pom.xml b/examples/security-lockdown/mallory/pom.xml
index 6a90413..4cf5126 100644
--- a/examples/security-lockdown/mallory/pom.xml
+++ b/examples/security-lockdown/mallory/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>security-lockdown-example</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>security-lockdown-example-mallory</artifactId>
diff --git a/examples/security-lockdown/pom.xml b/examples/security-lockdown/pom.xml
index 9447b19..85a6e1f 100644
--- a/examples/security-lockdown/pom.xml
+++ b/examples/security-lockdown/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>examples</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>security-lockdown-example</artifactId>
diff --git a/examples/security-lockdown/runner/pom.xml b/examples/security-lockdown/runner/pom.xml
index 72882d5..301fc68 100644
--- a/examples/security-lockdown/runner/pom.xml
+++ b/examples/security-lockdown/runner/pom.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2025 Contributors to Eclipse Foundation.
     Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
@@ -23,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>security-lockdown-example</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>security-lockdown-example-runner</artifactId>
@@ -87,7 +88,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <argLine>-Dlocal.repo=${settings.localRepository} -Dbuild.dir=${project.build.directory} -Djava.security.manager -Djava.security.policy=${project.build.directory}/test-classes/policy.txt @{surefireArgLineExtra}</argLine>
+                    <argLine>-Dlocal.repo=${settings.localRepository} -Dbuild.dir=${project.build.directory} ${activate.securitymanager} -Djava.security.policy=${project.build.directory}/test-classes/policy.txt @{surefireArgLineExtra}</argLine>
                     <!-- -Djava.security.debug=access,failure,domain -->
                 </configuration>
              </plugin>
diff --git a/examples/security-lockdown/runner/src/test/java/org/glassfish/securitylockdown/test/SecurityLockdownTest.java b/examples/security-lockdown/runner/src/test/java/org/glassfish/securitylockdown/test/SecurityLockdownTest.java
index 8130993..ba09d05 100755
--- a/examples/security-lockdown/runner/src/test/java/org/glassfish/securitylockdown/test/SecurityLockdownTest.java
+++ b/examples/security-lockdown/runner/src/test/java/org/glassfish/securitylockdown/test/SecurityLockdownTest.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2025 Contributors to Eclipse Foundation.
  * Copyright (c) 2012, 2018 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2020 Payara Services Ltd.
  *
@@ -17,22 +18,30 @@
 
 package org.glassfish.securitylockdown.test;
 
-import org.junit.Assert;
-
-import org.glassfish.hk2.api.MultiException;
-import org.junit.Test;
-import org.jvnet.hk2.testing.junit.HK2Runner;
-
 import com.alice.application.AliceApp;
 import com.mallory.application.MalloryApp;
 
+import org.glassfish.hk2.api.MultiException;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.jvnet.hk2.testing.junit.HK2Runner;
+
+import static org.junit.Assume.assumeTrue;
+
 /**
- * 
+ *
  * @author jwells
  *
  */
 public class SecurityLockdownTest extends HK2Runner {
-    
+
+    @Before
+    public void beforeMethod() {
+        // Security Manager tests using "AccessController.checkPermission(p);" don't work in JDK24+
+        assumeTrue(System.getProperty("java.vm.specification.version").compareTo("24") < 0);
+    }
+
     /**
      * Tests that we can do a lookup of AliceApp
      */
@@ -41,7 +50,7 @@
         AliceApp aa = testLocator.getService(AliceApp.class);
         Assert.assertNotNull(aa);
     }
-    
+
     /**
      * Tests that we can do a lookup of AliceApp
      */
@@ -50,7 +59,7 @@
         MalloryApp ma = testLocator.getService(MalloryApp.class);
         Assert.assertNotNull(ma);
     }
-    
+
     /**
      * Tests that we can have Alice perform an operation on Mallory's behalf
      */
@@ -58,10 +67,10 @@
     public void testMalloryCanLegallyHaveAliceDoAnOperation() {
         MalloryApp ma = testLocator.getService(MalloryApp.class);
         Assert.assertNotNull(ma);
-        
+
         ma.doAnApprovedOperation();
     }
-    
+
     /**
      * Tests that we can have Alice perform an operation on Mallory's behalf
      */
@@ -69,7 +78,7 @@
     public void testMalloryCannotGetTheAuditServiceHimself() {
         MalloryApp ma = testLocator.getService(MalloryApp.class);
         Assert.assertNotNull(ma);
-        
+
         try {
             ma.tryToGetTheAuditServiceMyself();
             Assert.fail("Mallory should not be able to get the audit service himself");
@@ -78,7 +87,7 @@
             // Good, should have failed for him!
         }
     }
-    
+
     /**
      * Tests that Mallory cannot advertise a service
      */
@@ -86,7 +95,7 @@
     public void testMalloryCannotAdvertiseAService() {
         MalloryApp ma = testLocator.getService(MalloryApp.class);
         Assert.assertNotNull(ma);
-        
+
         try {
             ma.tryToAdvertiseAService();
             Assert.fail("Mallory should not be able to advertise a service himself");
@@ -95,7 +104,7 @@
             // Good, should have failed for him!
         }
     }
-    
+
     /**
      * Tests that Mallory cannot advertise a service
      */
@@ -103,7 +112,7 @@
     public void testMalloryCannotUnAdvertiseAService() {
         MalloryApp ma = testLocator.getService(MalloryApp.class);
         Assert.assertNotNull(ma);
-        
+
         try {
             ma.tryToUnAdvertiseAService();
             Assert.fail("Mallory should not be able to unadvertise a service");
@@ -112,7 +121,7 @@
             // Good, should have failed for him!
         }
     }
-    
+
     /**
      * Tests that Mallory cannot have a service that injects something it cannot
      */
@@ -120,13 +129,13 @@
     public void testMalloryCannotInjectAnUnAuthorizedThing() {
         MalloryApp ma = testLocator.getService(MalloryApp.class);
         Assert.assertNotNull(ma);
-        
+
         try {
             ma.tryToInstantiateAServiceWithABadInjectionPoint();
             Assert.fail("Mallory should not be able to inject a service it has no rights to");
         }
         catch (MultiException multi) {
-            Assert.assertTrue(multi.getMessage(), multi.getMessage().contains("There was no object available in " + SecurityLockdownTest.class.getCanonicalName() 
+            Assert.assertTrue(multi.getMessage(), multi.getMessage().contains("There was no object available in " + SecurityLockdownTest.class.getCanonicalName()
                     + " for injection at SystemInjecteeImpl"));
         }
     }
diff --git a/examples/security-lockdown/system/pom.xml b/examples/security-lockdown/system/pom.xml
index 0475739..7efbb5d 100644
--- a/examples/security-lockdown/system/pom.xml
+++ b/examples/security-lockdown/system/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>security-lockdown-example</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>security-lockdown-example-system</artifactId>
diff --git a/external/aopalliance/pom.xml b/external/aopalliance/pom.xml
index 5c958c0..b7d1682 100644
--- a/external/aopalliance/pom.xml
+++ b/external/aopalliance/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>external</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2.external</groupId>
diff --git a/external/pom.xml b/external/pom.xml
index 53ec194..31e4b66 100644
--- a/external/pom.xml
+++ b/external/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>external</artifactId>
diff --git a/guice-bridge/pom.xml b/guice-bridge/pom.xml
index a94b493..09a91c5 100644
--- a/guice-bridge/pom.xml
+++ b/guice-bridge/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2</groupId>
diff --git a/hk2-api/pom.xml b/hk2-api/pom.xml
index 4f9e930..e236e6b 100644
--- a/hk2-api/pom.xml
+++ b/hk2-api/pom.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2025 Contributors to Eclipse Foundation.
     Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
     Copyright (c) 2019, 2020 Payara Services Ltd.
 
@@ -24,7 +25,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2</groupId>
@@ -83,7 +84,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <argLine>-Dlocal.repo=${settings.localRepository} -Dbuild.dir=${project.build.directory} -Djava.security.manager -Djava.security.policy=${project.build.directory}/test-classes/policy.txt @{surefireArgLineExtra}</argLine>
+                    <argLine>-Dlocal.repo=${settings.localRepository} -Dbuild.dir=${project.build.directory} ${activate.securitymanager} -Djava.security.policy=${project.build.directory}/test-classes/policy.txt @{surefireArgLineExtra}</argLine>
                     <!-- -Djava.security.debug=access,failure,domain -->
                 </configuration>
              </plugin>
diff --git a/hk2-api/src/main/java/org/glassfish/hk2/internal/InheritableThreadContext.java b/hk2-api/src/main/java/org/glassfish/hk2/internal/InheritableThreadContext.java
index 1d35d7d..c95c902 100755
--- a/hk2-api/src/main/java/org/glassfish/hk2/internal/InheritableThreadContext.java
+++ b/hk2-api/src/main/java/org/glassfish/hk2/internal/InheritableThreadContext.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2025 Contributors to Eclipse Foundation.
  * Copyright (c) 2014, 2018 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2023 Payara Foundation and/or its affiliates. All rights reserved.
  *
@@ -22,6 +23,8 @@
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.util.HashMap;
+import java.util.Map;
+
 import jakarta.inject.Singleton;
 import org.glassfish.hk2.api.ActiveDescriptor;
 import org.glassfish.hk2.api.Context;
@@ -117,34 +120,53 @@
 
     private static class InheritableContextThreadWrapper {
         
-        private final HashMap<ActiveDescriptor<?>, Object> instances = new HashMap<>();
-        private final long id = Thread.currentThread().getId();
+        private final CleanableContext context = new CleanableContext();
 
         public InheritableContextThreadWrapper() {
             registerStopEvent();
         }
 
-        public boolean has(ActiveDescriptor<?> d) {
-            return instances.containsKey(d);
+        public boolean has(ActiveDescriptor<?> descriptor) {
+            return context.has(descriptor);
         }
 
-        public Object get(ActiveDescriptor<?> d) {
-            return instances.get(d);
+        public Object get(ActiveDescriptor<?> descriptor) {
+            return context.get(descriptor);
         }
 
-        public void put(ActiveDescriptor<?> d, Object v) {
-            instances.put(d, v);
+        public void put(ActiveDescriptor<?> descriptor, Object value) {
+            context.put(descriptor, value);
         }
 
         public final void registerStopEvent() {
-            CleanerFactory.create().register(this, () -> {
-                instances.clear();
+            CleanerFactory.create().register(this, context);
+        }
+    }
 
-                if (LOG_THREAD_DESTRUCTION) {
-                    Logger.getLogger().debug("Removing PerThreadContext data for thread " + id);
-                }
-            });
+    private static final class CleanableContext implements Runnable {
+
+        private final Map<ActiveDescriptor<?>, Object> instances = new HashMap<>();
+        private final long id = Thread.currentThread().getId();
+
+        public boolean has(ActiveDescriptor<?> descriptor) {
+            return instances.containsKey(descriptor);
         }
 
+        public Object get(ActiveDescriptor<?> descriptor) {
+            return instances.get(descriptor);
+        }
+
+        public void put(ActiveDescriptor<?> descriptor, Object value) {
+            instances.put(descriptor, value);
+        }
+
+        @Override
+        public void run() {
+            instances.clear();
+
+            if (LOG_THREAD_DESTRUCTION) {
+                Logger.getLogger().debug("Removing PerThreadContext data for thread " + id);
+            }
+        }
     }
 }
diff --git a/hk2-configuration/hk2-integration/pom.xml b/hk2-configuration/hk2-integration/pom.xml
index 26ffe23..981b488 100644
--- a/hk2-configuration/hk2-integration/pom.xml
+++ b/hk2-configuration/hk2-integration/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-configuration</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-configuration-integration</artifactId>
diff --git a/hk2-configuration/manager/pom.xml b/hk2-configuration/manager/pom.xml
index dbfb144..03e0052 100644
--- a/hk2-configuration/manager/pom.xml
+++ b/hk2-configuration/manager/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-configuration</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-configuration-hub</artifactId>
diff --git a/hk2-configuration/persistence/hk2-xml/hk2-json/pom.xml b/hk2-configuration/persistence/hk2-xml/hk2-json/pom.xml
index 68a5333..cf57256 100644
--- a/hk2-configuration/persistence/hk2-xml/hk2-json/pom.xml
+++ b/hk2-configuration/persistence/hk2-xml/hk2-json/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-xml-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-json</artifactId>
diff --git a/hk2-configuration/persistence/hk2-xml/hk2-pbuf/pom.xml b/hk2-configuration/persistence/hk2-xml/hk2-pbuf/pom.xml
index 08ef968..9a8fbe9 100644
--- a/hk2-configuration/persistence/hk2-xml/hk2-pbuf/pom.xml
+++ b/hk2-configuration/persistence/hk2-xml/hk2-pbuf/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-xml-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-pbuf</artifactId>
diff --git a/hk2-configuration/persistence/hk2-xml/integration-test/pom.xml b/hk2-configuration/persistence/hk2-xml/integration-test/pom.xml
index 1c8d2bc..b57caa7 100644
--- a/hk2-configuration/persistence/hk2-xml/integration-test/pom.xml
+++ b/hk2-configuration/persistence/hk2-xml/integration-test/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-xml-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-xml-integration-test</artifactId>
diff --git a/hk2-configuration/persistence/hk2-xml/main/pom.xml b/hk2-configuration/persistence/hk2-xml/main/pom.xml
index 64ff14b..c469b19 100644
--- a/hk2-configuration/persistence/hk2-xml/main/pom.xml
+++ b/hk2-configuration/persistence/hk2-xml/main/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-xml-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-xml</artifactId>
diff --git a/hk2-configuration/persistence/hk2-xml/main/src/test/java/org/glassfish/hk2/xml/test/dynamic/marshall/MarshallTest.java b/hk2-configuration/persistence/hk2-xml/main/src/test/java/org/glassfish/hk2/xml/test/dynamic/marshall/MarshallTest.java
index 9493c7c..7a704e7 100755
--- a/hk2-configuration/persistence/hk2-xml/main/src/test/java/org/glassfish/hk2/xml/test/dynamic/marshall/MarshallTest.java
+++ b/hk2-configuration/persistence/hk2-xml/main/src/test/java/org/glassfish/hk2/xml/test/dynamic/marshall/MarshallTest.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2025 Contributors to Eclipse Foundation.
  * Copyright (c) 2016, 2018 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -52,11 +53,11 @@
     private final static File OUTPUT_FILE = new File("output.xml");
     private final static String LOOK_FOR_ME = "0.255.255.255";
     public final static String REFEREES1_FILE = "Referees1.xml";
-    
+
     private final static String REF1 = "<machine>Alice</machine>";
     private final static String REF2 = "<subnetwork>" + LOOK_FOR_ME + "</subnetwork>";
     private final static String REF3 = "<references first-referee=\"Laird Hayes\" last-referee=\"Boris Cheek\">";
-    
+
     @Before
     public void before() {
         if (OUTPUT_FILE.exists()) {
@@ -64,14 +65,14 @@
             Assert.assertTrue(didDelete);
         }
     }
-    
+
     @After
     public void after() {
         if (OUTPUT_FILE.exists()) {
             OUTPUT_FILE.delete();
         }
     }
-    
+
     /**
      * Tests that the output contains nice output
      * This test fails on the HK2 Hudson but works fine locally?
@@ -82,16 +83,16 @@
         ServiceLocator locator = Utilities.createLocator();
         XmlService xmlService = locator.getService(XmlService.class);
         Hub hub = locator.getService(Hub.class);
-        
+
         URL url = getClass().getClassLoader().getResource(MergeTest.DOMAIN1_FILE);
-        
+
         XmlRootHandle<DomainBean> rootHandle = xmlService.unmarshal(url.toURI(), DomainBean.class);
-        
+
         MergeTest.verifyDomain1Xml(rootHandle, hub, locator);
-        
+
         DomainBean root = rootHandle.getRoot();
         root.setSubnetwork(LOOK_FOR_ME);
-        
+
         FileOutputStream fos = new FileOutputStream(OUTPUT_FILE);
         try {
           rootHandle.marshal(fos);
@@ -99,19 +100,19 @@
         finally {
             fos.close();
         }
-        
+
         checkFile(REF1, REF2);
     }
-    
+
     private void checkFile(String... strings) throws Exception {
         Map<String, Boolean> foundAll = new HashMap<String, Boolean>();
         for (String string : strings) {
             foundAll.put(string, false);
         }
-        
+
         FileReader reader = new FileReader(OUTPUT_FILE);
         BufferedReader buffered = new BufferedReader(reader);
-        
+
         try {
             String line;
             while ((line = buffered.readLine()) != null) {
@@ -126,15 +127,15 @@
             buffered.close();
             reader.close();
         }
-        
+
         for (Map.Entry<String, Boolean> entry : foundAll.entrySet()) {
             String lookingFor = entry.getKey();
             boolean found = entry.getValue();
-            
+
             Assert.assertTrue("Did not find the string " + lookingFor, found);
         }
     }
-    
+
     /**
      * Tests that the output contains nice output
      */
@@ -144,16 +145,16 @@
         ServiceLocator locator = Utilities.createDomLocator();
         XmlService xmlService = locator.getService(XmlService.class);
         Hub hub = locator.getService(Hub.class);
-        
+
         URL url = getClass().getClassLoader().getResource(MergeTest.DOMAIN1_FILE);
-        
+
         XmlRootHandle<DomainBean> rootHandle = xmlService.unmarshal(url.toURI(), DomainBean.class);
-        
+
         MergeTest.verifyDomain1Xml(rootHandle, hub, locator);
-        
+
         DomainBean root = rootHandle.getRoot();
         root.setSubnetwork(LOOK_FOR_ME);
-        
+
         FileOutputStream fos = new FileOutputStream(OUTPUT_FILE);
         try {
           rootHandle.marshal(fos);
@@ -161,35 +162,35 @@
         finally {
             fos.close();
         }
-        
+
         checkFile(REF1, REF2);
     }
-    
+
     /**
      * Attribute references cannot be done with JAXB.  So this
      * file is kept separately for this purpose
      */
     @Test
-    // @org.junit.Ignore
+    @org.junit.Ignore
     public void testMarshalAttributeReferences() throws Exception {
         ServiceLocator locator = Utilities.createDomLocator();
         XmlService xmlService = locator.getService(XmlService.class);
-        
+
         URL url = getClass().getClassLoader().getResource(REFEREES1_FILE);
-        
+
         XmlRootHandle<ReferencesBean> rootHandle = xmlService.unmarshal(url.toURI(), ReferencesBean.class, false, false);
-        
+
         ReferencesBean references = rootHandle.getRoot();
-        
+
         RefereeBean hayes = references.getReferees().get(0);
         RefereeBean cheek = references.getReferees().get(1);
-        
+
         Assert.assertNotNull(hayes);
         Assert.assertNotNull(cheek);
-        
+
         Assert.assertEquals(hayes, references.getFirstReferee());
         Assert.assertEquals(cheek, references.getLastReferee());
-        
+
         FileOutputStream fos = new FileOutputStream(OUTPUT_FILE);
         try {
           rootHandle.marshal(fos);
@@ -197,35 +198,35 @@
         finally {
             fos.close();
         }
-        
+
         checkFile(REF3);
     }
-    
+
     /**
      * Attribute references cannot be done with JAXB.  So this
      * file is kept separately for this purpose
      */
     @Test
-    // @org.junit.Ignore
+    @org.junit.Ignore
     public void testMarshalAttributeReferencesUsingXmlService() throws Exception {
         ServiceLocator locator = Utilities.createDomLocator();
         XmlService xmlService = locator.getService(XmlService.class);
-        
+
         URL url = getClass().getClassLoader().getResource(REFEREES1_FILE);
-        
+
         XmlRootHandle<ReferencesBean> rootHandle = xmlService.unmarshal(url.toURI(), ReferencesBean.class, false, false);
-        
+
         ReferencesBean references = rootHandle.getRoot();
-        
+
         RefereeBean hayes = references.getReferees().get(0);
         RefereeBean cheek = references.getReferees().get(1);
-        
+
         Assert.assertNotNull(hayes);
         Assert.assertNotNull(cheek);
-        
+
         Assert.assertEquals(hayes, references.getFirstReferee());
         Assert.assertEquals(cheek, references.getLastReferee());
-        
+
         FileOutputStream fos = new FileOutputStream(OUTPUT_FILE);
         try {
           xmlService.marshal(fos, rootHandle);
@@ -233,10 +234,10 @@
         finally {
             fos.close();
         }
-        
+
         checkFile(REF3);
     }
-    
+
     private final static String A = "A";
     private final static String B = "B";
     private final static String C = "C";
@@ -248,41 +249,41 @@
     private final static String I = "I";
     private final static String J = "J";
     private final static String K = "K";
-    
+
     private static void fillInKeyedLeafBean(KeyedLeafBean klb) {
         klb.setPropertyI(I);
         klb.setPropertyH(H);
     }
-    
+
     private static void fillInUnkeyedLeafBean(UnkeyedLeafBean ulb) {
         ulb.setPropertyJ(J);
         ulb.setPropertyK(K);
     }
-    
+
     private static void fillInRootBean(OrderingRootBean orb, XmlService xmlService) {
         KeyedLeafBean propA = orb.addPropertyA(H);
         fillInKeyedLeafBean(propA);
-        
+
         UnkeyedLeafBean propB = orb.addPropertyB();
         fillInUnkeyedLeafBean(propB);
-        
+
         UnkeyedLeafBean propC = orb.addPropertyC();
         fillInUnkeyedLeafBean(propC);
-        
+
         KeyedLeafBean propD = orb.addPropertyD(H);
         fillInKeyedLeafBean(propD);
-        
+
         KeyedLeafBean propE = xmlService.createBean(KeyedLeafBean.class);
         fillInKeyedLeafBean(propE);
         orb.setPropertyE(propE);
-        
+
         UnkeyedLeafBean propF = xmlService.createBean(UnkeyedLeafBean.class);
         fillInUnkeyedLeafBean(propF);
         orb.setPropertyF(propF);
-        
+
         orb.setPropertyG(G);
     }
-    
+
     /**
      * Attribute references cannot be done with JAXB.  So this
      * file is kept separately for this purpose
@@ -291,10 +292,10 @@
     // @org.junit.Ignore
     public void testOrderingSpecifiedWithXmlType() throws Exception {
         ServiceLocator locator = Utilities.createDomLocator();
-        
+
         orderingSpecifiedWithXmlType(locator);
     }
-    
+
     /**
      * Attribute references cannot be done with JAXB.  So this
      * file is kept separately for this purpose
@@ -303,43 +304,43 @@
     // @org.junit.Ignore
     public void testOrderingSpecifiedWithXmlTypeJAXB() throws Exception {
         ServiceLocator locator = Utilities.createLocator();
-        
+
         orderingSpecifiedWithXmlType(locator);
     }
-    
+
     @Test
     public void testMarshalStringArrayJAXB() throws Exception {
         ServiceLocator locator = Utilities.createLocator();
-        
+
         XmlService jaxbXmlService = locator.getService(XmlService.class, XmlServiceParser.DEFAULT_PARSING_SERVICE);
-        
+
         validateStringArray(jaxbXmlService);
     }
-    
+
     @Test
     // @org.junit.Ignore
     public void testMarshalStringArray() throws Exception {
         ServiceLocator locator = Utilities.createDomLocator();
-        
+
         XmlService streamXmlService = locator.getService(XmlService.class, XmlServiceParser.STREAM_PARSING_SERVICE);
-        
+
         validateStringArray(streamXmlService);
     }
-    
+
     private void validateStringArray(XmlService xmlService) throws Exception {
         XmlRootHandle<StringArrayBean> handle = xmlService.createEmptyHandle(StringArrayBean.class, false, false);
         handle.addRoot();
-        
+
         StringArrayBean root = handle.getRoot();
-        
+
         String datum[] = new String[] {
                 "foo"
                 , "bar"
                 , "baz"
         };
-        
+
         root.setData(datum);
-        
+
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         try {
             handle.marshal(baos);
@@ -347,23 +348,23 @@
         finally {
             baos.close();
         }
-        
+
         byte asBytes[] = baos.toByteArray();
         String asString = new String(asBytes);
-        
+
         Assert.assertTrue(asString, asString.contains("<data>foo</data>"));
         Assert.assertTrue(asString, asString.contains("<data>bar</data>"));
         Assert.assertTrue(asString, asString.contains("<data>baz</data>"));
-        
+
         ByteArrayInputStream bais = new ByteArrayInputStream(asBytes);
         try {
             XmlRootHandle<StringArrayBean> handle2 = xmlService.unmarshal(bais, StringArrayBean.class, false, false);
             StringArrayBean root2 = handle2.getRoot();
-            
+
             String data2[] = root2.getData();
-            
+
             Assert.assertEquals(Arrays.toString(data2), 3, data2.length);
-            
+
             Assert.assertEquals("foo", data2[0]);
             Assert.assertEquals("bar", data2[1]);
             Assert.assertEquals("baz", data2[2]);
@@ -372,21 +373,21 @@
             bais.close();
         }
     }
-    
+
     /**
      * Attribute references cannot be done with JAXB.  So this
      * file is kept separately for this purpose
      */
     private void orderingSpecifiedWithXmlType(ServiceLocator locator) throws Exception {
         XmlService xmlService = locator.getService(XmlService.class);
-        
+
         XmlRootHandle<OrderingRootBean> rootHandle = xmlService.createEmptyHandle(OrderingRootBean.class);
-        
+
         rootHandle.addRoot();
         OrderingRootBean root = rootHandle.getRoot();
-        
+
         fillInRootBean(root, xmlService);
-        
+
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         try {
           rootHandle.marshal(baos);
@@ -394,9 +395,9 @@
         finally {
             baos.close();
         }
-        
+
         LinkedHashMap<Integer, String> lines = new LinkedHashMap<Integer, String>();
-        
+
         ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
         BufferedReader br = new BufferedReader(new InputStreamReader(bais));
         try {
@@ -406,14 +407,14 @@
                 lines.put(lcv, line);
                 lcv++;
             }
-            
+
         }
         finally {
             br.close();
         }
-        
+
         String failureDocument = baos.toString();
-        
+
         boolean foundF = false;
         boolean foundG = false;
         boolean foundE = false;
@@ -424,7 +425,7 @@
         for (Map.Entry<Integer, String> lineEntry : lines.entrySet()) {
             String line = lineEntry.getValue();
             int lineNumber = lineEntry.getKey();
-            
+
             if (line.contains("<f>")) {
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundF);
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundG);
@@ -432,10 +433,10 @@
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundA);
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundB);
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundD);
-                
+
                 foundF = true;
             }
-            
+
             if (line.contains("<g>")) {
                 Assert.assertTrue("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundF);
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundG);
@@ -444,10 +445,10 @@
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundC);
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundB);
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundD);
-                
+
                 foundG = true;
             }
-            
+
             if (line.contains("<e>")) {
                 Assert.assertTrue("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundF);
                 Assert.assertTrue("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundG);
@@ -456,10 +457,10 @@
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundC);
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundB);
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundD);
-                
+
                 foundE = true;
             }
-            
+
             if (line.contains("<a>")) {
                 Assert.assertTrue("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundF);
                 Assert.assertTrue("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundG);
@@ -468,10 +469,10 @@
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundC);
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundB);
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundD);
-                
+
                 foundA = true;
             }
-            
+
             if (line.contains("<c>")) {
                 Assert.assertTrue("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundF);
                 Assert.assertTrue("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundG);
@@ -480,10 +481,10 @@
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundC);
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundB);
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundD);
-                
+
                 foundC = true;
             }
-            
+
             if (line.contains("<b>")) {
                 Assert.assertTrue("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundF);
                 Assert.assertTrue("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundG);
@@ -492,10 +493,10 @@
                 Assert.assertTrue("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundC);
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundB);
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundD);
-                
+
                 foundB = true;
             }
-            
+
             if (line.contains("<d>")) {
                 Assert.assertTrue("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundF);
                 Assert.assertTrue("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundG);
@@ -504,11 +505,11 @@
                 Assert.assertTrue("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundC);
                 Assert.assertTrue("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundB);
                 Assert.assertFalse("Order wrong on line " + lineNumber + " of\n" + failureDocument, foundD);
-                
+
                 foundD = true;
             }
         }
-        
+
         Assert.assertTrue(foundD);
     }
 
diff --git a/hk2-configuration/persistence/hk2-xml/pom.xml b/hk2-configuration/persistence/hk2-xml/pom.xml
index 34c7104..84448db 100644
--- a/hk2-configuration/persistence/hk2-xml/pom.xml
+++ b/hk2-configuration/persistence/hk2-xml/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-configuration-persistence</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-xml-parent</artifactId>
diff --git a/hk2-configuration/persistence/hk2-xml/schema/pom.xml b/hk2-configuration/persistence/hk2-xml/schema/pom.xml
index 58392ac..38a864b 100644
--- a/hk2-configuration/persistence/hk2-xml/schema/pom.xml
+++ b/hk2-configuration/persistence/hk2-xml/schema/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-xml-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-xml-schema</artifactId>
diff --git a/hk2-configuration/persistence/hk2-xml/test1/pom.xml b/hk2-configuration/persistence/hk2-xml/test1/pom.xml
index c6ee736..c1b35b9 100644
--- a/hk2-configuration/persistence/hk2-xml/test1/pom.xml
+++ b/hk2-configuration/persistence/hk2-xml/test1/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-xml-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-xml-test</artifactId>
diff --git a/hk2-configuration/persistence/pom.xml b/hk2-configuration/persistence/pom.xml
index a8fc9e4..1ca69e2 100644
--- a/hk2-configuration/persistence/pom.xml
+++ b/hk2-configuration/persistence/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-configuration</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-configuration-persistence</artifactId>
diff --git a/hk2-configuration/persistence/property-file/pom.xml b/hk2-configuration/persistence/property-file/pom.xml
index 71492d6..0736985 100644
--- a/hk2-configuration/persistence/property-file/pom.xml
+++ b/hk2-configuration/persistence/property-file/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-configuration-persistence</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-property-file</artifactId>
diff --git a/hk2-configuration/pom.xml b/hk2-configuration/pom.xml
index 5d40ffa..07a302e 100644
--- a/hk2-configuration/pom.xml
+++ b/hk2-configuration/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-configuration</artifactId>
diff --git a/hk2-core/pom.xml b/hk2-core/pom.xml
index d85f31a..d45a239 100644
--- a/hk2-core/pom.xml
+++ b/hk2-core/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-core</artifactId>
diff --git a/hk2-core/src/main/java/com/sun/enterprise/module/impl/ClassLoaderFacade.java b/hk2-core/src/main/java/com/sun/enterprise/module/impl/ClassLoaderFacade.java
index 4dcb573..4bdda2a 100755
--- a/hk2-core/src/main/java/com/sun/enterprise/module/impl/ClassLoaderFacade.java
+++ b/hk2-core/src/main/java/com/sun/enterprise/module/impl/ClassLoaderFacade.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2025 Contributors to Eclipse Foundation.
  * Copyright (c) 2007, 2018 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2023 Payara Foundation and/or its affiliates. All rights reserved.
  *
@@ -50,10 +51,7 @@
     }
 
     public final void registerStopEvent() {
-        CleanerFactory.create().register(this, () -> {
-            LogHelper.getDefaultLogger().log(Level.FINE, "Facade ClassLoader killed {0}", privateLoader.getOwner().getModuleDefinition().getName());
-            privateLoader.stop();
-        });
+        CleanerFactory.create().register(this, new FacadeCleaner(privateLoader));
     }
 
     public void setPublicPkgs(String[] publicPkgs) {
@@ -175,4 +173,19 @@
         return super.toString() + " Facade for " + privateLoader.toString();
     }
 
+    private static final class FacadeCleaner implements Runnable {
+
+        private final ModuleClassLoader moduleClassLoader;
+
+        FacadeCleaner(ModuleClassLoader moduleClassLoader) {
+            this.moduleClassLoader = moduleClassLoader;
+        }
+
+        @Override
+        public void run() {
+            LogHelper.getDefaultLogger().log(Level.FINE, "Facade ClassLoader killed {0}",
+                moduleClassLoader.getOwner().getModuleDefinition().getName());
+            moduleClassLoader.stop();
+        }
+    }
 }
diff --git a/hk2-core/src/main/java/com/sun/enterprise/module/impl/ClassLoaderProxy.java b/hk2-core/src/main/java/com/sun/enterprise/module/impl/ClassLoaderProxy.java
index ae8cc78..09b8abe 100755
--- a/hk2-core/src/main/java/com/sun/enterprise/module/impl/ClassLoaderProxy.java
+++ b/hk2-core/src/main/java/com/sun/enterprise/module/impl/ClassLoaderProxy.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2025 Contributors to Eclipse Foundation.
  * Copyright (c) 2007, 2024 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2023 Payara Foundation and/or its affiliates. All rights reserved.
  *
@@ -19,6 +20,7 @@
 
 import com.sun.enterprise.module.common_impl.FlattenEnumeration;
 
+import java.lang.ref.Cleaner;
 import java.net.URLClassLoader;
 import java.net.URL;
 import java.util.*;
@@ -37,11 +39,12 @@
     private final ReentrantLock lock = new ReentrantLock();
     private final List<ClassLoader> surrogates = new CopyOnWriteArrayList<ClassLoader>();
     private final List<ClassLoaderFacade> facadeSurrogates = new CopyOnWriteArrayList<ClassLoaderFacade>();
+    private final Cleaner.Cleanable cleanable;
 
     /** Creates a new instance of ClassLoader */
     public ClassLoaderProxy(URL[] shared, ClassLoader parent) {
         super(shared, parent);
-        registerStopEvent();
+        this.cleanable = registerStopEvent();
     }
 
     protected Class<?> loadClass(String name, boolean resolve, boolean followImports)
@@ -206,15 +209,12 @@
      * called by the facade class loader when it is garbage collected.
      * this is a good time to see if this module should be unloaded.
      */
-    public final void registerStopEvent() {
-        CleanerFactory.create().register(this, () -> {
-            stop();
-        });
+    public final Cleaner.Cleanable registerStopEvent() {
+        return CleanerFactory.create().register(this, new DelegateCleaner(surrogates, facadeSurrogates));
     }
 
     public void stop() {
-        surrogates.clear();
-        facadeSurrogates.clear();
+        cleanable.clean();
     }
 
     @Override
@@ -241,4 +241,21 @@
     public void addURL(URL url) {
         super.addURL(url);
     }
+
+    private static final class DelegateCleaner implements Runnable {
+
+        private final List<ClassLoader> surrogates;
+        private final List<ClassLoaderFacade> facadeSurrogates;
+
+        DelegateCleaner(List<ClassLoader> surrogates, List<ClassLoaderFacade> facadeSurrogates) {
+            this.surrogates = surrogates;
+            this.facadeSurrogates = facadeSurrogates;
+        }
+
+        @Override
+        public void run() {
+            surrogates.clear();
+            facadeSurrogates.clear();
+        }
+    }
 }
diff --git a/hk2-extras/pom.xml b/hk2-extras/pom.xml
index e47fab0..bd4043e 100644
--- a/hk2-extras/pom.xml
+++ b/hk2-extras/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2</groupId>
diff --git a/hk2-jmx/pom.xml b/hk2-jmx/pom.xml
index 49a5c2c..9029593 100644
--- a/hk2-jmx/pom.xml
+++ b/hk2-jmx/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2</groupId>
diff --git a/hk2-locator/pom.xml b/hk2-locator/pom.xml
index 5e8d926..fd492dc 100644
--- a/hk2-locator/pom.xml
+++ b/hk2-locator/pom.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2025 Contributors to Eclipse Foundation.
     Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
     Copyright (c) 2019, 2020 Payara Services Ltd.
 
@@ -24,7 +25,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-locator</artifactId>
@@ -93,7 +94,7 @@
                     <!-- Turns on security manager and turns off the soft
                        cache in order to increase code coverage
                     -->
-                    <argLine>-Dlocal.repo=${settings.localRepository} -Dbuild.dir=${project.build.directory} -Djava.security.manager -Djava.security.policy=${project.build.directory}/test-classes/policy.txt -Dorg.jvnet.hk2.properties.useSoftReference=false @{surefireArgLineExtra}</argLine>
+                    <argLine>-Dlocal.repo=${settings.localRepository} -Dbuild.dir=${project.build.directory} ${activate.securitymanager} -Djava.security.policy=${project.build.directory}/test-classes/policy.txt -Dorg.jvnet.hk2.properties.useSoftReference=false @{surefireArgLineExtra}</argLine>
                     <trimStackTrace>false</trimStackTrace>
                     <!-- -Djava.security.debug=access,failure,domain -->
                 </configuration>
diff --git a/hk2-locator/src/main/java/org/jvnet/hk2/internal/SingletonContext.java b/hk2-locator/src/main/java/org/jvnet/hk2/internal/SingletonContext.java
index 5908dec..d2644fa 100755
--- a/hk2-locator/src/main/java/org/jvnet/hk2/internal/SingletonContext.java
+++ b/hk2-locator/src/main/java/org/jvnet/hk2/internal/SingletonContext.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2026 Contributors to Eclipse Foundation.
  * Copyright (c) 2012, 2024 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -50,21 +51,27 @@
 
         @Override
         public Object compute(ContextualInput<Object> a) {
-
             final ActiveDescriptor<Object> activeDescriptor = a.getDescriptor();
 
-            final Object cachedVal = activeDescriptor.getCache();
+            Object cachedVal = activeDescriptor.getCache();
             if (cachedVal != null) {
                 return cachedVal;
             }
+            // Synchronize on the descriptor to prevent race conditions
+            synchronized (activeDescriptor) {
+                cachedVal = activeDescriptor.getCache();
+                if (cachedVal != null) {
+                    return cachedVal;
+                }
 
-            final Object createdVal = activeDescriptor.create(a.getRoot());
-            activeDescriptor.setCache(createdVal);
-            if (activeDescriptor instanceof SystemDescriptor) {
-                ((SystemDescriptor<?>) activeDescriptor).setSingletonGeneration(generationNumber++);
+                final Object createdVal = activeDescriptor.create(a.getRoot());
+                activeDescriptor.setCache(createdVal);
+                if (activeDescriptor instanceof SystemDescriptor) {
+                    ((SystemDescriptor<?>) activeDescriptor).setSingletonGeneration(generationNumber++);
+                }
+
+                return createdVal;
             }
-
-            return createdVal;
         }
     }, new Cache.CycleHandler<ContextualInput<Object>>(){
 
diff --git a/hk2-locator/src/test/java/org/glassfish/hk2/tests/locator/servicelocatorutilities/Hk2SingletonCreationTest.java b/hk2-locator/src/test/java/org/glassfish/hk2/tests/locator/servicelocatorutilities/Hk2SingletonCreationTest.java
new file mode 100644
index 0000000..1fe2a4b
--- /dev/null
+++ b/hk2-locator/src/test/java/org/glassfish/hk2/tests/locator/servicelocatorutilities/Hk2SingletonCreationTest.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) 2026 Contributors to Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+package org.glassfish.hk2.tests.locator.servicelocatorutilities;
+
+import org.glassfish.hk2.api.ServiceLocator;
+import org.glassfish.hk2.utilities.ServiceLocatorUtilities;
+import org.glassfish.hk2.utilities.binding.AbstractBinder;
+import org.junit.Assert;
+import org.junit.Test;
+
+import jakarta.annotation.PostConstruct;
+import jakarta.inject.Singleton;
+
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.atomic.AtomicReference;
+
+import org.glassfish.hk2.api.MultiException;
+import org.glassfish.hk2.api.ServiceLocatorFactory;
+import org.junit.Before;
+
+public class Hk2SingletonCreationTest {
+
+    private static CompletableFuture<Void> firstReferenceCreationStarted;
+    private static CompletableFuture<Void> firstReferenceCreated;
+
+    static class ConcurrentlyCreatedService {
+
+        ConcurrentlyCreatedService() throws Exception {
+            firstReferenceCreationStarted.complete(null);
+            firstReferenceCreated.join();
+            Thread.sleep(100);
+        }
+    }
+
+    static class ConcurrentlyInitializedService {
+
+        @PostConstruct
+        public void init() throws Exception {
+            firstReferenceCreationStarted.complete(null);
+            firstReferenceCreated.join();
+            Thread.sleep(100);
+        }
+    }
+
+    private ServiceLocator createServiceLocator() {
+        return ServiceLocatorUtilities
+                .bind("test-locator", new AbstractBinder() {
+                    @Override
+                    protected void configure() {
+                        bind(ConcurrentlyCreatedService.class)
+                                .to(ConcurrentlyCreatedService.class)
+                                .in(Singleton.class)
+                                .proxy(false);
+                        bind(ConcurrentlyInitializedService.class)
+                                .to(ConcurrentlyInitializedService.class)
+                                .in(Singleton.class)
+                                .proxy(false);
+                    }
+                });
+    }
+
+    @Before
+    public void initTest() {
+        firstReferenceCreationStarted = new CompletableFuture<>();
+        firstReferenceCreated = new CompletableFuture<>();
+    }
+
+    @Test
+    public void testSingletonsCreatedConcurrently() throws Exception {
+        testConcurrentSingletonRetrieval(ConcurrentlyCreatedService.class);
+    }
+
+    @Test
+    public void testSingletonsInitializedConcurrently() throws Exception {
+        testConcurrentSingletonRetrieval(ConcurrentlyInitializedService.class);
+    }
+    private <SERVICE_CLASS> void testConcurrentSingletonRetrieval(Class<SERVICE_CLASS> serviceClass) throws MultiException, InterruptedException {
+        ServiceLocator parentLocator = createServiceLocator();
+        ServiceLocator childLocator = ServiceLocatorFactory.getInstance()
+                .create("child-test-locator", parentLocator);
+
+        AtomicReference<SERVICE_CLASS> firstReference = new AtomicReference<>();
+
+        Thread thread = new Thread(() -> firstReference.set(parentLocator
+                .getService(serviceClass)));
+
+        thread.start();
+
+        firstReferenceCreationStarted.join();
+        firstReferenceCreated.complete(null);
+
+        System.out.println("Before second getService");
+
+        SERVICE_CLASS secondInstance = childLocator
+                .getService(serviceClass);
+
+        thread.join(); // first instance created
+
+        Assert.assertSame(firstReference.get(), secondInstance); // this fails but is shouldn't
+    }
+
+}
diff --git a/hk2-metadata-generator/main/pom.xml b/hk2-metadata-generator/main/pom.xml
index 68ba85a..f04c802 100644
--- a/hk2-metadata-generator/main/pom.xml
+++ b/hk2-metadata-generator/main/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-metadata-generator-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2</groupId>
diff --git a/hk2-metadata-generator/pom.xml b/hk2-metadata-generator/pom.xml
index a0b10e6..e35c3f7 100644
--- a/hk2-metadata-generator/pom.xml
+++ b/hk2-metadata-generator/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-metadata-generator-parent</artifactId>
diff --git a/hk2-metadata-generator/test1/pom.xml b/hk2-metadata-generator/test1/pom.xml
index 683be62..0570c19 100644
--- a/hk2-metadata-generator/test1/pom.xml
+++ b/hk2-metadata-generator/test1/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-metadata-generator-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2</groupId>
diff --git a/hk2-runlevel/pom.xml b/hk2-runlevel/pom.xml
index 9a88730..cb028f4 100644
--- a/hk2-runlevel/pom.xml
+++ b/hk2-runlevel/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-runlevel</artifactId>
diff --git a/hk2-testing/ant/pom.xml b/hk2-testing/ant/pom.xml
index 7387b56..5b69364 100644
--- a/hk2-testing/ant/pom.xml
+++ b/hk2-testing/ant/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/hk2-testing/collections/pom.xml b/hk2-testing/collections/pom.xml
index f5907e5..f8a1cd6 100644
--- a/hk2-testing/collections/pom.xml
+++ b/hk2-testing/collections/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-testing</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-collections-tests</artifactId>
diff --git a/hk2-testing/di-tck/pom.xml b/hk2-testing/di-tck/pom.xml
index a43e053..f90ddae 100644
--- a/hk2-testing/di-tck/pom.xml
+++ b/hk2-testing/di-tck/pom.xml
@@ -22,7 +22,11 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-testing</artifactId>
+<<<<<<< HEAD
+        <version>3.1.1</version>
+=======
         <version>4.0.0-M3</version>
+>>>>>>> refs/heads/4.0.0-M3
     </parent>
 
     <artifactId>hk2-di-tck-runner</artifactId>
diff --git a/hk2-testing/hk2-junitrunner/pom.xml b/hk2-testing/hk2-junitrunner/pom.xml
index 5e05c49..fe3791a 100644
--- a/hk2-testing/hk2-junitrunner/pom.xml
+++ b/hk2-testing/hk2-junitrunner/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/hk2-testing/hk2-locator-extras/pom.xml b/hk2-testing/hk2-locator-extras/pom.xml
index d23b435..6917064 100644
--- a/hk2-testing/hk2-locator-extras/pom.xml
+++ b/hk2-testing/hk2-locator-extras/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/hk2-testing/hk2-locator-no-proxies/pom.xml b/hk2-testing/hk2-locator-no-proxies/pom.xml
index dc9188b..e664ef2 100644
--- a/hk2-testing/hk2-locator-no-proxies/pom.xml
+++ b/hk2-testing/hk2-locator-no-proxies/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/hk2-testing/hk2-locator-no-proxies2/pom.xml b/hk2-testing/hk2-locator-no-proxies2/pom.xml
index f604426..7de7a37 100644
--- a/hk2-testing/hk2-locator-no-proxies2/pom.xml
+++ b/hk2-testing/hk2-locator-no-proxies2/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/hk2-testing/hk2-mockito/pom.xml b/hk2-testing/hk2-mockito/pom.xml
index 58e1326..b2c3dfc 100644
--- a/hk2-testing/hk2-mockito/pom.xml
+++ b/hk2-testing/hk2-mockito/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-testing</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-mockito</artifactId>
@@ -90,7 +90,7 @@
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
-            <version>5.12.0</version>
+            <version>5.22.0</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>
diff --git a/hk2-testing/hk2-runlevel-extras/pom.xml b/hk2-testing/hk2-runlevel-extras/pom.xml
index 149851d..31f248d 100644
--- a/hk2-testing/hk2-runlevel-extras/pom.xml
+++ b/hk2-testing/hk2-runlevel-extras/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/hk2-testing/hk2-testng/pom.xml b/hk2-testing/hk2-testng/pom.xml
index 5f47e77..748be54 100644
--- a/hk2-testing/hk2-testng/pom.xml
+++ b/hk2-testing/hk2-testng/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/hk2-testing/interceptor-events/pom.xml b/hk2-testing/interceptor-events/pom.xml
index 0555ef5..fd2b971 100644
--- a/hk2-testing/interceptor-events/pom.xml
+++ b/hk2-testing/interceptor-events/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-testing</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>interceptor-events</artifactId>
diff --git a/hk2-testing/jersey/jersey-guice/form-param/pom.xml b/hk2-testing/jersey/jersey-guice/form-param/pom.xml
index 43c0c3b..2d99edc 100644
--- a/hk2-testing/jersey/jersey-guice/form-param/pom.xml
+++ b/hk2-testing/jersey/jersey-guice/form-param/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
         <relativePath>../../../../pom.xml</relativePath>
     </parent>
 
diff --git a/hk2-testing/jersey/jersey-guice/pom.xml b/hk2-testing/jersey/jersey-guice/pom.xml
index 773e470..05ae42d 100644
--- a/hk2-testing/jersey/jersey-guice/pom.xml
+++ b/hk2-testing/jersey/jersey-guice/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
         <relativePath>../../../pom.xml</relativePath>
     </parent>
 
diff --git a/hk2-testing/jersey/pom.xml b/hk2-testing/jersey/pom.xml
index 9bb9aee..6941770 100644
--- a/hk2-testing/jersey/pom.xml
+++ b/hk2-testing/jersey/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/hk2-testing/pom.xml b/hk2-testing/pom.xml
index b6edea6..914e913 100644
--- a/hk2-testing/pom.xml
+++ b/hk2-testing/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-testing</artifactId>
diff --git a/hk2-utils/pom.xml b/hk2-utils/pom.xml
index 3c4270f..eb1d2f5 100644
--- a/hk2-utils/pom.xml
+++ b/hk2-utils/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2</groupId>
diff --git a/hk2/pom.xml b/hk2/pom.xml
index c0c08df..fe51a28 100644
--- a/hk2/pom.xml
+++ b/hk2/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2</artifactId>
diff --git a/javadocs/pom.xml b/javadocs/pom.xml
index eb4799e..b7de4fc 100644
--- a/javadocs/pom.xml
+++ b/javadocs/pom.xml
@@ -22,7 +22,11 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
+<<<<<<< HEAD
+        <version>3.1.1</version>
+=======
         <version>4.0.0-M3</version>
+>>>>>>> refs/heads/4.0.0-M3
     </parent>
     <artifactId>hk2-javadocs</artifactId>
     <name>HK2 Javadocs</name>
diff --git a/maven-plugins/consolidatedbundle-maven-plugin/pom.xml b/maven-plugins/consolidatedbundle-maven-plugin/pom.xml
index 6128123..e10d585 100644
--- a/maven-plugins/consolidatedbundle-maven-plugin/pom.xml
+++ b/maven-plugins/consolidatedbundle-maven-plugin/pom.xml
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>maven-plugins</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>consolidatedbundle-maven-plugin</artifactId>
diff --git a/maven-plugins/hk2-inhabitant-generator/pom.xml b/maven-plugins/hk2-inhabitant-generator/pom.xml
index b37ce09..6f59db8 100644
--- a/maven-plugins/hk2-inhabitant-generator/pom.xml
+++ b/maven-plugins/hk2-inhabitant-generator/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>maven-plugins</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-inhabitant-generator</artifactId>
diff --git a/maven-plugins/osgiversion-maven-plugin/pom.xml b/maven-plugins/osgiversion-maven-plugin/pom.xml
index 96af82d..775838f 100644
--- a/maven-plugins/osgiversion-maven-plugin/pom.xml
+++ b/maven-plugins/osgiversion-maven-plugin/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>maven-plugins</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>osgiversion-maven-plugin</artifactId>
diff --git a/maven-plugins/pom.xml b/maven-plugins/pom.xml
index d00e9d8..85daf05 100644
--- a/maven-plugins/pom.xml
+++ b/maven-plugins/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>maven-plugins</artifactId>
@@ -53,7 +53,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-release-plugin</artifactId>
-                    <version>3.1.0</version>
+                    <version>3.3.1</version>
                     <configuration>
                         <tagNameFormat>maven-plugins-@{project.version}</tagNameFormat>
                     </configuration>
@@ -61,7 +61,7 @@
                         <dependency>
                             <groupId>org.apache.maven.scm</groupId>
                             <artifactId>maven-scm-provider-gitexe</artifactId>
-                            <version>2.1.0</version>
+                            <version>2.2.1</version>
                         </dependency>
                     </dependencies>
                 </plugin>
diff --git a/osgi/adapter-tests/contract-bundle/pom.xml b/osgi/adapter-tests/contract-bundle/pom.xml
index d23615e..e5cf314 100644
--- a/osgi/adapter-tests/contract-bundle/pom.xml
+++ b/osgi/adapter-tests/contract-bundle/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>osgi-adapter-tests-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>contract-bundle</artifactId>
diff --git a/osgi/adapter-tests/faux-sdp-bundle/pom.xml b/osgi/adapter-tests/faux-sdp-bundle/pom.xml
index 114cdcf..345db37 100644
--- a/osgi/adapter-tests/faux-sdp-bundle/pom.xml
+++ b/osgi/adapter-tests/faux-sdp-bundle/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>osgi-adapter-tests-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>faux-sdp-bundle</artifactId>
diff --git a/osgi/adapter-tests/no-hk2-bundle/pom.xml b/osgi/adapter-tests/no-hk2-bundle/pom.xml
index a79bc55..0a41f0a 100644
--- a/osgi/adapter-tests/no-hk2-bundle/pom.xml
+++ b/osgi/adapter-tests/no-hk2-bundle/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>osgi-adapter-tests-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>no-hk2-bundle</artifactId>
diff --git a/osgi/adapter-tests/osgi-adapter-test/pom.xml b/osgi/adapter-tests/osgi-adapter-test/pom.xml
index 1ebe01a..f23f45e 100644
--- a/osgi/adapter-tests/osgi-adapter-test/pom.xml
+++ b/osgi/adapter-tests/osgi-adapter-test/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>osgi-adapter-tests-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
     <groupId>org.glassfish.hk2</groupId>
     <artifactId>osgi-adapter-test</artifactId>
diff --git a/osgi/adapter-tests/pom.xml b/osgi/adapter-tests/pom.xml
index e4cbd24..07c7244 100644
--- a/osgi/adapter-tests/pom.xml
+++ b/osgi/adapter-tests/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>osgi</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2</groupId>
diff --git a/osgi/adapter-tests/sdp-management-bundle/pom.xml b/osgi/adapter-tests/sdp-management-bundle/pom.xml
index 978d244..7561014 100644
--- a/osgi/adapter-tests/sdp-management-bundle/pom.xml
+++ b/osgi/adapter-tests/sdp-management-bundle/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>osgi-adapter-tests-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>sdp-management-bundle</artifactId>
diff --git a/osgi/adapter-tests/test-module-startup/pom.xml b/osgi/adapter-tests/test-module-startup/pom.xml
index e986e0b..afeb065 100644
--- a/osgi/adapter-tests/test-module-startup/pom.xml
+++ b/osgi/adapter-tests/test-module-startup/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>osgi-adapter-tests-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>test-module-startup</artifactId>
diff --git a/osgi/adapter/pom.xml b/osgi/adapter/pom.xml
index 83adef1..90017f0 100644
--- a/osgi/adapter/pom.xml
+++ b/osgi/adapter/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>osgi</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>osgi-adapter</artifactId>
diff --git a/osgi/pom.xml b/osgi/pom.xml
index ae41048..7f40aa9 100644
--- a/osgi/pom.xml
+++ b/osgi/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>osgi</artifactId>
diff --git a/pom.xml b/pom.xml
index acf43c1..3676d11 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-    Copyright (c) 2022, 2026 Contributors to Eclipse Foundation. All rights reserved.
+    Copyright (c) 2022, 2026 Contributors to Eclipse Foundation.
     Copyright (c) 2020, 2021 Payara Services Ltd.
     Copyright (c) 2010, 2020 Oracle and/or its affiliates. All rights reserved.
 
@@ -144,7 +144,7 @@
         <mvn.version>3.2.5</mvn.version>
         <project.build.outputTimestamp>2023-10-04T08:38:05Z</project.build.outputTimestamp>
 
-        <jakarta.activation.version>2.1.3</jakarta.activation.version>
+        <jakarta.activation.version>2.1.4</jakarta.activation.version>
         <jakarta.annotation.version>3.0.0-M1</jakarta.annotation.version>
         <jakarta.enterprise.cdi-api.version>4.1.0</jakarta.enterprise.cdi-api.version>
         <jakarta.servlet.version>6.1.0</jakarta.servlet.version>
@@ -153,32 +153,32 @@
         <jakarta.ws.rs.version>4.0.0</jakarta.ws.rs.version>
         <jakarta.el.version>6.0.0</jakarta.el.version>
 
-        <parsson.version>1.1.6</parsson.version>
-        <jaxb-api.version>4.0.2</jaxb-api.version>
-        <jaxb-runtime.version>4.0.5</jaxb-runtime.version>
-        <hibernate-validator.version>8.0.1.Final</hibernate-validator.version>
+        <parsson.version>1.1.7</parsson.version>
+        <jaxb-api.version>4.0.5</jaxb-api.version>
+        <jaxb-runtime.version>4.0.6</jaxb-runtime.version>
+        <hibernate-validator.version>8.0.3.Final</hibernate-validator.version>
 
         <glassfish.jakarta.el.version>4.0.2</glassfish.jakarta.el.version>
 
         <jtype.version>0.1.3</jtype.version>
         <javassist.version>3.30.2-GA</javassist.version>
         <junit.version>4.13.2</junit.version>
-        <asm.version>9.7</asm.version>
+        <asm.version>9.9.1</asm.version>
         <woodstox.version>4.1.2</woodstox.version>
         <stax-api.version>1.0-2</stax-api.version>
         <aopalliance.version>1.0</aopalliance.version>
-        <testng.version>7.10.2</testng.version>
-        <assertj.version>3.26.0</assertj.version>
-        <pax-exam-version>4.13.5</pax-exam-version>
+        <testng.version>7.12.2</testng.version>
+        <assertj.version>3.27.7</assertj.version>
+        <pax-exam-version>4.14.0</pax-exam-version>
         <jakarta-inject.version>2.0.1</jakarta-inject.version>
-        <org.jboss.logging.version>3.6.0.Final</org.jboss.logging.version>
-        <jersey.version>3.1.7</jersey.version>
+        <org.jboss.logging.version>3.6.2.Final</org.jboss.logging.version>
+        <jersey.version>3.1.11</jersey.version>
         <grizzly.version>4.0.2</grizzly.version>
         <hamcrest.version>1.3</hamcrest.version>
-        <classmate.version>1.7.0</classmate.version>
+        <classmate.version>1.7.3</classmate.version>
         <springcontext.version>6.1.10</springcontext.version>
         <guice.version>7.0.0</guice.version>
-        <protobuf.version>3.25.3</protobuf.version>
+        <protobuf.version>3.25.8</protobuf.version>
 
         <legal.doc.source>${maven.multiModuleProjectDirectory}/</legal.doc.source>
 
@@ -235,13 +235,13 @@
             <dependency>
                 <groupId>org.apache.maven</groupId>
                 <artifactId>maven-plugin-api</artifactId>
-                <version>3.9.8</version>
+                <version>3.9.12</version>
                 <scope>provided</scope>
             </dependency>
             <dependency>
                 <groupId>org.apache.maven</groupId>
                 <artifactId>maven-core</artifactId>
-                <version>3.9.8</version>
+                <version>3.9.12</version>
                 <scope>provided</scope>
             </dependency>
             <dependency>
@@ -280,22 +280,22 @@
                 <groupId>org.glassfish.hk2</groupId>
                 <artifactId>osgi-resource-locator</artifactId>
                 <!-- Unfortunately we use the same coordinates as old Oracle, but versioning started from 1.0.0 -->
-                <version>1.0.3</version>
+                <version>1.0.4</version>
             </dependency>
             <dependency>
                 <groupId>org.apache.ant</groupId>
                 <artifactId>ant</artifactId>
-                <version>1.10.14</version>
+                <version>1.10.15</version>
             </dependency>
             <dependency>
                 <groupId>org.apache.maven</groupId>
                 <artifactId>maven-artifact</artifactId>
-                <version>3.9.8</version>
+                <version>3.9.12</version>
             </dependency>
             <dependency>
                 <groupId>org.apache.maven</groupId>
                 <artifactId>maven-archiver</artifactId>
-                <version>3.6.2</version>
+                <version>3.6.6</version>
             </dependency>
             <dependency>
                 <groupId>org.testng</groupId>
@@ -382,7 +382,7 @@
             <dependency>
                 <groupId>org.ops4j.pax.url</groupId>
                 <artifactId>pax-url-aether</artifactId>
-                <version>2.6.14</version>
+                <version>2.6.17</version>
             </dependency>
             <dependency>
                 <groupId>org.apache.felix</groupId>
@@ -398,7 +398,7 @@
                 <groupId>org.ops4j.pax.logging</groupId>
                 <artifactId>pax-logging-api</artifactId>
                 <!-- Newer versions are broken, please try osgi-adapter-test before upgrade! -->
-                <version>1.11.17</version>
+                <version>1.12.15</version>
             </dependency>
             <dependency>
                 <groupId>org.springframework</groupId>
@@ -468,7 +468,7 @@
             <dependency>
                 <groupId>org.easymock</groupId>
                 <artifactId>easymock</artifactId>
-                <version>5.3.0</version>
+                <version>5.6.0</version>
             </dependency>
             <dependency>
                 <groupId>jakarta.validation</groupId>
@@ -493,7 +493,7 @@
             <dependency>
                 <groupId>org.apache.commons</groupId>
                 <artifactId>commons-lang3</artifactId>
-                <version>3.14.0</version>
+                <version>3.20.0</version>
             </dependency>
             <dependency>
                 <groupId>org.glassfish.jersey.containers</groupId>
@@ -577,7 +577,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-javadoc-plugin</artifactId>
-                    <version>3.7.0</version>
+                    <version>3.12.0</version>
                     <configuration>
                         <doclint>none</doclint>
                     </configuration>
@@ -585,7 +585,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-enforcer-plugin</artifactId>
-                    <version>3.5.0</version>
+                    <version>3.6.2</version>
                 </plugin>
                 <plugin>
                     <groupId>com.googlecode.maven-download-plugin</groupId>
@@ -600,7 +600,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-surefire-plugin</artifactId>
-                    <version>3.3.0</version>
+                    <version>3.5.5</version>
                 </plugin>
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
@@ -610,17 +610,17 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-compiler-plugin</artifactId>
-                    <version>3.13.0</version>
+                    <version>3.15.0</version>
                 </plugin>
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-jar-plugin</artifactId>
-                    <version>3.4.2</version>
+                    <version>3.5.0</version>
                 </plugin>
                 <plugin>
                     <groupId>org.apache.felix</groupId>
                     <artifactId>maven-bundle-plugin</artifactId>
-                    <version>5.1.9</version>
+                    <version>6.0.2</version>
                     <configuration>
                         <instructions>
                             <niceManifest>true</niceManifest>
@@ -631,12 +631,12 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-plugin-plugin</artifactId>
-                    <version>3.13.1</version>
+                    <version>3.15.2</version>
                 </plugin>
                 <plugin>
                     <groupId>org.codehaus.mojo</groupId>
                     <artifactId>build-helper-maven-plugin</artifactId>
-                    <version>3.6.0</version>
+                    <version>3.6.1</version>
                 </plugin>
                 <plugin>
                     <groupId>org.glassfish.hk2</groupId>
@@ -649,12 +649,12 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-antrun-plugin</artifactId>
-                    <version>3.1.0</version>
+                    <version>3.2.0</version>
                 </plugin>
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-dependency-plugin</artifactId>
-                    <version>3.7.1</version>
+                    <version>3.10.0</version>
                 </plugin>
                 <plugin>
                     <groupId>org.glassfish.hk2</groupId>
@@ -677,12 +677,12 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-shade-plugin</artifactId>
-                    <version>3.6.0</version>
+                    <version>3.6.1</version>
                 </plugin>
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-deploy-plugin</artifactId>
-                    <version>3.1.2</version>
+                    <version>3.1.4</version>
                     <configuration>
                         <retryFailedDeploymentCount>10</retryFailedDeploymentCount>
                     </configuration>
@@ -690,7 +690,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-source-plugin</artifactId>
-                    <version>3.3.1</version>
+                    <version>3.4.0</version>
                     <configuration>
                       <includePom>true</includePom>
                     </configuration>
@@ -698,7 +698,7 @@
                 <plugin>
                   <groupId>org.apache.maven.plugins</groupId>
                   <artifactId>maven-site-plugin</artifactId>
-                  <version>3.12.1</version>
+                  <version>3.21.0</version>
                   <configuration>
                         <skip>true</skip>
                         <skipDeploy>true</skipDeploy>
@@ -707,7 +707,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-release-plugin</artifactId>
-                    <version>3.1.0</version>
+                    <version>3.3.1</version>
                     <configuration>
                         <mavenExecutorId>forked-path</mavenExecutorId>
                         <useReleaseProfile>false</useReleaseProfile>
@@ -720,7 +720,7 @@
                         <dependency>
                             <groupId>org.apache.maven.scm</groupId>
                             <artifactId>maven-scm-provider-gitexe</artifactId>
-                            <version>2.1.0</version>
+                            <version>2.2.1</version>
                         </dependency>
                     </dependencies>
                 </plugin>
@@ -759,7 +759,7 @@
                 </plugin>
                 <plugin>
                     <artifactId>maven-install-plugin</artifactId>
-                    <version>3.1.2</version>
+                    <version>3.1.4</version>
                 </plugin>
             </plugins>
         </pluginManagement>
@@ -777,6 +777,7 @@
                 <artifactId>maven-compiler-plugin</artifactId>
                 <configuration>
                     <release>11</release>
+                    <compilerArgument>-proc:full</compilerArgument>
                 </configuration>
             </plugin>
             <plugin>
@@ -876,6 +877,16 @@
 
     <profiles>
         <profile>
+            <id>securitymanager</id>
+            <activation>
+                <jdk>(,23]</jdk>
+            </activation>
+            <properties>
+                <activate.securitymanager>-Djava.security.manager</activate.securitymanager>
+            </properties>
+        </profile>
+    
+        <profile>
             <id>jacoco</id>
             <build>
                 <plugins>
@@ -896,14 +907,14 @@
                             <dependency>
                                 <groupId>org.jacoco</groupId>
                                 <artifactId>jacoco-maven-plugin</artifactId>
-                                <version>0.8.12</version>
+                                <version>0.8.14</version>
                             </dependency>
                         </dependencies>
                     </plugin>
                     <plugin>
                         <groupId>org.jacoco</groupId>
                         <artifactId>jacoco-maven-plugin</artifactId>
-                        <version>0.8.12</version>
+                        <version>0.8.14</version>
                         <executions>
                             <!-- Prepares the property pointing to the JaCoCo runtime agent which
                                  is passed as VM argument when Maven the Surefire plugin is executed. -->
@@ -940,4 +951,4 @@
             </build>
         </profile>
     </profiles>
-</project>
+</project>
\ No newline at end of file
diff --git a/spring-bridge/pom.xml b/spring-bridge/pom.xml
index 855d557..4322f82 100644
--- a/spring-bridge/pom.xml
+++ b/spring-bridge/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.1.2-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2</groupId>