diff --git a/bom/pom.xml b/bom/pom.xml
index be0d0b6..20460a9 100644
--- a/bom/pom.xml
+++ b/bom/pom.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
+    Copyright (c) 2022, 2026 Contributors to Eclipse Foundation.
     Copyright (c) 2013, 2020 Oracle and/or its affiliates. All rights reserved.
     COpyright (c) 2020 Payara Services Ltd.
 
@@ -30,7 +31,7 @@
 
     <groupId>org.glassfish.hk2</groupId>
     <artifactId>hk2-bom</artifactId>
-    <version>3.1.2-SNAPSHOT</version>
+    <version>4.0.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>HK2 Bom Pom</name>
@@ -43,8 +44,8 @@
     <properties>
         <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>
+        <jakarta-annotation.version>3.0.0</jakarta-annotation.version>
+        <project.build.outputTimestamp>2025-04-09T08:38:05Z</project.build.outputTimestamp>
     </properties>
 
     <dependencyManagement>
diff --git a/class-model/pom.xml b/class-model/pom.xml
index abb0fa8..b1e6601 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2</groupId>
diff --git a/examples/caching/pom.xml b/examples/caching/pom.xml
index 0f97c8b..15a108b 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>caching-aop-example</artifactId>
diff --git a/examples/caching/runner/pom.xml b/examples/caching/runner/pom.xml
index 81e4489..2be0719 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>caching-aop-example-runner</artifactId>
diff --git a/examples/caching/system/pom.xml b/examples/caching/system/pom.xml
index e4902c4..697d037 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>caching-aop-example-system</artifactId>
diff --git a/examples/configuration/pom.xml b/examples/configuration/pom.xml
index dec6419..bc766a0 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>configuration-examples</artifactId>
diff --git a/examples/configuration/webserver/pom.xml b/examples/configuration/webserver/pom.xml
index 1d012a6..97682db 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>webserver-configuration-example</artifactId>
diff --git a/examples/configuration/xml/pom.xml b/examples/configuration/xml/pom.xml
index 9010d0a..e3ba210 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>xml-configuration-example</artifactId>
diff --git a/examples/custom-resolver/pom.xml b/examples/custom-resolver/pom.xml
index c08468c..cc703c0 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>custom-resolver-example</artifactId>
diff --git a/examples/events/pom.xml b/examples/events/pom.xml
index fab1201..faf0784 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>event-examples</artifactId>
diff --git a/examples/events/threaded/pom.xml b/examples/events/threaded/pom.xml
index c4dd5b5..a14e62b 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>threading-event-example</artifactId>
diff --git a/examples/operations/pom.xml b/examples/operations/pom.xml
index 0d6a7be..760339a 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>operations-example</artifactId>
diff --git a/examples/pom.xml b/examples/pom.xml
index dadf83b..8584384 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>examples</artifactId>
diff --git a/examples/security-lockdown/alice/pom.xml b/examples/security-lockdown/alice/pom.xml
index eb8febc..6b27d82 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 4cf5126..6a90413 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>security-lockdown-example-mallory</artifactId>
diff --git a/examples/security-lockdown/pom.xml b/examples/security-lockdown/pom.xml
index 85a6e1f..9447b19 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 301fc68..7a667ab 100644
--- a/examples/security-lockdown/runner/pom.xml
+++ b/examples/security-lockdown/runner/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>security-lockdown-example</artifactId>
-        <version>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>security-lockdown-example-runner</artifactId>
diff --git a/examples/security-lockdown/system/pom.xml b/examples/security-lockdown/system/pom.xml
index 7efbb5d..0475739 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>security-lockdown-example-system</artifactId>
diff --git a/external/aopalliance/pom.xml b/external/aopalliance/pom.xml
index b7d1682..5c958c0 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2.external</groupId>
diff --git a/external/pom.xml b/external/pom.xml
index 31e4b66..53ec194 100644
--- a/external/pom.xml
+++ b/external/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>external</artifactId>
diff --git a/guice-bridge/pom.xml b/guice-bridge/pom.xml
index 09a91c5..a94b493 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2</groupId>
diff --git a/hk2-api/pom.xml b/hk2-api/pom.xml
index e236e6b..e3cf9d7 100644
--- a/hk2-api/pom.xml
+++ b/hk2-api/pom.xml
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2</groupId>
diff --git a/hk2-configuration/hk2-integration/pom.xml b/hk2-configuration/hk2-integration/pom.xml
index 981b488..26ffe23 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-configuration-integration</artifactId>
diff --git a/hk2-configuration/manager/pom.xml b/hk2-configuration/manager/pom.xml
index 03e0052..dbfb144 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 cf57256..68a5333 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 9a8fbe9..08ef968 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 b57caa7..1c8d2bc 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 c469b19..64ff14b 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-xml</artifactId>
diff --git a/hk2-configuration/persistence/hk2-xml/pom.xml b/hk2-configuration/persistence/hk2-xml/pom.xml
index 84448db..34c7104 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 38a864b..58392ac 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 c1b35b9..c6ee736 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-xml-test</artifactId>
diff --git a/hk2-configuration/persistence/pom.xml b/hk2-configuration/persistence/pom.xml
index 1ca69e2..a8fc9e4 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 0736985..71492d6 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-property-file</artifactId>
diff --git a/hk2-configuration/pom.xml b/hk2-configuration/pom.xml
index 07a302e..5d40ffa 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-configuration</artifactId>
diff --git a/hk2-core/pom.xml b/hk2-core/pom.xml
index d45a239..d85f31a 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-core</artifactId>
diff --git a/hk2-extras/pom.xml b/hk2-extras/pom.xml
index bd4043e..e47fab0 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2</groupId>
diff --git a/hk2-jmx/pom.xml b/hk2-jmx/pom.xml
index 9029593..49a5c2c 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2</groupId>
diff --git a/hk2-locator/pom.xml b/hk2-locator/pom.xml
index fd492dc..1bccc4b 100644
--- a/hk2-locator/pom.xml
+++ b/hk2-locator/pom.xml
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-locator</artifactId>
diff --git a/hk2-metadata-generator/main/pom.xml b/hk2-metadata-generator/main/pom.xml
index f04c802..68ba85a 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2</groupId>
diff --git a/hk2-metadata-generator/pom.xml b/hk2-metadata-generator/pom.xml
index e35c3f7..a0b10e6 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 0570c19..683be62 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2</groupId>
diff --git a/hk2-runlevel/pom.xml b/hk2-runlevel/pom.xml
index cb028f4..9a88730 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-runlevel</artifactId>
diff --git a/hk2-testing/ant/pom.xml b/hk2-testing/ant/pom.xml
index 5b69364..7387b56 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/hk2-testing/collections/pom.xml b/hk2-testing/collections/pom.xml
index f8a1cd6..f5907e5 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 8c0e674..fab6d9e 100644
--- a/hk2-testing/di-tck/pom.xml
+++ b/hk2-testing/di-tck/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-testing</artifactId>
-        <version>3.1.1</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-di-tck-runner</artifactId>
diff --git a/hk2-testing/hk2-junitrunner/pom.xml b/hk2-testing/hk2-junitrunner/pom.xml
index fe3791a..5e05c49 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 6917064..d23b435 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 e664ef2..dc9188b 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 7de7a37..f604426 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/hk2-testing/hk2-mockito/pom.xml b/hk2-testing/hk2-mockito/pom.xml
index b2c3dfc..aa404b4 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-mockito</artifactId>
diff --git a/hk2-testing/hk2-runlevel-extras/pom.xml b/hk2-testing/hk2-runlevel-extras/pom.xml
index 31f248d..149851d 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/hk2-testing/hk2-testng/pom.xml b/hk2-testing/hk2-testng/pom.xml
index 748be54..5f47e77 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/hk2-testing/interceptor-events/pom.xml b/hk2-testing/interceptor-events/pom.xml
index fd2b971..0555ef5 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 2d99edc..43c0c3b 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 05ae42d..773e470 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
         <relativePath>../../../pom.xml</relativePath>
     </parent>
 
diff --git a/hk2-testing/jersey/pom.xml b/hk2-testing/jersey/pom.xml
index 6941770..9bb9aee 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
diff --git a/hk2-testing/pom.xml b/hk2-testing/pom.xml
index 914e913..b6edea6 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2-testing</artifactId>
diff --git a/hk2-utils/pom.xml b/hk2-utils/pom.xml
index eb1d2f5..3c4270f 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2</groupId>
diff --git a/hk2/pom.xml b/hk2/pom.xml
index fe51a28..c0c08df 100644
--- a/hk2/pom.xml
+++ b/hk2/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>hk2</artifactId>
diff --git a/javadocs/pom.xml b/javadocs/pom.xml
index 998f228..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 e10d585..6128123 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 6f59db8..b37ce09 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 775838f..96af82d 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>osgiversion-maven-plugin</artifactId>
diff --git a/maven-plugins/pom.xml b/maven-plugins/pom.xml
index 85daf05..bb6d2aa 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>maven-plugins</artifactId>
diff --git a/osgi/adapter-tests/contract-bundle/pom.xml b/osgi/adapter-tests/contract-bundle/pom.xml
index e5cf314..d23615e 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 345db37..114cdcf 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 0a41f0a..a79bc55 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 f23f45e..1ebe01a 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 07c7244..e4cbd24 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 7561014..978d244 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-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 afeb065..e986e0b 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>test-module-startup</artifactId>
diff --git a/osgi/adapter/pom.xml b/osgi/adapter/pom.xml
index 90017f0..83adef1 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>osgi-adapter</artifactId>
diff --git a/osgi/adapter/src/main/java/org/jvnet/hk2/osgiadapter/AbstractOSGiModulesRegistryImpl.java b/osgi/adapter/src/main/java/org/jvnet/hk2/osgiadapter/AbstractOSGiModulesRegistryImpl.java
index 32f7e52..5ffaa4e 100755
--- a/osgi/adapter/src/main/java/org/jvnet/hk2/osgiadapter/AbstractOSGiModulesRegistryImpl.java
+++ b/osgi/adapter/src/main/java/org/jvnet/hk2/osgiadapter/AbstractOSGiModulesRegistryImpl.java
@@ -48,6 +48,7 @@
      * OSGi BundleContext - used to install/uninstall, start/stop bundles
      */
     BundleContext bctx;
+
     protected PackageAdmin pa;
     private Map<ModuleChangeListener, BundleListener> moduleChangeListeners = new HashMap<>();
     private Map<ModuleLifecycleListener, BundleListener> moduleLifecycleListeners = new HashMap<>();
@@ -60,6 +61,10 @@
         pa = PackageAdmin.class.cast(bctx.getService(ref));
     }
 
+    public BundleContext getBundleContext() {
+        return bctx;
+    }
+
     @Override
     public void shutdown() {
         modules.clear();
@@ -108,7 +113,7 @@
 
             DynamicConfiguration dcs = createDynamicConfiguration(serviceLocator);
             for (Descriptor descriptor : descriptors) {
-                
+
                 DescriptorImpl di = (descriptor instanceof DescriptorImpl) ? (DescriptorImpl) descriptor : new DescriptorImpl(descriptor) ;
 
                 // set the hk2loader
@@ -290,6 +295,7 @@
 
     public void addModuleChangeListener(final ModuleChangeListener listener, final OSGiModuleImpl module) {
         BundleListener bundleListener = new BundleListener() {
+            @Override
             public void bundleChanged(BundleEvent event) {
                 if ((event.getBundle() == module.getBundle()) &&
                         ((event.getType() & BundleEvent.UPDATED) == BundleEvent.UPDATED)) {
@@ -314,6 +320,7 @@
     public void register(final ModuleLifecycleListener listener) {
         // This is purposefully made an asynchronous bundle listener
         BundleListener bundleListener = new BundleListener() {
+            @Override
             public void bundleChanged(BundleEvent event) {
                 switch (event.getType()) {
                     case BundleEvent.INSTALLED:
@@ -349,47 +356,47 @@
     /*package*/ HK2Module getModule(Bundle bundle) {
         return modules.get(new OSGiModuleId(bundle));
     }
-    
+
     @Override
     public void remove(HK2Module module) {
         super.remove(module);
-        
+
         if (!(module instanceof OSGiModuleImpl)) {
             return;
         }
-        
+
         OSGiModuleImpl oModule = (OSGiModuleImpl) module;
         Bundle bundle = oModule.getBundle();
-        
+
         String bsn = bundle.getSymbolicName();
         String version = bundle.getVersion().toString();
-        
+
         Set<ServiceLocator> locators = getAllServiceLocators();
-        
+
         for (ServiceLocator locator : locators) {
             if (!ServiceLocatorState.RUNNING.equals(locator.getState())) continue;
-            
+
             ServiceLocatorUtilities.removeFilter(locator, new RemoveFilter(bsn, version));
         }
     }
-    
+
     private static class RemoveFilter implements Filter {
         private final String bsn;
         private final String version;
-        
+
         private RemoveFilter(String bsn, String version) {
             this.bsn = bsn;
             this.version = version;
         }
-        
+
         private static String getMetadataValue(Descriptor d, String key) {
             Map<String, List<String>> metadata = d.getMetadata();
-            
+
             List<String> values = metadata.get(key);
             if (values == null || values.size() <= 0) {
                 return null;
             }
-            
+
             return values.get(0);
         }
 
@@ -397,12 +404,12 @@
         public boolean matches(Descriptor d) {
             String dBSN = getMetadataValue(d, OsgiPopulatorPostProcessor.BUNDLE_SYMBOLIC_NAME);
             if (dBSN == null || !dBSN.equals(bsn)) return false;
-            
+
             String dVersion = getMetadataValue(d, OsgiPopulatorPostProcessor.BUNDLE_VERSION);
             if (dVersion == null) return false;
-            
+
             return dVersion.equals(version);
         }
-        
+
     }
 }
diff --git a/osgi/adapter/src/main/java/org/jvnet/hk2/osgiadapter/FelixPrettyPrinter.java b/osgi/adapter/src/main/java/org/jvnet/hk2/osgiadapter/FelixPrettyPrinter.java
new file mode 100644
index 0000000..cba598d
--- /dev/null
+++ b/osgi/adapter/src/main/java/org/jvnet/hk2/osgiadapter/FelixPrettyPrinter.java
@@ -0,0 +1,338 @@
+/*
+ * Copyright (c) 2022, 2026 Contributors to the Eclipse Foundation
+ * Copyright (c) 2008, 2021 Oracle and/or its affiliates. All rights reserved.
+ *
+ * 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.jvnet.hk2.osgiadapter;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleException;
+import org.osgi.framework.wiring.BundleRevision;
+import org.osgi.resource.Capability;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.osgi.framework.namespace.PackageNamespace.PACKAGE_NAMESPACE;
+
+/**
+ * Tools for obtaining readable information from the {@link BundleException}
+ */
+public class FelixPrettyPrinter {
+
+    private static final Pattern BUNDLE_PATTERN = Pattern.compile("\\[(\\d+)\\]", Pattern.MULTILINE);
+
+    public static void main(String[] args) {
+        System.out.println(prettyPrintExceptionMessage("org.osgi.framework.BundleException: Unable to resolve org.glassfish.main.web.weld-integration [41](R 41.0): missing requirement [org.glassfish.main.web.weld-integration [41](R 41.0)] osgi.wiring.package; (&(osgi.wiring.package=jakarta.faces.application)(version>=4.1.0)(!(version>=5.0.0))) [caused by: Unable to resolve org.glassfish.jakarta.faces [291](R 291.0): missing requirement [org.glassfish.jakarta.faces [291](R 291.0)] osgi.wiring.package; (&(osgi.wiring.package=jakarta.enterprise.inject)(version>=4.1.0)(!(version>=5.0.0)))] Unresolved requirements: [[org.glassfish.main.web.weld-integration [41](R 41.0)] osgi.wiring.package; (&(osgi.wiring.package=jakarta.faces.application)(version>=4.1.0)(!(version>=5.0.0)))]"));
+    }
+
+    public static String prettyPrintFelixMessage(BundleContext context, final String bundleMessage) {
+        final String prettyMessage = prettyPrintExceptionMessage(bundleMessage);
+
+        final StringBuilder bundleBuilder = new StringBuilder(1024);
+        bundleBuilder.append(prettyMessage);
+
+        List<Long> bundleIDs = new ArrayList<>();
+
+        bundleIDs.addAll(addExportingBundles(context, prettyMessage, bundleBuilder));
+        bundleIDs.addAll(findBundleIds(prettyMessage));
+
+        if (!bundleIDs.isEmpty()) {
+            for (Long bundleId : bundleIDs) {
+                Bundle bundle = context.getBundle(bundleId);
+                if (bundle != null) {
+                    bundleBuilder.append('[').append(bundleId).append("] \n");
+                    bundleBuilder.append("jar = ").append(bundle.getLocation());
+                    tryAddPomProperties(bundle, bundleBuilder);
+                    bundleBuilder.append('\n');
+                }
+            }
+        }
+
+        return bundleBuilder.toString();
+    }
+
+    /**
+     * Prints exception messages from Felix bundle classloading in a more human readable way.
+     *
+     * @param message - error message from the exception
+     * @return multiline human readable string
+     */
+    public static String prettyPrintExceptionMessage(final String message) {
+        StringBuilder messageBuilder = new StringBuilder(256);
+        try {
+            int index = message.indexOf("Unable to resolve");
+            int indent = 0;
+            while (index >= 0) {
+                printLn(messageBuilder, indent, "Unable to resolve");
+                index += "Unable to resolve".length();
+
+                int index2 = message.indexOf("missing requirement", index);
+                if (index2 >= 0) {
+
+                    indent++;
+
+                    // Module name would be e.g.
+                    // org.glassfish.server.internal.batch.glassfish-batch-connector [103](R 103.0):
+                    String module = message.substring(index, index2);
+
+                    // Remove the duplicate number
+                    if (module.contains("(R")) {
+                        module = module.substring(0, module.indexOf("(R"));
+                    }
+
+                    printLn(messageBuilder, indent, module);
+                    printLn(messageBuilder, indent, "missing requirement");
+
+                    index = index2 + "missing requirement".length();
+
+                    // In GlassFish and in a classloader the search is always for package, so we can
+                    // use that as a delimiter here
+                    int indexPackage = message.indexOf("osgi.wiring.package; ", index);
+                    int indexHost = message.indexOf("osgi.wiring.host; ", index);
+
+                    boolean hasPackage = indexPackage >= 0;
+                    boolean hasHost = indexHost >= 0;
+
+                    boolean isPackage = false;
+                    if (hasPackage && (!hasHost || indexPackage < indexHost)) {
+                        index = indexPackage;
+                        isPackage = true;
+                    } else if (hasHost) {
+                        index = indexHost;
+                    } else {
+                        index = -1;
+                    }
+
+                    if (index >= 0) {
+
+                        indent++;
+
+                        if (isPackage) {
+
+                            // Remainder of input now looks like this:
+
+                            // osgi.wiring.package; (&(osgi.wiring.package=org.glassfish.grizzly)(version>=2.4.0)(!(version>=3.0.0)))
+
+                            // Skip over "osgi.wiring.package; ", we're always searching for this so
+                            // no need to print it.
+                            index += "osgi.wiring.package; ".length();
+
+                            // Now extracting this:
+                            // "(&(osgi.wiring.package=org.glassfish.grizzly)(version>=2.4.0)(!(version>=3.0.0)))"
+                            index2 = message.indexOf(" ", index);
+
+                            String packageAndVersion = null;
+                            if (index2 != -1) {
+                                packageAndVersion = message.substring(index, index2);
+                            } else {
+                                packageAndVersion = message.substring(index);
+                            }
+
+                            // Make it a little less "cramped"
+                            // "(&(package=org.glassfish.grizzly) (version>=2.4.0) (!(version>=3.0.0)))"
+                            packageAndVersion = packageAndVersion.replace("osgi.wiring.package", "package");
+                            packageAndVersion = packageAndVersion.replace(")(", ") (");
+                            packageAndVersion = packageAndVersion.replace("=", " = ");
+                            packageAndVersion = packageAndVersion.replace("> =", " >=");
+                            packageAndVersion = packageAndVersion.replace("< =", " <=");
+
+                            // Remove outer braces
+                            // "&(package=org.glassfish.grizzly) (version>=2.4.0) (!(version>=3.0.0))"
+                            if (packageAndVersion.startsWith("(")) {
+                                packageAndVersion = packageAndVersion.substring(1);
+                            }
+                            if (packageAndVersion.endsWith(")")) {
+                                packageAndVersion = packageAndVersion.substring(0, packageAndVersion.length() - 1);
+                            }
+
+                            printLn(messageBuilder, indent, packageAndVersion);
+                        } else {
+
+                            // Remainder of input now looks like this:
+
+                            // osgi.wiring.host; (&(osgi.wiring.host=org.hibernate.validator)(bundle-version>=0.0.0)
+
+                            // Skip over "osgi.wiring.host; ", we're already searching for this so
+                            // no need to print it.
+                            index += "osgi.wiring.host; ".length();
+
+                            index2 = message.indexOf("]", index);
+
+                            String remainder = null;
+                            if (index2 != -1) {
+                                remainder = message.substring(index, index2);
+                            } else {
+                                remainder = message.substring(index);
+                            }
+
+                            printLn(messageBuilder, indent, remainder);
+                        }
+
+                        // If there's a "caused by:", print it and increase the indent
+                        index = message.indexOf("caused by: ", index2);
+                        if (index >= 0) {
+
+                            printLn(messageBuilder, indent, "caused by:");
+
+                            indent++;
+                            index += "caused by: ".length();
+                        }
+
+                    }
+                }
+
+                if (index2 == -1) {
+                    index = -1;
+                } else {
+                    index = index2;
+                    index = message.indexOf("Unable to resolve", index);
+                }
+            }
+            return messageBuilder.toString();
+        } catch (Exception e) {
+            // Usually we are processing another exception - if we failed, better return original.
+            return message;
+        }
+    }
+
+    public static String addBundleInfo(Bundle bundle, String prettyMessage) {
+        final StringBuilder bundleBuilder = new StringBuilder(1024);
+        bundleBuilder.append("\n").append(prettyMessage);
+        if (bundle != null) {
+            bundleBuilder.append('[').append(bundle.getBundleId()).append("] \n");
+            bundleBuilder.append("jar = ").append(bundle.getLocation());
+            tryAddPomProperties(bundle, bundleBuilder);
+            bundleBuilder.append('\n');
+        }
+
+        return bundleBuilder.toString();
+    }
+
+    private static List<Long> addExportingBundles(BundleContext context, String prettyMessage, StringBuilder bundleBuilder) {
+        Set<Bundle> exportingBundles = new HashSet<>();
+        List<Long> bundleIDs = new ArrayList<>();
+
+        int lastPackageindex = prettyMessage.lastIndexOf("package = ");
+        if (lastPackageindex != -1) {
+            String lastPackage = prettyMessage.substring(lastPackageindex + "package = ".length(), prettyMessage.indexOf(")", lastPackageindex));
+
+            exportingBundles.addAll(findExporters(context, lastPackage));
+
+            if (exportingBundles.isEmpty()) {
+                bundleBuilder.append("\nNo bundles found to export " + lastPackage + "\n");
+            } else {
+                bundleBuilder.append("\nThe following bundles export \"" + lastPackage + "\"\n");
+                for (Bundle bundle : exportingBundles) {
+                    bundleIDs.add(bundle.getBundleId());
+
+                    bundleBuilder.append(bundle.getSymbolicName())
+                                 .append(" ")
+                                 .append(bundle.getVersion())
+                                 .append(" [")
+                                 .append(bundle.getBundleId())
+                                 .append("]")
+                                 .append("\n")
+                                 ;
+                }
+            }
+            bundleBuilder.append("\n");
+        }
+
+        return bundleIDs;
+    }
+
+    private static List<Bundle> findExporters(BundleContext ctx, String packageName) {
+        List<Bundle> exporters = new ArrayList<>();
+
+        for (Bundle b : ctx.getBundles()) {
+            BundleRevision rev = b.adapt(BundleRevision.class);
+            if (rev == null) {
+                continue;
+            }
+
+            List<Capability> caps = rev.getCapabilities(PACKAGE_NAMESPACE);
+            for (Capability cap : caps) {
+                Map<String, Object> attrs = cap.getAttributes();
+                Object exportedPkg = attrs.get(PACKAGE_NAMESPACE);
+
+                if (packageName.equals(exportedPkg)) {
+                    exporters.add(b);
+                    break; // one match is enough per bundle
+                }
+            }
+        }
+
+        return exporters;
+    }
+
+    private static void tryAddPomProperties(Bundle bundle, StringBuilder bundleBuilder) {
+        Enumeration<URL> entries = bundle.findEntries("META-INF/maven/", "pom.properties", true);
+        if (entries == null) {
+            return;
+        }
+
+        while (entries.hasMoreElements()) {
+            try (BufferedReader reader = new BufferedReader(new InputStreamReader(entries.nextElement().openStream(), UTF_8))) {
+                reader.lines()
+                      .filter(e -> !e.startsWith("#"))
+                      .forEach(e -> bundleBuilder.append('\n').append(e.replace("=", " = ")));
+            } catch (IOException e1) {
+                // Ignore
+            }
+            bundleBuilder.append('\n');
+        }
+    }
+
+
+    /**
+     * @param message - error message from the exception
+     * @return list of bundle ids (are in square brackets in the message)
+     */
+    public static List<Long> findBundleIds(final String message) {
+        if (message == null || message.isEmpty()) {
+            return Collections.emptyList();
+        }
+        Set<Long> bundleIds = new LinkedHashSet<>();
+        Matcher bundlePattern = BUNDLE_PATTERN.matcher(message);
+        while (bundlePattern.find()) {
+            String number = bundlePattern.group(1);
+            bundleIds.add(Long.valueOf(number));
+        }
+        return new ArrayList<>(bundleIds);
+    }
+
+
+    private static void printLn(StringBuilder messageBuilder, int indent, String message) {
+        for (int i = 0; i < (indent * 4); i++) {
+            messageBuilder.append(" ");
+        }
+        messageBuilder.append(message.trim()).append("\n");
+    }
+}
diff --git a/osgi/adapter/src/main/java/org/jvnet/hk2/osgiadapter/OSGiModuleImpl.java b/osgi/adapter/src/main/java/org/jvnet/hk2/osgiadapter/OSGiModuleImpl.java
index ae8b55c..d88addc 100755
--- a/osgi/adapter/src/main/java/org/jvnet/hk2/osgiadapter/OSGiModuleImpl.java
+++ b/osgi/adapter/src/main/java/org/jvnet/hk2/osgiadapter/OSGiModuleImpl.java
@@ -17,15 +17,12 @@
 
 package org.jvnet.hk2.osgiadapter;
 
+import static org.jvnet.hk2.osgiadapter.FelixPrettyPrinter.prettyPrintFelixMessage;
 import static org.jvnet.hk2.osgiadapter.Logger.logger;
 
 import java.io.*;
 import java.net.URI;
 import java.net.URL;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
 import java.util.*;
 import java.util.concurrent.locks.ReentrantLock;
 import java.util.logging.Level;
@@ -177,29 +174,16 @@
                 return;
             }
             try {
-                SecurityManager sm = System.getSecurityManager();
-                if (sm != null) {
-                    try {
-                        AccessController.doPrivileged(new PrivilegedExceptionAction(){
-                            public Object run() throws BundleException
-                            {
-                                startBundle();
-                                return null;
-                            }
-                        });
-                    } catch (PrivilegedActionException e) {
-                        throw (BundleException)e.getException();
-                    }
-                } else {
-                    startBundle();
-                }
+                startBundle();
                 isTransientlyActive = true;
                 if (logger.isLoggable(Level.FINE)) {
                     logger.logp(Level.FINE, "OSGiModuleImpl",
                             "start", "Started bundle {0}", bundle);
                 }
             } catch (BundleException e) {
-                throw new ResolveError("Failed to start "+this,e);
+                throw new ResolveError(
+                        "Failed to start " + this + prettyPrintFelixMessage(registry.getBundleContext(), e.getMessage()),
+                        e);
             }
 
             // TODO(Sahoo): Remove this when hk2-apt generates equivalent BundleActivator
@@ -298,6 +282,7 @@
         }
     }
 
+    @Override
     public void detach() {
         if (bundle.getState() != Bundle.ACTIVE) {
             if (logger.isLoggable(Level.FINER)) {
@@ -400,7 +385,7 @@
 
     /**
      * Parses all the inhabitants descriptors of the given name in this module.
-     * @return 
+     * @return
      */
     List<ActiveDescriptor> parseInhabitants(String name, ServiceLocator serviceLocator, List<PopulatorPostProcessor> populatorPostProcessors) throws IOException, BootException {
 
@@ -414,7 +399,7 @@
             dff = new URLDescriptorFileFinder(entry);
         }
 
-        
+
         if (dff != null) {
 
         	final OSGiModuleImpl module = this;
@@ -426,7 +411,7 @@
             }
     	    this.activeDescriptors = HK2Populator.populate(serviceLocator, dff, allPostProcessors);
         }
-        
+
         return this.activeDescriptors;
     }
 
@@ -434,11 +419,7 @@
      * This method is used as the parent loader of the class loader that we return in {@link #getClassLoader}
      */
     private ClassLoader getParentLoader() {
-        return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
-            public ClassLoader run() {
-                return Bundle.class.getClassLoader();
-            }
-        });
+        return Bundle.class.getClassLoader();
     }
 
     @Override
@@ -457,20 +438,10 @@
         return new ClassLoader(getParentLoader()) {
             private final ReentrantLock lock = new ReentrantLock();
             @Override
-            protected Class<?> loadClass(final String name, boolean resolve) throws ClassNotFoundException {        	
+            protected Class<?> loadClass(final String name, boolean resolve) throws ClassNotFoundException {
                 lock.lock();
                 try {
-                    //doprivileged needed for running with SecurityManager
-                    return AccessController.doPrivileged(new PrivilegedExceptionAction<Class>() {
-                        public Class run() throws ClassNotFoundException {
-                        	
-                        	Class c = bundle.loadClass(name);
-                         
-                            return c;                         
-                        }
-                    });
-                } catch (PrivilegedActionException e) {
-                    throw (ClassNotFoundException)e.getException();
+                    return bundle.loadClass(name);
                 } finally {
                     lock.unlock();
                 }
@@ -480,7 +451,7 @@
             @Override
             public URL getResource(String name) {
                 URL result = bundle.getResource(name);
-                               
+
                 if (result != null) return result;
                 return null;
             }
@@ -589,11 +560,11 @@
                     "] is already associated with bundle [" + this.bundle + "]");
         } else {
             this.bundle = bundle;
-            
+
             logger.logp(Level.INFO, "OSGiModuleImpl", "setBundle", "module [{0}] is now associated with bundle [{1}]",
                     new Object[]{this, bundle});
         }
     }
-    
+
 }
 
diff --git a/osgi/pom.xml b/osgi/pom.xml
index 7f40aa9..ae41048 100644
--- a/osgi/pom.xml
+++ b/osgi/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.glassfish.hk2</groupId>
         <artifactId>hk2-parent</artifactId>
-        <version>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>osgi</artifactId>
diff --git a/pom.xml b/pom.xml
index 8d57aae..7ad5508 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-    Copyright (c) 2022, 2025 Contributors to Eclipse Foundation.
+    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.
 
@@ -31,7 +31,7 @@
 
     <groupId>org.glassfish.hk2</groupId>
     <artifactId>hk2-parent</artifactId>
-    <version>3.1.2-SNAPSHOT</version>
+    <version>4.0.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>GlassFish HK2</name>
@@ -145,17 +145,21 @@
         <project.build.outputTimestamp>2023-10-04T08:38:05Z</project.build.outputTimestamp>
 
         <jakarta.activation.version>2.1.4</jakarta.activation.version>
-        <jakarta.annotation.version>2.1.1</jakarta.annotation.version>
+        <jakarta.annotation.version>3.0.0</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>
         <jakarta.json.version>2.1.3</jakarta.json.version>
+        <jakarta.validation.version>3.1.1</jakarta.validation.version>
+        <jakarta.ws.rs.version>4.0.0</jakarta.ws.rs.version>
+        <jakarta.el.version>6.0.0</jakarta.el.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>
-        <java.net.username>${user.name}</java.net.username>
-        <jakarta.enterprise.cdi-api.version>4.1.0</jakarta.enterprise.cdi-api.version>
-        <hibernate-validator.version>8.0.3.Final</hibernate-validator.version>
-        <jakarta.validation.version>3.1.1</jakarta.validation.version>
+        <hibernate-validator.version>9.1.0.Final</hibernate-validator.version>
+
         <glassfish.jakarta.el.version>4.0.2</glassfish.jakarta.el.version>
-        <jakarta.el.version>5.0.1</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>
@@ -171,10 +175,8 @@
         <jersey.version>3.1.11</jersey.version>
         <grizzly.version>4.0.2</grizzly.version>
         <hamcrest.version>1.3</hamcrest.version>
-        <jakarta.servlet.version>6.0.0</jakarta.servlet.version>
-        <jakarta.ws.rs.version>3.1.0</jakarta.ws.rs.version>
         <classmate.version>1.7.3</classmate.version>
-        <springcontext.version>5.3.39</springcontext.version>
+        <springcontext.version>6.1.10</springcontext.version>
         <guice.version>7.0.0</guice.version>
         <protobuf.version>3.25.8</protobuf.version>
 
@@ -186,8 +188,6 @@
         <release.arguments />
 
         <manifest.location>target/classes/META-INF/MANIFEST.MF</manifest.location>
-        
-        <activate.securitymanager></activate.securitymanager>
     </properties>
 
     <dependencyManagement>
@@ -677,7 +677,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-shade-plugin</artifactId>
-                    <version>3.6.1</version>
+                    <version>3.6.2</version>
                 </plugin>
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
@@ -788,6 +788,7 @@
                         <java.util.logging.config.file>logging.properties</java.util.logging.config.file>
                         <net.bytebuddy.experimental>true</net.bytebuddy.experimental>
                     </systemPropertyVariables>
+                    <rerunFailingTestsCount>3</rerunFailingTestsCount>
                 </configuration>
             </plugin>
             <plugin>
@@ -950,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 4322f82..855d557 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>3.1.2-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.glassfish.hk2</groupId>
