diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6d5e16b2964..1332cd27151 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,12 @@ Semantic Versioning and the changes are simply documented in reverse chronologic
# October 2024
+## com.mbeddr.mpsutil
+
+### Feature
+
+- Adds a caching mechanism for caching the retrieval of 'ILogicalChild' by 'ILogicalChildOwner'
+
## com.mbeddr.mpsutil.ecore
### Fixed
diff --git a/code/languages/com.mbeddr.build/solutions/com.mbeddr.platform.tests.build/models/com.mbeddr.platform.tests.build.mps b/code/languages/com.mbeddr.build/solutions/com.mbeddr.platform.tests.build/models/com.mbeddr.platform.tests.build.mps
index ba239e1dac4..0c365eb2b5f 100644
--- a/code/languages/com.mbeddr.build/solutions/com.mbeddr.platform.tests.build/models/com.mbeddr.platform.tests.build.mps
+++ b/code/languages/com.mbeddr.build/solutions/com.mbeddr.platform.tests.build/models/com.mbeddr.platform.tests.build.mps
@@ -368,6 +368,12 @@
+
+
+
+
+
+
@@ -1527,21 +1533,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1592,6 +1583,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2737,6 +2743,147 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2885,6 +3032,9 @@
+
+
+
diff --git a/code/languages/com.mbeddr.build/solutions/com.mbeddr.platform/models/com/mbeddr/platform/build.mps b/code/languages/com.mbeddr.build/solutions/com.mbeddr.platform/models/com/mbeddr/platform/build.mps
index 914ece6d071..e2ee7654303 100644
--- a/code/languages/com.mbeddr.build/solutions/com.mbeddr.platform/models/com/mbeddr/platform/build.mps
+++ b/code/languages/com.mbeddr.build/solutions/com.mbeddr.platform/models/com/mbeddr/platform/build.mps
@@ -20168,11 +20168,6 @@
-
-
-
-
-
@@ -20211,6 +20206,16 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/code/languages/com.mbeddr.mpsutil/.mps/modules.xml b/code/languages/com.mbeddr.mpsutil/.mps/modules.xml
index 74926eb7f56..33ed59ba987 100644
--- a/code/languages/com.mbeddr.mpsutil/.mps/modules.xml
+++ b/code/languages/com.mbeddr.mpsutil/.mps/modules.xml
@@ -186,6 +186,7 @@
+
diff --git a/code/languages/com.mbeddr.mpsutil/languages/com.mbeddr.mpsutil.logicalChild/com.mbeddr.mpsutil.logicalChild.mpl b/code/languages/com.mbeddr.mpsutil/languages/com.mbeddr.mpsutil.logicalChild/com.mbeddr.mpsutil.logicalChild.mpl
index 6836d446377..472a073b424 100644
--- a/code/languages/com.mbeddr.mpsutil/languages/com.mbeddr.mpsutil.logicalChild/com.mbeddr.mpsutil.logicalChild.mpl
+++ b/code/languages/com.mbeddr.mpsutil/languages/com.mbeddr.mpsutil.logicalChild/com.mbeddr.mpsutil.logicalChild.mpl
@@ -1,7 +1,7 @@
-
+
@@ -13,12 +13,13 @@
- 6ed54515-acc8-4d1e-a16c-9fd6cfe951ea(MPS.Core)
8865b7a8-5271-43d3-884c-6fd1d9cfdd34(MPS.OpenAPI)
+ 6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK)
+ 498d89d2-c2e9-11e2-ad49-6cf049e62fe5(MPS.IDEA)
-
+
@@ -55,6 +56,7 @@
+
diff --git a/code/languages/com.mbeddr.mpsutil/languages/com.mbeddr.mpsutil.logicalChild/models/com.mbeddr.mpsutil.logicalChild.behavior.mps b/code/languages/com.mbeddr.mpsutil/languages/com.mbeddr.mpsutil.logicalChild/models/com.mbeddr.mpsutil.logicalChild.behavior.mps
index f34bd1cb015..08cbfb88132 100644
--- a/code/languages/com.mbeddr.mpsutil/languages/com.mbeddr.mpsutil.logicalChild/models/com.mbeddr.mpsutil.logicalChild.behavior.mps
+++ b/code/languages/com.mbeddr.mpsutil/languages/com.mbeddr.mpsutil.logicalChild/models/com.mbeddr.mpsutil.logicalChild.behavior.mps
@@ -4,15 +4,21 @@
-
+
-
-
+
+
+
+
+
+
+
+
@@ -30,8 +36,16 @@
+
+
+
+
+
+
+
+
@@ -42,26 +56,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -73,6 +108,7 @@
+
@@ -80,23 +116,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -104,6 +162,9 @@
+
+
+
@@ -111,20 +172,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -177,6 +253,14 @@
+
+
+
+
+
+
+
+
@@ -184,8 +268,14 @@
+
+
+
+
+
+
@@ -230,6 +320,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -240,56 +341,33 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
+
+
+
@@ -342,21 +420,30 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
@@ -448,6 +535,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -461,6 +614,7 @@
+
@@ -501,7 +655,6 @@
-
@@ -514,6 +667,769 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/code/languages/com.mbeddr.mpsutil/solutions/com.mbeddr.mpsutil.logicalChild.sandbox.sandbox/models/com.mbeddr.mpsutil.logicalChild.sandbox.sandbox.testbuffer.mps b/code/languages/com.mbeddr.mpsutil/solutions/com.mbeddr.mpsutil.logicalChild.sandbox.sandbox/models/com.mbeddr.mpsutil.logicalChild.sandbox.sandbox.testbuffer.mps
new file mode 100644
index 00000000000..790f1931e98
--- /dev/null
+++ b/code/languages/com.mbeddr.mpsutil/solutions/com.mbeddr.mpsutil.logicalChild.sandbox.sandbox/models/com.mbeddr.mpsutil.logicalChild.sandbox.sandbox.testbuffer.mps
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/code/languages/com.mbeddr.mpsutil/solutions/test.com.mbeddr.mpsutil.logicalChild/models/test.com.mbeddr.mpsutil.logicalChild.test@tests.mps b/code/languages/com.mbeddr.mpsutil/solutions/test.com.mbeddr.mpsutil.logicalChild/models/test.com.mbeddr.mpsutil.logicalChild.test@tests.mps
new file mode 100644
index 00000000000..94510e7afe6
--- /dev/null
+++ b/code/languages/com.mbeddr.mpsutil/solutions/test.com.mbeddr.mpsutil.logicalChild/models/test.com.mbeddr.mpsutil.logicalChild.test@tests.mps
@@ -0,0 +1,1617 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/code/languages/com.mbeddr.mpsutil/solutions/test.com.mbeddr.mpsutil.logicalChild/test.com.mbeddr.mpsutil.logicalChild.msd b/code/languages/com.mbeddr.mpsutil/solutions/test.com.mbeddr.mpsutil.logicalChild/test.com.mbeddr.mpsutil.logicalChild.msd
new file mode 100644
index 00000000000..ddc76a336e4
--- /dev/null
+++ b/code/languages/com.mbeddr.mpsutil/solutions/test.com.mbeddr.mpsutil.logicalChild/test.com.mbeddr.mpsutil.logicalChild.msd
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 286e2375-00e3-4042-b083-84873dd623be(com.mbeddr.mpsutil.logicalChild.sandbox)
+ 6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/subprojects/com.mbeddr/build.gradle b/subprojects/com.mbeddr/build.gradle
index fffe957f701..b8111a8f9db 100755
--- a/subprojects/com.mbeddr/build.gradle
+++ b/subprojects/com.mbeddr/build.gradle
@@ -1,10 +1,16 @@
import de.itemis.mps.gradle.tasks.MpsMigrate
import de.itemis.mps.gradle.tasks.Remigrate
+import de.itemis.mps.gradle.downloadJBR.DownloadJbrForPlatform
plugins {
id 'de.itemis.mps.gradle.common'
}
+apply plugin: 'download-jbr'
+
+downloadJbr {
+ jbrVersion = '17.0.8.1-b1000.32'
+}
// path variables
// If mpsHomeDir is set explicitly, skip the MPS resolution step and use the explicit path (which may be relative from
// the root directory).
@@ -191,7 +197,9 @@ List projectDirectoriesInDependencyOrder = projectsInDependencyOrder.colle
}
tasks.register('migrate', MpsMigrate) {
- dependsOn(':com.mbeddr:platform:generate_platform_languages')
+ dependsOn(':com.mbeddr:platform:generate_platform_languages', 'downloadJbr')
+ javaLauncher = tasks.named('downloadJbr', DownloadJbrForPlatform).flatMap { it.javaLauncher }
+
mpsHome = mpsHomeDir
projectDirectories.from(projectDirectoriesInDependencyOrder)
@@ -203,7 +211,9 @@ tasks.register('migrate', MpsMigrate) {
}
tasks.register('remigrate', Remigrate) {
- dependsOn(':com.mbeddr:platform:generate_platform_languages')
+ dependsOn(':com.mbeddr:platform:generate_platform_languages', 'downloadJbr')
+ javaLauncher = tasks.named('downloadJbr', DownloadJbrForPlatform).flatMap { it.javaLauncher }
+
mpsHome = mpsHomeDir
projectDirectories.from(projectDirectoriesInDependencyOrder)