You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/06/04 13:50:51 UTC

[isis] branch master updated: ISIS-2340: cleaning up ManagedObject class (move utilities) (2)

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 3e45255  ISIS-2340: cleaning up ManagedObject class (move utilities) (2)
3e45255 is described below

commit 3e45255392e3238a96a6b41ffe2a3693afdbee0a
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jun 4 15:50:36 2020 +0200

    ISIS-2340: cleaning up ManagedObject class (move utilities) (2)
---
 ...ctionInvocationFacetForDomainEventAbstract.java |   4 +-
 .../method/ActionDefaultsFacetViaMethod.java       |   3 +-
 .../ActionParameterValidationFacetViaMethod.java   |   3 +-
 .../method/ActionValidationFacetViaMethod.java     |   3 +-
 .../CollectionAccessorFacetViaAccessor.java        |   5 +-
 .../clear/CollectionClearFacetViaAccessor.java     |   3 +-
 .../clear/CollectionClearFacetViaClearMethod.java  |   3 +-
 .../modify/CollectionAddToFacetViaAccessor.java    |   3 +-
 .../modify/CollectionAddToFacetViaMethod.java      |   3 +-
 .../CollectionRemoveFromFacetViaAccessor.java      |   3 +-
 .../modify/CollectionRemoveFromFacetViaMethod.java |   3 +-
 .../CollectionValidateAddToFacetViaMethod.java     |   3 +-
 ...CollectionValidateRemoveFromFacetViaMethod.java |   3 +-
 .../method/DisableForContextFacetViaMethod.java    |   6 +-
 .../method/HideForContextFacetViaMethod.java       |   3 +-
 .../autocomplete/AutoCompleteFacetAbstract.java    |   3 +-
 .../callbacks/CreatedCallbackFacetViaMethod.java   |   3 +-
 .../callbacks/LoadedCallbackFacetViaMethod.java    |   3 +-
 .../callbacks/LoadingCallbackFacetViaMethod.java   |   3 +-
 .../callbacks/PersistedCallbackFacetViaMethod.java |   3 +-
 .../PersistingCallbackFacetViaMethod.java          |   3 +-
 .../callbacks/RemovedCallbackFacetViaMethod.java   |   3 +-
 .../callbacks/RemovingCallbackFacetViaMethod.java  |   3 +-
 .../callbacks/UpdatedCallbackFacetViaMethod.java   |   3 +-
 .../callbacks/UpdatingCallbackFacetViaMethod.java  |   3 +-
 .../choices/ChoicesFacetFromBoundedAbstract.java   |   3 +-
 .../cssclass/method/CssClassFacetMethod.java       |   3 +-
 .../method/DisabledObjectFacetViaMethod.java       |   3 +-
 .../hidden/method/HiddenObjectFacetViaMethod.java  |   3 +-
 .../facets/object/icon/method/IconFacetMethod.java |   3 +-
 .../facets/object/layout/LayoutFacetMethod.java    |   3 +-
 .../title/methods/TitleFacetViaTitleMethod.java    |   3 +-
 .../method/ValidateObjectFacetMethod.java          |   3 +-
 .../ActionParameterAutoCompleteFacetViaMethod.java |   7 +-
 .../method/ActionChoicesFacetViaMethod.java        |   5 +-
 .../ActionParameterChoicesFacetViaMethod.java      |   7 +-
 .../ActionParameterDefaultsFacetViaMethod.java     |   6 +-
 .../ActionParameterDisabledFacetViaMethod.java     |   5 +-
 .../ActionParameterHiddenFacetViaMethod.java       |   5 +-
 .../ActionParameterValidationFacetViaMethod.java   |   5 +-
 .../accessor/PropertyAccessorFacetViaAccessor.java |   5 +-
 .../method/PropertyAutoCompleteFacetMethod.java    |   5 +-
 .../method/PropertyChoicesFacetViaMethod.java      |   5 +-
 .../method/PropertyDefaultFacetViaMethod.java      |   3 +-
 .../clear/PropertyClearFacetViaClearMethod.java    |   3 +-
 .../clear/PropertyClearFacetViaSetterMethod.java   |   3 +-
 ...PropertyInitializationFacetViaSetterMethod.java |   3 +-
 .../modify/PropertySetterFacetViaModifyMethod.java |   3 +-
 .../modify/PropertySetterFacetViaSetterMethod.java |   3 +-
 .../method/PropertyValidateFacetViaMethod.java     |   3 +-
 .../isis/core/metamodel/spec/ManagedObject.java    | 255 --------------------
 .../isis/core/metamodel/spec/ManagedObjects.java   | 258 +++++++++++++++++++++
 .../viewer/wicket/ui/pages/entity/EntityPage.java  |   3 +-
 53 files changed, 375 insertions(+), 322 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index 1caf339..b65b1dc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -366,7 +366,7 @@ implements ImperativeFacet {
 
             val requiredContainerType = method.getReturnType();
             
-            val autofittedObjectContainer = ManagedObject.VisibilityUtil
+            val autofittedObjectContainer = ManagedObjects.VisibilityUtil
                     .visiblePojosAutofit(resultAdapter, interactionInitiatedBy, requiredContainerType); 
 
             if (autofittedObjectContainer != null) {
@@ -379,7 +379,7 @@ implements ImperativeFacet {
             return resultAdapter;
 
         } else {
-            boolean visible = ManagedObject.VisibilityUtil.isVisible(resultAdapter, interactionInitiatedBy);
+            boolean visible = ManagedObjects.VisibilityUtil.isVisible(resultAdapter, interactionInitiatedBy);
             return visible ? resultAdapter : null;
         }
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethod.java
index 452ee48..7e4cc5e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethod.java
@@ -31,6 +31,7 @@ import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInv
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventAbstract;
 import org.apache.isis.core.metamodel.facets.actions.defaults.ActionDefaultsFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class ActionDefaultsFacetViaMethod extends ActionDefaultsFacetAbstract implements ImperativeFacet {
 
@@ -73,7 +74,7 @@ public class ActionDefaultsFacetViaMethod extends ActionDefaultsFacetAbstract im
 
     @Override
     public Object[] getDefaults(final ManagedObject owningAdapter) {
-        return (Object[]) ManagedObject.InvokeUtil.invoke(method, owningAdapter);
+        return (Object[]) ManagedObjects.InvokeUtil.invoke(method, owningAdapter);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionParameterValidationFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionParameterValidationFacetViaMethod.java
index c7365b8..7ffbb95 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionParameterValidationFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionParameterValidationFacetViaMethod.java
@@ -30,6 +30,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.actions.validate.ActionParameterValidationFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class ActionParameterValidationFacetViaMethod extends ActionParameterValidationFacetAbstract implements ImperativeFacet {
 
@@ -60,7 +61,7 @@ public class ActionParameterValidationFacetViaMethod extends ActionParameterVali
 
     @Override
     public String invalidReason(final ManagedObject owningAdapter, final ManagedObject proposedArgumentAdapter) {
-        final Object returnValue = ManagedObject.InvokeUtil.invoke(method, owningAdapter, proposedArgumentAdapter);
+        final Object returnValue = ManagedObjects.InvokeUtil.invoke(method, owningAdapter, proposedArgumentAdapter);
         if(returnValue instanceof String) {
             return (String) returnValue;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethod.java
index 4b86835..e466a9a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethod.java
@@ -31,6 +31,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.actions.validate.ActionValidationFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class ActionValidationFacetViaMethod extends ActionValidationFacetAbstract implements ImperativeFacet {
 
@@ -61,7 +62,7 @@ public class ActionValidationFacetViaMethod extends ActionValidationFacetAbstrac
 
     @Override
     public String invalidReason(final ManagedObject owningAdapter, final Can<ManagedObject> proposedArgumentAdapters) {
-        final Object returnValue = ManagedObject.InvokeUtil.invoke(method, owningAdapter, proposedArgumentAdapters);
+        final Object returnValue = ManagedObjects.InvokeUtil.invoke(method, owningAdapter, proposedArgumentAdapters);
         if(returnValue instanceof String) {
             return (String) returnValue;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
index 3f91789..4d86047 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
@@ -29,6 +29,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 import lombok.val;
@@ -65,7 +66,7 @@ implements ImperativeFacet {
     public Object getProperty(
             final ManagedObject owningAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
-        final Object collectionOrArray = ManagedObject.InvokeUtil.invoke(method, owningAdapter);
+        final Object collectionOrArray = ManagedObjects.InvokeUtil.invoke(method, owningAdapter);
         if(collectionOrArray == null) {
             return null;
         }
@@ -75,7 +76,7 @@ implements ImperativeFacet {
         final boolean filterForVisibility = getConfiguration().getCore().getMetaModel().isFilterVisibility();
         if(filterForVisibility) {
             
-            val autofittedObjectContainer = ManagedObject.VisibilityUtil
+            val autofittedObjectContainer = ManagedObjects.VisibilityUtil
                     .visiblePojosAutofit(collectionAdapter, interactionInitiatedBy, method.getReturnType());
             
             if (autofittedObjectContainer != null) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetViaAccessor.java
index 407e0b0..339de42 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetViaAccessor.java
@@ -29,6 +29,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionClearFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class CollectionClearFacetViaAccessor extends CollectionClearFacetAbstract implements ImperativeFacet {
 
@@ -58,7 +59,7 @@ public class CollectionClearFacetViaAccessor extends CollectionClearFacetAbstrac
 
     @Override
     public void clear(final ManagedObject owningAdapter) {
-        final Collection<?> collection = (Collection<?>) ManagedObject.InvokeUtil.invoke(method, owningAdapter);
+        final Collection<?> collection = (Collection<?>) ManagedObjects.InvokeUtil.invoke(method, owningAdapter);
         collection.clear();
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetViaClearMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetViaClearMethod.java
index c7f14fa..3222402 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetViaClearMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetViaClearMethod.java
@@ -28,6 +28,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionClearFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class CollectionClearFacetViaClearMethod extends CollectionClearFacetAbstract implements ImperativeFacet {
 
@@ -54,7 +55,7 @@ public class CollectionClearFacetViaClearMethod extends CollectionClearFacetAbst
 
     @Override
     public void clear(final ManagedObject owningAdapter) {
-        ManagedObject.InvokeUtil.invoke(method, owningAdapter);
+        ManagedObjects.InvokeUtil.invoke(method, owningAdapter);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToFacetViaAccessor.java
index 4f7d5c3..b953b4f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToFacetViaAccessor.java
@@ -29,6 +29,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class CollectionAddToFacetViaAccessor extends CollectionAddToFacetAbstract implements ImperativeFacet {
 
@@ -59,7 +60,7 @@ public class CollectionAddToFacetViaAccessor extends CollectionAddToFacetAbstrac
             final ManagedObject elementAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
         @SuppressWarnings("unchecked")
-        final Collection<? super Object> collection = (Collection<? super Object>) ManagedObject.InvokeUtil.invoke(method, owningAdapter);
+        final Collection<? super Object> collection = (Collection<? super Object>) ManagedObjects.InvokeUtil.invoke(method, owningAdapter);
         final Object elementPojo = ManagedObject.unwrapSingle(elementAdapter);
         collection.add(elementPojo);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToFacetViaMethod.java
index 958974e..aaef556 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToFacetViaMethod.java
@@ -28,6 +28,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class CollectionAddToFacetViaMethod extends CollectionAddToFacetAbstract implements ImperativeFacet {
 
@@ -58,7 +59,7 @@ public class CollectionAddToFacetViaMethod extends CollectionAddToFacetAbstract
             final ManagedObject elementAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
         
-        ManagedObject.InvokeUtil.invoke(method, owningAdapter, elementAdapter);
+        ManagedObjects.InvokeUtil.invoke(method, owningAdapter, elementAdapter);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionRemoveFromFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionRemoveFromFacetViaAccessor.java
index 326a450..7df316a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionRemoveFromFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionRemoveFromFacetViaAccessor.java
@@ -29,6 +29,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class CollectionRemoveFromFacetViaAccessor extends CollectionRemoveFromFacetAbstract implements ImperativeFacet {
 
@@ -62,7 +63,7 @@ public class CollectionRemoveFromFacetViaAccessor extends CollectionRemoveFromFa
             final InteractionInitiatedBy interactionInitiatedBy) {
         
         @SuppressWarnings("unchecked")
-        final Collection<? super Object> collection = (Collection<? super Object>) ManagedObject.InvokeUtil.invoke(method, owningAdapter);
+        final Collection<? super Object> collection = (Collection<? super Object>) ManagedObjects.InvokeUtil.invoke(method, owningAdapter);
         collection.remove(ManagedObject.unwrapSingle(elementAdapter));
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionRemoveFromFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionRemoveFromFacetViaMethod.java
index cca4d6e..f0b36f6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionRemoveFromFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionRemoveFromFacetViaMethod.java
@@ -28,6 +28,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class CollectionRemoveFromFacetViaMethod extends CollectionRemoveFromFacetAbstract implements ImperativeFacet {
 
@@ -58,7 +59,7 @@ public class CollectionRemoveFromFacetViaMethod extends CollectionRemoveFromFace
             final ManagedObject elementAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
         
-        ManagedObject.InvokeUtil.invoke(method, owningAdapter, elementAdapter);
+        ManagedObjects.InvokeUtil.invoke(method, owningAdapter, elementAdapter);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateAddToFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateAddToFacetViaMethod.java
index e5b3bbe..7d1427b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateAddToFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateAddToFacetViaMethod.java
@@ -29,6 +29,7 @@ import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class CollectionValidateAddToFacetViaMethod extends CollectionValidateAddToFacetAbstract implements ImperativeFacet {
 
@@ -59,7 +60,7 @@ public class CollectionValidateAddToFacetViaMethod extends CollectionValidateAdd
 
     @Override
     public String invalidReason(final ManagedObject owningAdapter, final ManagedObject proposedAdapter) {
-        final Object returnValue = ManagedObject.InvokeUtil.invoke(method, owningAdapter, proposedAdapter);
+        final Object returnValue = ManagedObjects.InvokeUtil.invoke(method, owningAdapter, proposedAdapter);
         if(returnValue instanceof String) {
             return (String) returnValue;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateRemoveFromFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateRemoveFromFacetViaMethod.java
index 309cb63..978287b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateRemoveFromFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateRemoveFromFacetViaMethod.java
@@ -29,6 +29,7 @@ import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class CollectionValidateRemoveFromFacetViaMethod extends CollectionValidateRemoveFromFacetAbstract implements ImperativeFacet {
 
@@ -59,7 +60,7 @@ public class CollectionValidateRemoveFromFacetViaMethod extends CollectionValida
 
     @Override
     public String invalidReason(final ManagedObject owningAdapter, final ManagedObject proposedAdapter) {
-        final Object returnValue = ManagedObject.InvokeUtil.invoke(method, owningAdapter, proposedAdapter);
+        final Object returnValue = ManagedObjects.InvokeUtil.invoke(method, owningAdapter, proposedAdapter);
         if(returnValue instanceof String) {
             return (String) returnValue;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethod.java
index 2b89362..21d9060 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethod.java
@@ -30,6 +30,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class DisableForContextFacetViaMethod 
 extends DisableForContextFacetAbstract 
@@ -41,7 +42,8 @@ implements ImperativeFacet {
 
     public DisableForContextFacetViaMethod(
             final Method method,
-            final TranslationService translationService, final String translationContext,
+            final TranslationService translationService, 
+            final String translationContext,
             final FacetHolder holder) {
         super(holder);
         this.method = method;
@@ -72,7 +74,7 @@ implements ImperativeFacet {
         if (target == null) {
             return null;
         }
-        final Object returnValue = ManagedObject.InvokeUtil.invokeC(method, target);
+        final Object returnValue = ManagedObjects.InvokeUtil.invokeAutofit(method, target);
         if(returnValue instanceof String) {
             return (String) returnValue;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetViaMethod.java
index e780c12..2b8ed0e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetViaMethod.java
@@ -28,6 +28,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class HideForContextFacetViaMethod extends HideForContextFacetAbstract implements ImperativeFacet {
 
@@ -58,7 +59,7 @@ public class HideForContextFacetViaMethod extends HideForContextFacetAbstract im
         if (target == null) {
             return null;
         }
-        final Boolean isHidden = (Boolean) ManagedObject.InvokeUtil.invokeC(method, target);
+        final Boolean isHidden = (Boolean) ManagedObjects.InvokeUtil.invokeAutofit(method, target);
         return isHidden.booleanValue() ? "Hidden" : null;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
index c2388b7..97c8045 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
@@ -32,6 +32,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.param.autocomplete.MinLengthUtil;
 import org.apache.isis.core.metamodel.services.publishing.PublisherDispatchService;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public abstract class AutoCompleteFacetAbstract 
 extends FacetAbstract 
@@ -87,7 +88,7 @@ implements AutoCompleteFacet {
                     }
                 });
 
-        return ManagedObject.VisibilityUtil.streamVisibleAdapters(resultAdapter, interactionInitiatedBy)
+        return ManagedObjects.VisibilityUtil.streamVisibleAdapters(resultAdapter, interactionInitiatedBy)
                 .collect(Can.toCan());
 
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CreatedCallbackFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CreatedCallbackFacetViaMethod.java
index 3c01f31..bff7f3f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CreatedCallbackFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CreatedCallbackFacetViaMethod.java
@@ -28,6 +28,7 @@ import java.util.Map;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class CreatedCallbackFacetViaMethod extends CreatedCallbackFacetAbstract implements ImperativeFacet {
 
@@ -55,7 +56,7 @@ public class CreatedCallbackFacetViaMethod extends CreatedCallbackFacetAbstract
 
     @Override
     public void invoke(final ManagedObject adapter) {
-        ManagedObject.InvokeUtil.invokeAll(methods, adapter);
+        ManagedObjects.InvokeUtil.invokeAll(methods, adapter);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadedCallbackFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadedCallbackFacetViaMethod.java
index 7fa0a44..cc86a03 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadedCallbackFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadedCallbackFacetViaMethod.java
@@ -28,6 +28,7 @@ import java.util.Map;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class LoadedCallbackFacetViaMethod extends LoadedCallbackFacetAbstract implements ImperativeFacet {
 
@@ -55,7 +56,7 @@ public class LoadedCallbackFacetViaMethod extends LoadedCallbackFacetAbstract im
 
     @Override
     public void invoke(final ManagedObject adapter) {
-        ManagedObject.InvokeUtil.invokeAll(methods, adapter);
+        ManagedObjects.InvokeUtil.invokeAll(methods, adapter);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadingCallbackFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadingCallbackFacetViaMethod.java
index ede5b89..099e459 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadingCallbackFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadingCallbackFacetViaMethod.java
@@ -28,6 +28,7 @@ import java.util.Map;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 /**
  * @deprecated - THIS CAN NEVER BE CALLED (BY JDO OBJECTSTORE AT LEAST)
@@ -59,7 +60,7 @@ public class LoadingCallbackFacetViaMethod extends LoadingCallbackFacetAbstract
 
     @Override
     public void invoke(final ManagedObject adapter) {
-        ManagedObject.InvokeUtil.invokeAll(methods, adapter);
+        ManagedObjects.InvokeUtil.invokeAll(methods, adapter);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistedCallbackFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistedCallbackFacetViaMethod.java
index 21f189d..6c6d6f9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistedCallbackFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistedCallbackFacetViaMethod.java
@@ -28,6 +28,7 @@ import java.util.Map;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class PersistedCallbackFacetViaMethod extends PersistedCallbackFacetAbstract implements ImperativeFacet {
 
@@ -55,7 +56,7 @@ public class PersistedCallbackFacetViaMethod extends PersistedCallbackFacetAbstr
 
     @Override
     public void invoke(final ManagedObject adapter) {
-        ManagedObject.InvokeUtil.invokeAll(methods, adapter);
+        ManagedObjects.InvokeUtil.invokeAll(methods, adapter);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistingCallbackFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistingCallbackFacetViaMethod.java
index 89093ff..3969187 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistingCallbackFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistingCallbackFacetViaMethod.java
@@ -28,6 +28,7 @@ import java.util.Map;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class PersistingCallbackFacetViaMethod extends PersistingCallbackFacetAbstract implements ImperativeFacet {
 
@@ -55,7 +56,7 @@ public class PersistingCallbackFacetViaMethod extends PersistingCallbackFacetAbs
 
     @Override
     public void invoke(final ManagedObject adapter) {
-        ManagedObject.InvokeUtil.invokeAll(methods, adapter);
+        ManagedObjects.InvokeUtil.invokeAll(methods, adapter);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovedCallbackFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovedCallbackFacetViaMethod.java
index db58675..42fd572 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovedCallbackFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovedCallbackFacetViaMethod.java
@@ -28,6 +28,7 @@ import java.util.Map;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 /**
  * @deprecated - cannot touch a pojo once deleted
@@ -59,7 +60,7 @@ public class RemovedCallbackFacetViaMethod extends RemovedCallbackFacetAbstract
 
     @Override
     public void invoke(final ManagedObject adapter) {
-        ManagedObject.InvokeUtil.invokeAll(methods, adapter);
+        ManagedObjects.InvokeUtil.invokeAll(methods, adapter);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovingCallbackFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovingCallbackFacetViaMethod.java
index 385ca23..c0ab5cd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovingCallbackFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovingCallbackFacetViaMethod.java
@@ -28,6 +28,7 @@ import java.util.Map;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class RemovingCallbackFacetViaMethod extends RemovingCallbackFacetAbstract implements ImperativeFacet {
 
@@ -55,7 +56,7 @@ public class RemovingCallbackFacetViaMethod extends RemovingCallbackFacetAbstrac
 
     @Override
     public void invoke(final ManagedObject adapter) {
-        ManagedObject.InvokeUtil.invokeAll(methods, adapter);
+        ManagedObjects.InvokeUtil.invokeAll(methods, adapter);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatedCallbackFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatedCallbackFacetViaMethod.java
index b36779e..cd77cc5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatedCallbackFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatedCallbackFacetViaMethod.java
@@ -28,6 +28,7 @@ import java.util.Map;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class UpdatedCallbackFacetViaMethod extends UpdatedCallbackFacetAbstract implements ImperativeFacet {
 
@@ -55,7 +56,7 @@ public class UpdatedCallbackFacetViaMethod extends UpdatedCallbackFacetAbstract
 
     @Override
     public void invoke(final ManagedObject adapter) {
-        ManagedObject.InvokeUtil.invokeAll(methods, adapter);
+        ManagedObjects.InvokeUtil.invokeAll(methods, adapter);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatingCallbackFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatingCallbackFacetViaMethod.java
index 6aa0826..e684e0c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatingCallbackFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatingCallbackFacetViaMethod.java
@@ -28,6 +28,7 @@ import org.apache.isis.core.metamodel.commons.Wormhole;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class UpdatingCallbackFacetViaMethod extends UpdatingCallbackFacetAbstract implements ImperativeFacet {
 
@@ -55,7 +56,7 @@ public class UpdatingCallbackFacetViaMethod extends UpdatingCallbackFacetAbstrac
 
     @Override
     public void invoke(final ManagedObject adapter) {
-        Wormhole.invoke(()->ManagedObject.InvokeUtil.invokeAll(methods, adapter));
+        Wormhole.invoke(()->ManagedObjects.InvokeUtil.invokeAll(methods, adapter));
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
index 8954dd6..d8dfaff 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
@@ -32,6 +32,7 @@ import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 import lombok.val;
@@ -108,7 +109,7 @@ implements ChoicesFacet, DisablingInteractionAdvisor, ValidatingInteractionAdvis
         val repository = context.getRepositoryService();
 
         final Predicate<ManagedObject> visibilityFilter = 
-                objectAdapter -> ManagedObject.VisibilityUtil.isVisible(objectAdapter, interactionInitiatedBy);
+                objectAdapter -> ManagedObjects.VisibilityUtil.isVisible(objectAdapter, interactionInitiatedBy);
 
         val query = new QueryFindAllChoices(getObjectSpecification().getFullIdentifier(), visibilityFilter, 0L, Long.MAX_VALUE);
         return repository.allMatches(query).toArray();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/method/CssClassFacetMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/method/CssClassFacetMethod.java
index 9b5bf63..5965c04 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/method/CssClassFacetMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/method/CssClassFacetMethod.java
@@ -27,6 +27,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class CssClassFacetMethod extends FacetAbstract implements CssClassFacet {
 
@@ -48,7 +49,7 @@ public class CssClassFacetMethod extends FacetAbstract implements CssClassFacet
             return "";
         }
         try {
-            return (String) ManagedObject.InvokeUtil.invoke(method, owningAdapter);
+            return (String) ManagedObjects.InvokeUtil.invoke(method, owningAdapter);
         } catch (final RuntimeException ex) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/disabled/method/DisabledObjectFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/disabled/method/DisabledObjectFacetViaMethod.java
index 93e31e5..e9fcc36 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/disabled/method/DisabledObjectFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/disabled/method/DisabledObjectFacetViaMethod.java
@@ -33,6 +33,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.object.disabled.DisabledObjectFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class DisabledObjectFacetViaMethod extends DisabledObjectFacetAbstract implements ImperativeFacet {
 
@@ -64,7 +65,7 @@ public class DisabledObjectFacetViaMethod extends DisabledObjectFacetAbstract im
     @Override
     public String disabledReason(final ManagedObject owningAdapter, final Identifier identifier) {
         final Type type = identifier.getType();
-        final Object returnValue = ManagedObject.InvokeUtil.invoke(method, owningAdapter, type);
+        final Object returnValue = ManagedObjects.InvokeUtil.invoke(method, owningAdapter, type);
         if(returnValue instanceof String) {
             return (String) returnValue;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethod.java
index 11aae63..bbd47df 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethod.java
@@ -27,6 +27,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facets.object.hidden.HiddenObjectFacetAbstract;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class HiddenObjectFacetViaMethod 
 extends HiddenObjectFacetAbstract {
@@ -49,7 +50,7 @@ extends HiddenObjectFacetAbstract {
         if (target == null) {
             return null;
         }
-        final Boolean isHidden = (Boolean) ManagedObject.InvokeUtil.invoke(method, target);
+        final Boolean isHidden = (Boolean) ManagedObjects.InvokeUtil.invoke(method, target);
         return isHidden.booleanValue() ? "Hidden" : null;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/icon/method/IconFacetMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/icon/method/IconFacetMethod.java
index 43fc0ad..26893a1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/icon/method/IconFacetMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/icon/method/IconFacetMethod.java
@@ -25,6 +25,7 @@ import java.util.Map;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.icon.IconFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class IconFacetMethod extends IconFacetAbstract {
 
@@ -38,7 +39,7 @@ public class IconFacetMethod extends IconFacetAbstract {
     @Override
     public String iconName(final ManagedObject owningAdapter) {
         try {
-            return (String) ManagedObject.InvokeUtil.invoke(method, owningAdapter);
+            return (String) ManagedObjects.InvokeUtil.invoke(method, owningAdapter);
         } catch (final RuntimeException ex) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/layout/LayoutFacetMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/layout/LayoutFacetMethod.java
index a31ca4c..c88881c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/layout/LayoutFacetMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/layout/LayoutFacetMethod.java
@@ -24,6 +24,7 @@ import java.util.Map;
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class LayoutFacetMethod extends LayoutFacetAbstract {
 
@@ -40,7 +41,7 @@ public class LayoutFacetMethod extends LayoutFacetAbstract {
             return null;
         }
         try {
-            return (String) ManagedObject.InvokeUtil.invoke(method, objectAdapterIfAny);
+            return (String) ManagedObjects.InvokeUtil.invoke(method, objectAdapterIfAny);
         } catch (final RuntimeException ex) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaTitleMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaTitleMethod.java
index ee885de..b59872c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaTitleMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaTitleMethod.java
@@ -30,6 +30,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 import lombok.val;
 import lombok.extern.log4j.Log4j2;
@@ -65,7 +66,7 @@ public class TitleFacetViaTitleMethod extends TitleFacetAbstract implements Impe
     @Override
     public String title(final ManagedObject owningAdapter) {
         try {
-            final Object returnValue = ManagedObject.InvokeUtil.invoke(method, owningAdapter);
+            final Object returnValue = ManagedObjects.InvokeUtil.invoke(method, owningAdapter);
             if(returnValue instanceof String) {
                 return (String) returnValue;
             }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethod.java
index 35f6c77..5a78559 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethod.java
@@ -30,6 +30,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.object.validating.validateobject.ValidateObjectFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class ValidateObjectFacetMethod extends ValidateObjectFacetAbstract implements ImperativeFacet {
 
@@ -56,7 +57,7 @@ public class ValidateObjectFacetMethod extends ValidateObjectFacetAbstract imple
 
     @Override
     public String invalidReason(final ManagedObject owningAdapter) {
-        final Object returnValue = ManagedObject.InvokeUtil.invoke(method, owningAdapter);
+        final Object returnValue = ManagedObjects.InvokeUtil.invoke(method, owningAdapter);
         if(returnValue instanceof String) {
             return (String) returnValue;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
index b3a02e0..1167bbd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
@@ -34,6 +34,7 @@ import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.param.autocomplete.ActionParameterAutoCompleteFacetAbstract;
 import org.apache.isis.core.metamodel.facets.param.autocomplete.MinLengthUtil;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 import lombok.val;
 
@@ -86,9 +87,9 @@ implements ImperativeFacet {
             final InteractionInitiatedBy interactionInitiatedBy) {
 
         final Object collectionOrArray = ppmFactory.isPresent()
-                ? ManagedObject.InvokeUtil.invokeWithPPM(
+                ? ManagedObjects.InvokeUtil.invokeWithPPM(
                         ppmFactory.get(), method, owningAdapter, pendingArgs, Collections.singletonList(searchArg))
-                : ManagedObject.InvokeUtil.invokeAutofit(
+                : ManagedObjects.InvokeUtil.invokeAutofit(
                         method, owningAdapter, pendingArgs, Collections.singletonList(searchArg));
         
         if (collectionOrArray == null) {
@@ -96,7 +97,7 @@ implements ImperativeFacet {
         }
         val collectionAdapter = getObjectManager().adapt(collectionOrArray);
 
-        val visiblePojos = ManagedObject.VisibilityUtil
+        val visiblePojos = ManagedObjects.VisibilityUtil
                 .visiblePojosAsArray(collectionAdapter, interactionInitiatedBy);
         
         return visiblePojos;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
index 52b3f25..2dd5c49 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
@@ -30,6 +30,7 @@ import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.param.choices.ActionChoicesFacetAbstract;
 import org.apache.isis.core.metamodel.spec.DomainModelException;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 import lombok.val;
 
@@ -66,7 +67,7 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
     public Object[][] getChoices(
             final ManagedObject owningAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
-        final Object objectOrCollection = ManagedObject.InvokeUtil.invoke(method, owningAdapter);
+        final Object objectOrCollection = ManagedObjects.InvokeUtil.invoke(method, owningAdapter);
         if (!(objectOrCollection instanceof Object[])) {
             throw new DomainModelException(String.format(
                     "Expected an array of collections (Object[]) containing choices for all parameters, "
@@ -94,7 +95,7 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
         }
 
         val collectionAdapter = getObjectManager().adapt(collectionOrArray);
-        val visiblePojos = ManagedObject.VisibilityUtil
+        val visiblePojos = ManagedObjects.VisibilityUtil
                 .visiblePojosAsArray(collectionAdapter, interactionInitiatedBy);
         
         return visiblePojos;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
index 294d0b7..c9c9893 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
@@ -33,6 +33,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 import lombok.val;
 
@@ -77,15 +78,15 @@ implements ImperativeFacet {
             final InteractionInitiatedBy interactionInitiatedBy) {
         
         final Object choices = ppmFactory.isPresent()
-                ? ManagedObject.InvokeUtil.invokeWithPPM(ppmFactory.get(), method, owningAdapter, pendingArgs) 
-                : ManagedObject.InvokeUtil.invokeAutofit(method, owningAdapter, pendingArgs);
+                ? ManagedObjects.InvokeUtil.invokeWithPPM(ppmFactory.get(), method, owningAdapter, pendingArgs) 
+                : ManagedObjects.InvokeUtil.invokeAutofit(method, owningAdapter, pendingArgs);
         if (choices == null) {
             return _Constants.emptyObjects;
         }
         
         val objectAdapter = getObjectManager().adapt(choices);
 
-        val visiblePojos = ManagedObject.VisibilityUtil
+        val visiblePojos = ManagedObjects.VisibilityUtil
                 .visiblePojosAsArray(objectAdapter, interactionInitiatedBy);
 
         return visiblePojos;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethod.java
index 67cea69..2d7e72c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethod.java
@@ -29,7 +29,7 @@ import java.util.Optional;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacetAbstract;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 import org.apache.isis.core.metamodel.specloader.specimpl.PendingParameterModel;
 
 import lombok.NonNull;
@@ -82,13 +82,13 @@ implements ImperativeFacet {
         
         if(ppmFactory.isPresent()) {
             // PPM programming model
-            return ManagedObject.InvokeUtil
+            return ManagedObjects.InvokeUtil
                     .invokeWithPPM(ppmFactory.get(), method, 
                             pendingArgs.getActionTarget(), pendingArgs.getParamValues());    
         }
         
         // else support legacy programming model, call any-arg defaultNAct(...)
-        return ManagedObject.InvokeUtil
+        return ManagedObjects.InvokeUtil
                 .invokeAutofit(method, 
                     pendingArgs.getActionTarget(), pendingArgs.getParamValues());
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethod.java
index b63caff..40c2eec 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethod.java
@@ -33,6 +33,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.param.disable.ActionParameterDisabledFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class ActionParameterDisabledFacetViaMethod 
 extends ActionParameterDisabledFacetAbstract 
@@ -77,8 +78,8 @@ implements ImperativeFacet {
             final Can<ManagedObject> pendingArgs) {
         
         final Object returnValue = ppmFactory.isPresent()
-                ? ManagedObject.InvokeUtil.invokeWithPPM(ppmFactory.get(), method, owningAdapter, pendingArgs)
-                : ManagedObject.InvokeUtil.invokeAutofit(method, owningAdapter, pendingArgs);
+                ? ManagedObjects.InvokeUtil.invokeWithPPM(ppmFactory.get(), method, owningAdapter, pendingArgs)
+                : ManagedObjects.InvokeUtil.invokeAutofit(method, owningAdapter, pendingArgs);
                 
         if(returnValue instanceof String) {
             return (String) returnValue;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethod.java
index 870f403..904ce57 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethod.java
@@ -31,6 +31,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.param.hide.ActionParameterHiddenFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class ActionParameterHiddenFacetViaMethod extends ActionParameterHiddenFacetAbstract implements ImperativeFacet {
 
@@ -67,8 +68,8 @@ public class ActionParameterHiddenFacetViaMethod extends ActionParameterHiddenFa
             final Can<ManagedObject> argumentAdapters) {
         
         final Object returnValue = ppmFactory.isPresent()
-                ? ManagedObject.InvokeUtil.invokeWithPPM(ppmFactory.get(), method, owningAdapter, argumentAdapters)
-                : ManagedObject.InvokeUtil.invokeAutofit(method, owningAdapter, argumentAdapters);
+                ? ManagedObjects.InvokeUtil.invokeWithPPM(ppmFactory.get(), method, owningAdapter, argumentAdapters)
+                : ManagedObjects.InvokeUtil.invokeAutofit(method, owningAdapter, argumentAdapters);
         
         if(returnValue instanceof Boolean) {
             return (Boolean) returnValue;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethod.java
index 6e058fd..a4cfb77 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethod.java
@@ -33,6 +33,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.param.validate.ActionParameterValidationFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class ActionParameterValidationFacetViaMethod 
 extends ActionParameterValidationFacetAbstract 
@@ -78,8 +79,8 @@ implements ImperativeFacet {
             final ManagedObject proposedArgument) {
         
         final Object returnValue = ppmFactory.isPresent()
-                ? ManagedObject.InvokeUtil.invokeWithPPM(ppmFactory.get(), method, owningAdapter, pendingArgs)
-                : ManagedObject.InvokeUtil.invoke(method, owningAdapter, proposedArgument);
+                ? ManagedObjects.InvokeUtil.invokeWithPPM(ppmFactory.get(), method, owningAdapter, pendingArgs)
+                : ManagedObjects.InvokeUtil.invoke(method, owningAdapter, proposedArgument);
         
         if(returnValue instanceof String) {
             return (String) returnValue;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
index ff667a8..d3d9bc2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
@@ -29,6 +29,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 public class PropertyAccessorFacetViaAccessor
@@ -65,7 +66,7 @@ implements ImperativeFacet {
     public Object getProperty(
             final ManagedObject owningAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
-        final Object referencedObject = ManagedObject.InvokeUtil.invoke(method, owningAdapter);
+        final Object referencedObject = ManagedObjects.InvokeUtil.invoke(method, owningAdapter);
 
         if(referencedObject == null) {
             return null;
@@ -74,7 +75,7 @@ implements ImperativeFacet {
         boolean filterForVisibility = super.getMetaModelContext().getConfiguration().getCore().getMetaModel().isFilterVisibility();
         if(filterForVisibility) {
             final ManagedObject referencedAdapter = getObjectManager().adapt(referencedObject);
-            final boolean visible = ManagedObject.VisibilityUtil
+            final boolean visible = ManagedObjects.VisibilityUtil
                     .isVisible(referencedAdapter, interactionInitiatedBy);
             if (!visible) {
                 return null;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
index cf60454..6674d15 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
@@ -30,6 +30,7 @@ import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.param.autocomplete.MinLengthUtil;
 import org.apache.isis.core.metamodel.facets.properties.autocomplete.PropertyAutoCompleteFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 import lombok.val;
 
@@ -74,14 +75,14 @@ public class PropertyAutoCompleteFacetMethod extends PropertyAutoCompleteFacetAb
             final String searchArg,
             final InteractionInitiatedBy interactionInitiatedBy) {
 
-        final Object collectionOrArray = ManagedObject.InvokeUtil.invoke(method, owningAdapter, searchArg);
+        final Object collectionOrArray = ManagedObjects.InvokeUtil.invoke(method, owningAdapter, searchArg);
         if (collectionOrArray == null) {
             return null;
         }
 
         val collectionAdapter = getObjectManager().adapt(collectionOrArray);
         
-        val visiblePojos = ManagedObject.VisibilityUtil
+        val visiblePojos = ManagedObjects.VisibilityUtil
                 .visiblePojosAsArray(collectionAdapter, interactionInitiatedBy);
         
         return visiblePojos;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
index a1cd1b0..f447344 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
@@ -29,6 +29,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.properties.choices.PropertyChoicesFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 import lombok.val;
 
@@ -67,14 +68,14 @@ public class PropertyChoicesFacetViaMethod extends PropertyChoicesFacetAbstract
             final InteractionInitiatedBy interactionInitiatedBy) {
         
         
-        final Object options = ManagedObject.InvokeUtil.invoke(method, owningAdapter);
+        final Object options = ManagedObjects.InvokeUtil.invoke(method, owningAdapter);
         if (options == null) {
             return null;
         }
 
         val collectionAdapter = getObjectManager().adapt(options);
 
-        val visiblePojos = ManagedObject.VisibilityUtil
+        val visiblePojos = ManagedObjects.VisibilityUtil
                 .visiblePojosAsArray(collectionAdapter, interactionInitiatedBy);
         
         return visiblePojos;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java
index b8344b6..6ccbfe9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java
@@ -29,6 +29,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 import lombok.val;
 
@@ -59,7 +60,7 @@ public class PropertyDefaultFacetViaMethod extends PropertyDefaultFacetAbstract
 
     @Override
     public ManagedObject getDefault(final ManagedObject owningAdapter) {
-        final Object result = ManagedObject.InvokeUtil.invoke(method, owningAdapter);
+        final Object result = ManagedObjects.InvokeUtil.invoke(method, owningAdapter);
         if (result == null) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacetViaClearMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacetViaClearMethod.java
index 7c37504..f81810c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacetViaClearMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacetViaClearMethod.java
@@ -28,6 +28,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 
 public class PropertyClearFacetViaClearMethod extends PropertyClearFacetAbstract implements ImperativeFacet {
@@ -58,7 +59,7 @@ public class PropertyClearFacetViaClearMethod extends PropertyClearFacetAbstract
             final OneToOneAssociation owningProperty,
             final ManagedObject targetAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
-        ManagedObject.InvokeUtil.invoke(method, targetAdapter);
+        ManagedObjects.InvokeUtil.invoke(method, targetAdapter);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacetViaSetterMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacetViaSetterMethod.java
index 5638528..598bcae 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacetViaSetterMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/clear/PropertyClearFacetViaSetterMethod.java
@@ -28,6 +28,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 
 public class PropertyClearFacetViaSetterMethod extends PropertyClearFacetAbstract implements ImperativeFacet {
@@ -59,7 +60,7 @@ public class PropertyClearFacetViaSetterMethod extends PropertyClearFacetAbstrac
             final ManagedObject targetAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
         
-        ManagedObject.InvokeUtil.invoke(method, targetAdapter);
+        ManagedObjects.InvokeUtil.invoke(method, targetAdapter);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/init/PropertyInitializationFacetViaSetterMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/init/PropertyInitializationFacetViaSetterMethod.java
index 0c406e0..61f9b86 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/init/PropertyInitializationFacetViaSetterMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/init/PropertyInitializationFacetViaSetterMethod.java
@@ -27,6 +27,7 @@ import java.util.Map;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class PropertyInitializationFacetViaSetterMethod extends PropertyInitializationFacetAbstract implements ImperativeFacet {
 
@@ -55,7 +56,7 @@ public class PropertyInitializationFacetViaSetterMethod extends PropertyInitiali
 
     @Override
     public void initProperty(final ManagedObject owningAdapter, final ManagedObject initialAdapter) {
-        ManagedObject.InvokeUtil.invoke(method, owningAdapter, initialAdapter);
+        ManagedObjects.InvokeUtil.invoke(method, owningAdapter, initialAdapter);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacetViaModifyMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacetViaModifyMethod.java
index 888fb75..f1b3eb0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacetViaModifyMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacetViaModifyMethod.java
@@ -28,6 +28,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 
 public class PropertySetterFacetViaModifyMethod extends PropertySetterFacetAbstract implements ImperativeFacet {
@@ -62,7 +63,7 @@ public class PropertySetterFacetViaModifyMethod extends PropertySetterFacetAbstr
             final ManagedObject valueAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
 
-        ManagedObject.InvokeUtil.invoke(method, targetAdapter, valueAdapter);
+        ManagedObjects.InvokeUtil.invoke(method, targetAdapter, valueAdapter);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacetViaSetterMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacetViaSetterMethod.java
index d5e018b..f7d8bc4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacetViaSetterMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/modify/PropertySetterFacetViaSetterMethod.java
@@ -28,6 +28,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 
 public class PropertySetterFacetViaSetterMethod extends PropertySetterFacetAbstract implements ImperativeFacet {
@@ -60,7 +61,7 @@ public class PropertySetterFacetViaSetterMethod extends PropertySetterFacetAbstr
             final ManagedObject valueAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
         
-        ManagedObject.InvokeUtil.invoke(method, adapter, valueAdapter);
+        ManagedObjects.InvokeUtil.invoke(method, adapter, valueAdapter);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethod.java
index 29b5e12..65c70c8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethod.java
@@ -30,6 +30,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.properties.validating.PropertyValidateFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 
 public class PropertyValidateFacetViaMethod extends PropertyValidateFacetAbstract implements ImperativeFacet {
 
@@ -60,7 +61,7 @@ public class PropertyValidateFacetViaMethod extends PropertyValidateFacetAbstrac
 
     @Override
     public String invalidReason(final ManagedObject owningAdapter, final ManagedObject proposedAdapter) {
-        final Object returnValue = ManagedObject.InvokeUtil.invoke(method, owningAdapter, proposedAdapter);
+        final Object returnValue = ManagedObjects.InvokeUtil.invoke(method, owningAdapter, proposedAdapter);
         if(returnValue instanceof String) {
             return (String) returnValue;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
index 952e891..d4546be 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
@@ -19,21 +19,15 @@
 
 package org.apache.isis.core.metamodel.spec;
 
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
 import java.util.function.Function;
-import java.util.function.Predicate;
-import java.util.stream.Stream;
 
 import javax.annotation.Nullable;
 
-import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.domain.DomainObjectList;
 import org.apache.isis.applib.services.repository.EntityState;
 import org.apache.isis.core.commons.collections.Can;
@@ -43,25 +37,15 @@ import org.apache.isis.core.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.internal.collections._Sets;
 import org.apache.isis.core.commons.internal.exceptions._Exceptions;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.commons.ClassExtensions;
-import org.apache.isis.core.metamodel.commons.MethodExtensions;
-import org.apache.isis.core.metamodel.commons.MethodUtil;
-import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.facets.collections.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.object.entity.EntityFacet;
-import org.apache.isis.core.metamodel.interactions.InteractionUtils;
-import org.apache.isis.core.metamodel.interactions.ObjectVisibilityContext;
-import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.core.metamodel.objectmanager.create.ObjectCreator;
 import org.apache.isis.core.metamodel.objectmanager.load.ObjectLoader;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoaderDefault;
 
-import lombok.AccessLevel;
 import lombok.EqualsAndHashCode;
 import lombok.Getter;
-import lombok.NoArgsConstructor;
 import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
 import lombok.ToString;
@@ -345,245 +329,6 @@ public interface ManagedObject {
                 .collect(_Sets.toUnmodifiable());
     }
 
-
-    // -- VISIBILITY UTILITIES
-    
-    default public VisibilityContext createVisibleInteractionContext(
-            final InteractionInitiatedBy interactionInitiatedBy,
-            final Where where) {
-        
-        return new ObjectVisibilityContext(
-                this,
-                this.getSpecification().getIdentifier(),
-                interactionInitiatedBy,
-                where);
-    }
-
-    @Deprecated // move to ManagedObjects
-    @NoArgsConstructor(access = AccessLevel.PRIVATE)
-    static final class VisibilityUtil {
-
-        public static Predicate<? super ManagedObject> filterOn(InteractionInitiatedBy interactionInitiatedBy) {
-            return $->ManagedObject.VisibilityUtil.isVisible($, interactionInitiatedBy);
-        }
-
-        /**
-         * Filters a collection (an adapter around either a Collection or an Object[]) and returns a stream of
-         * {@link ManagedObject}s of those that are visible (as per any facet(s) installed on the element class
-         * of the collection).
-         * @param collectionAdapter - an adapter around a collection (as returned by a getter of a collection, or of an autoCompleteNXxx() or choicesNXxx() method, etc
-         * @param interactionInitiatedBy
-         */
-        public static Stream<ManagedObject> streamVisibleAdapters(
-                final ManagedObject collectionAdapter,
-                final InteractionInitiatedBy interactionInitiatedBy) {
-    
-            return CollectionFacet.streamAdapters(collectionAdapter)
-                    .filter(VisibilityUtil.filterOn(interactionInitiatedBy));
-        }
-        
-        private static Stream<Object> streamVisiblePojos(
-                final ManagedObject collectionAdapter,
-                final InteractionInitiatedBy interactionInitiatedBy) {
-    
-            return CollectionFacet.streamAdapters(collectionAdapter)
-                    .filter(VisibilityUtil.filterOn(interactionInitiatedBy))
-                    .map(ManagedObject::unwrapSingle);
-        }
-        
-        public static Object[] visiblePojosAsArray(
-                final ManagedObject collectionAdapter,
-                final InteractionInitiatedBy interactionInitiatedBy) {
-    
-            return streamVisiblePojos(collectionAdapter, interactionInitiatedBy)
-                    .collect(_Arrays.toArray(Object.class));
-        }
-        
-        public static Object visiblePojosAutofit(
-                final ManagedObject collectionAdapter,
-                final InteractionInitiatedBy interactionInitiatedBy,
-                final Class<?> requiredContainerType) {
-            
-            val visiblePojoStream = streamVisiblePojos(collectionAdapter, interactionInitiatedBy);
-            val autofittedObjectContainer = CollectionFacet.AutofitUtils
-                    .collect(visiblePojoStream, requiredContainerType);
-            return autofittedObjectContainer;
-        }
-        
-        
-        /**
-         * @param adapter - an adapter around the domain object whose visibility is being checked
-         * @param interactionInitiatedBy
-         */
-        public static boolean isVisible(
-                ManagedObject adapter,
-                InteractionInitiatedBy interactionInitiatedBy) {
-
-            if(ManagedObjects.isNullOrUnspecifiedOrEmpty(adapter)) {
-                // a choices list could include a null (eg example in ToDoItems#choices1Categorized()); want to show as "visible"
-                return true;
-            }
-            val spec = adapter.getSpecification();
-            if(spec.isEntity()) {
-                if(ManagedObject._isDestroyed(adapter)) {
-                    return false;
-                }
-            }
-            if(interactionInitiatedBy == InteractionInitiatedBy.FRAMEWORK) { 
-                return true; 
-            }
-            return isVisibleForUser(adapter);
-        }
-
-        private static boolean isVisibleForUser(ManagedObject adapter) {
-            val visibilityContext = adapter.createVisibleInteractionContext(
-                    InteractionInitiatedBy.USER,
-                    Where.OBJECT_FORMS);
-            val spec = adapter.getSpecification();
-            return InteractionUtils.isVisibleResult(spec, visibilityContext)
-                    .isNotVetoing();
-        }
-
-    }
-
-    // -- INVOCATION UTILITY
-
-    @Deprecated // move to ManagedObjects
-    @NoArgsConstructor(access = AccessLevel.PRIVATE)
-    static final class InvokeUtil {
-    
-        public static Object invokeWithPPM(
-                final Constructor<?> ppmConstructor, 
-                final Method method, 
-                final ManagedObject adapter, 
-                final Can<ManagedObject> pendingArguments,
-                final List<Object> additionalArguments) {
-            
-            val ppmTuple = MethodExtensions.construct(ppmConstructor, unwrapMultipleAsArray(pendingArguments));
-            val paramPojos = _Arrays.combineWithExplicitType(Object.class, ppmTuple, additionalArguments.toArray());
-            return MethodExtensions.invoke(method, unwrapSingle(adapter), paramPojos);
-        }
-        
-        public static Object invokeWithPPM(
-                final Constructor<?> ppmConstructor, 
-                final Method method, 
-                final ManagedObject adapter, 
-                final Can<ManagedObject> argumentAdapters) {
-            return invokeWithPPM(ppmConstructor, method, adapter, argumentAdapters, Collections.emptyList());
-        }
-        
-        public static void invokeAll(Collection<Method> methods, final ManagedObject adapter) {
-            MethodUtil.invoke(methods, unwrapSingle(adapter));
-        }
-    
-        public static Object invoke(Method method, ManagedObject adapter) {
-            return MethodExtensions.invoke(method, unwrapSingle(adapter));
-        }
-    
-        public static Object invoke(Method method, ManagedObject adapter, Object arg0) {
-            return MethodExtensions.invoke(method, unwrapSingle(adapter), new Object[] {arg0});
-        }
-    
-        public static Object invoke(Method method, ManagedObject adapter, Can<ManagedObject> argumentAdapters) {
-            return MethodExtensions.invoke(method, unwrapSingle(adapter), unwrapMultipleAsArray(argumentAdapters));
-        }
-
-        public static Object invoke(Method method, ManagedObject adapter, ManagedObject arg0Adapter) {
-            return invoke(method, adapter, unwrapSingle(arg0Adapter));
-        }
-    
-        public static Object invoke(Method method, ManagedObject adapter, ManagedObject[] argumentAdapters) {
-            return MethodExtensions.invoke(method, unwrapSingle(adapter), unwrapMultipleAsArray(argumentAdapters));
-        }
-    
-        @Deprecated
-        public static Object invokeC(
-                Method method, 
-                ManagedObject adapter) {
-            return invoke(method, adapter, new ManagedObject[method.getParameterTypes().length]);
-        }
-    
-        /**
-         * Invokes the method, adjusting arguments as required to make them fit the method's parameters.
-         * <p>
-         * That is:
-         * <ul>
-         * <li>if the method declares parameters but arguments are missing, then will provide 'null' defaults for these.</li>
-         * <li>if the method does not declare all parameters for arguments, then truncates arguments.</li>
-         * <li>any {@code additionalArgValues} must also fit at the end of the resulting parameter list</li>
-         * </ul>
-         */
-        public static Object invokeAutofit(
-                final Method method, 
-                final ManagedObject target, 
-                final Can<? extends ManagedObject> pendingArgs,
-                final List<Object> additionalArgValues) {
-    
-            val argArray = adjust(method, pendingArgs, additionalArgValues);
-            
-            return MethodExtensions.invoke(method, unwrapSingle(target), argArray);
-        }
-
-        /**
-         * same as {@link #invokeAutofit(Method, ManagedObject, List, List)} w/o additionalArgValues
-         */
-        public static Object invokeAutofit(
-                final Method method, 
-                final ManagedObject target, 
-                final Can<? extends ManagedObject> pendingArgs) {
-            
-            return invokeAutofit(method, target, pendingArgs, Collections.emptyList());
-        }
-    
-        private static Object[] adjust(
-                final Method method, 
-                final Can<? extends ManagedObject> pendingArgs,
-                final List<Object> additionalArgValues) {
-            
-            val parameterTypes = method.getParameterTypes();
-            val paramCount = parameterTypes.length;
-            val additionalArgCount = additionalArgValues.size();
-            val pendingArgsToConsiderCount = paramCount - additionalArgCount;
-            
-            val argIterator = argIteratorFrom(pendingArgs);
-            val adjusted = new Object[paramCount];
-            for(int i=0; i<pendingArgsToConsiderCount; i++) {
-                
-                val paramType = parameterTypes[i];
-                val arg = argIterator.hasNext() ? unwrapSingle(argIterator.next()) : null;
-                
-                adjusted[i] = honorPrimitiveDefaults(paramType, arg);
-            }
-            
-            // add the additional parameter values (if any)
-            int paramIndex = pendingArgsToConsiderCount;
-            for(val additionalArg : additionalArgValues) {
-                val paramType = parameterTypes[paramIndex];
-                adjusted[paramIndex] = honorPrimitiveDefaults(paramType, additionalArg);
-                ++paramIndex;
-            }
-            
-            return adjusted;
-
-        }
-
-        private static Iterator<? extends ManagedObject> argIteratorFrom(Can<? extends ManagedObject> pendingArgs) {
-            return pendingArgs!=null ? pendingArgs.iterator() : Collections.emptyIterator();
-        }
-
-        private static Object honorPrimitiveDefaults(
-                final Class<?> expectedType, 
-                final @Nullable Object value) {
-            
-            if(value == null && expectedType.isPrimitive()) {
-                return ClassExtensions.toDefault(expectedType);
-            }
-            return value;
-        }
-        
-    
-    }
-    
     // -- DEPRECATIONS (REFACTORING)
 
     static String _instanceId(ManagedObject adapter) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
index eb82fee..f50e147 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
@@ -18,20 +18,38 @@
  */
 package org.apache.isis.core.metamodel.spec;
 
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.util.Collection;
+import java.util.Collections;
 import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
+import java.util.function.Predicate;
+import java.util.stream.Stream;
 
 import javax.annotation.Nullable;
 
+import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.repository.EntityState;
+import org.apache.isis.core.commons.collections.Can;
 import org.apache.isis.core.commons.internal.assertions._Assert;
 import org.apache.isis.core.commons.internal.base._NullSafe;
+import org.apache.isis.core.commons.internal.collections._Arrays;
 import org.apache.isis.core.commons.internal.exceptions._Exceptions;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
+import org.apache.isis.core.metamodel.commons.ClassExtensions;
+import org.apache.isis.core.metamodel.commons.MethodExtensions;
+import org.apache.isis.core.metamodel.commons.MethodUtil;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.facets.collections.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
+import org.apache.isis.core.metamodel.interactions.InteractionUtils;
+import org.apache.isis.core.metamodel.interactions.ObjectVisibilityContext;
+import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.objectmanager.load.ObjectLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 
@@ -254,5 +272,245 @@ public final class ManagedObjects {
         return managedObject.getObjectManager().loadObject(objectLoadRequest);
     }
 
+    // -- VISIBILITY UTIL
+    
+    @UtilityClass
+    public static final class VisibilityUtil {
+    
+        public static Predicate<? super ManagedObject> filterOn(InteractionInitiatedBy interactionInitiatedBy) {
+            return $->ManagedObjects.VisibilityUtil.isVisible($, interactionInitiatedBy);
+        }
+    
+        /**
+         * Filters a collection (an adapter around either a Collection or an Object[]) and returns a stream of
+         * {@link ManagedObject}s of those that are visible (as per any facet(s) installed on the element class
+         * of the collection).
+         * @param collectionAdapter - an adapter around a collection (as returned by a getter of a collection, or of an autoCompleteNXxx() or choicesNXxx() method, etc
+         * @param interactionInitiatedBy
+         */
+        public static Stream<ManagedObject> streamVisibleAdapters(
+                final ManagedObject collectionAdapter,
+                final InteractionInitiatedBy interactionInitiatedBy) {
+    
+            return CollectionFacet.streamAdapters(collectionAdapter)
+                    .filter(VisibilityUtil.filterOn(interactionInitiatedBy));
+        }
+        
+        private static Stream<Object> streamVisiblePojos(
+                final ManagedObject collectionAdapter,
+                final InteractionInitiatedBy interactionInitiatedBy) {
+    
+            return CollectionFacet.streamAdapters(collectionAdapter)
+                    .filter(VisibilityUtil.filterOn(interactionInitiatedBy))
+                    .map(ManagedObject::unwrapSingle);
+        }
+        
+        public static Object[] visiblePojosAsArray(
+                final ManagedObject collectionAdapter,
+                final InteractionInitiatedBy interactionInitiatedBy) {
+    
+            return streamVisiblePojos(collectionAdapter, interactionInitiatedBy)
+                    .collect(_Arrays.toArray(Object.class));
+        }
+        
+        public static Object visiblePojosAutofit(
+                final ManagedObject collectionAdapter,
+                final InteractionInitiatedBy interactionInitiatedBy,
+                final Class<?> requiredContainerType) {
+            
+            val visiblePojoStream = streamVisiblePojos(collectionAdapter, interactionInitiatedBy);
+            val autofittedObjectContainer = CollectionFacet.AutofitUtils
+                    .collect(visiblePojoStream, requiredContainerType);
+            return autofittedObjectContainer;
+        }
+        
+        
+        /**
+         * @param adapter - an adapter around the domain object whose visibility is being checked
+         * @param interactionInitiatedBy
+         */
+        public static boolean isVisible(
+                ManagedObject adapter,
+                InteractionInitiatedBy interactionInitiatedBy) {
+    
+            if(isNullOrUnspecifiedOrEmpty(adapter)) {
+                // a choices list could include a null (eg example in ToDoItems#choices1Categorized()); want to show as "visible"
+                return true;
+            }
+            val spec = adapter.getSpecification();
+            if(spec.isEntity()) {
+                if(ManagedObject._isDestroyed(adapter)) {
+                    return false;
+                }
+            }
+            if(interactionInitiatedBy == InteractionInitiatedBy.FRAMEWORK) { 
+                return true; 
+            }
+            val visibilityContext = createVisibleInteractionContext(
+                    adapter,
+                    InteractionInitiatedBy.USER,
+                    Where.OBJECT_FORMS);
+    
+            return InteractionUtils.isVisibleResult(spec, visibilityContext)
+                    .isNotVetoing();
+        }
+        
+        private static VisibilityContext createVisibleInteractionContext(
+                final ManagedObject adapter,
+                final InteractionInitiatedBy interactionInitiatedBy,
+                final Where where) {
+            
+            return new ObjectVisibilityContext(
+                    adapter,
+                    adapter.getSpecification().getIdentifier(),
+                    interactionInitiatedBy,
+                    where);
+        }
+    
+    }
+    
+    
+    // -- INVOCATION UTILITY
+    
+    @UtilityClass
+    public static final class InvokeUtil {
+    
+        public static Object invokeWithPPM(
+                final Constructor<?> ppmConstructor, 
+                final Method method, 
+                final ManagedObject adapter, 
+                final Can<ManagedObject> pendingArguments,
+                final List<Object> additionalArguments) {
+            
+            val ppmTuple = MethodExtensions.construct(ppmConstructor, ManagedObject.unwrapMultipleAsArray(pendingArguments));
+            val paramPojos = _Arrays.combineWithExplicitType(Object.class, ppmTuple, additionalArguments.toArray());
+            return MethodExtensions.invoke(method, ManagedObject.unwrapSingle(adapter), paramPojos);
+        }
+        
+        public static Object invokeWithPPM(
+                final Constructor<?> ppmConstructor, 
+                final Method method, 
+                final ManagedObject adapter, 
+                final Can<ManagedObject> argumentAdapters) {
+            return invokeWithPPM(ppmConstructor, method, adapter, argumentAdapters, Collections.emptyList());
+        }
+        
+        public static void invokeAll(Collection<Method> methods, final ManagedObject adapter) {
+            MethodUtil.invoke(methods, ManagedObject.unwrapSingle(adapter));
+        }
+    
+        public static Object invoke(Method method, ManagedObject adapter) {
+            return MethodExtensions.invoke(method, ManagedObject.unwrapSingle(adapter));
+        }
+    
+        public static Object invoke(Method method, ManagedObject adapter, Object arg0) {
+            return MethodExtensions.invoke(method, ManagedObject.unwrapSingle(adapter), new Object[] {arg0});
+        }
+    
+        public static Object invoke(Method method, ManagedObject adapter, Can<ManagedObject> argumentAdapters) {
+            return MethodExtensions.invoke(method, ManagedObject.unwrapSingle(adapter), ManagedObject.unwrapMultipleAsArray(argumentAdapters));
+        }
+    
+        public static Object invoke(Method method, ManagedObject adapter, ManagedObject arg0Adapter) {
+            return invoke(method, adapter, ManagedObject.unwrapSingle(arg0Adapter));
+        }
+    
+        public static Object invoke(Method method, ManagedObject adapter, ManagedObject[] argumentAdapters) {
+            return MethodExtensions.invoke(method, ManagedObject.unwrapSingle(adapter), ManagedObject.unwrapMultipleAsArray(argumentAdapters));
+        }
+
+        /**
+         * Invokes the method, adjusting arguments as required to make them fit the method's parameters.
+         * <p>
+         * That is:
+         * <ul>
+         * <li>if the method declares parameters but arguments are missing, then will provide 'null' defaults for these.</li>
+         * </ul>
+         */
+        public static Object invokeAutofit(Method method, ManagedObject adapter) {
+            return invoke(method, adapter, new ManagedObject[method.getParameterTypes().length]);
+        }
+    
+        /**
+         * Invokes the method, adjusting arguments as required to make them fit the method's parameters.
+         * <p>
+         * That is:
+         * <ul>
+         * <li>if the method declares parameters but arguments are missing, then will provide 'null' defaults for these.</li>
+         * <li>if the method does not declare all parameters for arguments, then truncates arguments.</li>
+         * <li>any {@code additionalArgValues} must also fit at the end of the resulting parameter list</li>
+         * </ul>
+         */
+        public static Object invokeAutofit(
+                final Method method, 
+                final ManagedObject target, 
+                final Can<? extends ManagedObject> pendingArgs,
+                final List<Object> additionalArgValues) {
+    
+            val argArray = adjust(method, pendingArgs, additionalArgValues);
+            
+            return MethodExtensions.invoke(method, ManagedObject.unwrapSingle(target), argArray);
+        }
+    
+        /**
+         * same as {@link #invokeAutofit(Method, ManagedObject, List, List)} w/o additionalArgValues
+         */
+        public static Object invokeAutofit(
+                final Method method, 
+                final ManagedObject target, 
+                final Can<? extends ManagedObject> pendingArgs) {
+            
+            return invokeAutofit(method, target, pendingArgs, Collections.emptyList());
+        }
+    
+        private static Object[] adjust(
+                final Method method, 
+                final Can<? extends ManagedObject> pendingArgs,
+                final List<Object> additionalArgValues) {
+            
+            val parameterTypes = method.getParameterTypes();
+            val paramCount = parameterTypes.length;
+            val additionalArgCount = additionalArgValues.size();
+            val pendingArgsToConsiderCount = paramCount - additionalArgCount;
+            
+            val argIterator = argIteratorFrom(pendingArgs);
+            val adjusted = new Object[paramCount];
+            for(int i=0; i<pendingArgsToConsiderCount; i++) {
+                
+                val paramType = parameterTypes[i];
+                val arg = argIterator.hasNext() ? ManagedObject.unwrapSingle(argIterator.next()) : null;
+                
+                adjusted[i] = honorPrimitiveDefaults(paramType, arg);
+            }
+            
+            // add the additional parameter values (if any)
+            int paramIndex = pendingArgsToConsiderCount;
+            for(val additionalArg : additionalArgValues) {
+                val paramType = parameterTypes[paramIndex];
+                adjusted[paramIndex] = honorPrimitiveDefaults(paramType, additionalArg);
+                ++paramIndex;
+            }
+            
+            return adjusted;
+    
+        }
+    
+        private static Iterator<? extends ManagedObject> argIteratorFrom(Can<? extends ManagedObject> pendingArgs) {
+            return pendingArgs!=null ? pendingArgs.iterator() : Collections.emptyIterator();
+        }
+    
+        private static Object honorPrimitiveDefaults(
+                final Class<?> expectedType, 
+                final @Nullable Object value) {
+            
+            if(value == null && expectedType.isPrimitive()) {
+                return ClassExtensions.toDefault(expectedType);
+            }
+            return value;
+        }
+        
+    
+    }
+    
 
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
index e439c08..36dc7f4 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
@@ -36,6 +36,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
 import org.apache.isis.core.metamodel.facets.object.grid.GridFacet;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
 import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
@@ -172,7 +173,7 @@ public class EntityPage extends PageAbstract {
         }
 
         // check that the entity overall can be viewed.
-        if(!ManagedObject.VisibilityUtil.isVisible(objectAdapter, InteractionInitiatedBy.USER)) {
+        if(!ManagedObjects.VisibilityUtil.isVisible(objectAdapter, InteractionInitiatedBy.USER)) {
             throw new ObjectMember.AuthorizationException();
         }