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/05/10 08:35:26 UTC

[isis] branch master updated: ISIS-2340: simplify InteractionContext (split out generic type param into its own interface)

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 79ea575  ISIS-2340: simplify InteractionContext (split out generic type param into its own interface)
79ea575 is described below

commit 79ea5756f4e56a04dfabf05546e0f759c2b5cd59
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun May 10 10:35:14 2020 +0200

    ISIS-2340: simplify InteractionContext (split out generic type param
    into its own interface)
---
 .../standard/AuthorizationFacetAbstract.java       |  6 ++---
 .../hidden/HiddenFacetForActionAnnotation.java     |  3 ++-
 .../invocation/ActionDomainEventFacetAbstract.java | 14 +++++-------
 .../PrototypeFacetForActionAnnotation.java         |  3 ++-
 .../notinservicemenu/NotInServiceMenuFacet.java    |  3 +--
 ...viceMenuFacetDerivedFromDomainServiceFacet.java |  6 ++---
 .../actions/prototype/PrototypeFacetAbstract.java  |  3 +--
 .../ActionParameterValidationFacetAbstract.java    |  7 +++---
 .../validate/ActionValidationFacetAbstract.java    |  7 +++---
 .../modify/CollectionDomainEventFacetAbstract.java |  9 +++-----
 .../CollectionValidateAddToFacetAbstract.java      |  3 +--
 .../CollectionValidateRemoveFromFacetAbstract.java |  3 +--
 .../facets/fallback/MaxLengthFacetUnlimited.java   |  3 +--
 .../members/disabled/DisabledFacetAbstract.java    |  3 +--
 .../method/DisableForContextFacetNone.java         |  3 +--
 .../method/DisableForContextFacetViaMethod.java    |  3 +--
 .../facets/members/hidden/HiddenFacetAbstract.java |  3 +--
 .../hidden/method/HideForContextFacetNone.java     |  3 +--
 .../method/HideForContextFacetViaMethod.java       |  3 +--
 .../choices/ChoicesFacetFromBoundedAbstract.java   |  6 ++---
 .../disabled/DisabledObjectFacetAbstract.java      |  6 +----
 .../object/hidden/HiddenObjectFacetAbstract.java   |  6 +----
 .../hidden/method/HiddenObjectFacetViaMethod.java  |  7 +++---
 .../object/immutable/ImmutableFacetAbstract.java   |  3 +--
 .../ObjectValidPropertiesFacetAbstract.java        |  3 +--
 .../parser/ParseableFacetUsingParser.java          |  2 +-
 .../ValidateObjectFacetAbstract.java               |  3 +--
 .../mandatory/MandatoryFacetAbstract.java          |  3 +--
 .../objectvalue/maxlen/MaxLengthFacetAbstract.java |  3 +--
 .../MustSatisfySpecificationFacetAbstract.java     |  5 +----
 .../objectvalue/regex/RegExFacetAbstract.java      |  3 +--
 .../ActionParameterDisabledFacetAbstract.java      |  3 +--
 .../hide/ActionParameterHiddenFacetAbstract.java   |  3 +--
 .../ActionParameterValidationFacetAbstract.java    |  3 +--
 .../modify/PropertyDomainEventFacetAbstract.java   |  9 +++-----
 .../validating/PropertyValidateFacetAbstract.java  |  3 +--
 .../dflt/PropertyValidateFacetDefault.java         |  3 +--
 .../core/metamodel/interactions/AccessContext.java |  4 +++-
 .../interactions/ActionArgUsabilityContext.java    |  2 +-
 .../interactions/ActionArgValidityContext.java     |  2 +-
 .../interactions/ActionArgVisibilityContext.java   |  2 +-
 .../interactions/ActionUsabilityContext.java       |  8 ++++---
 .../interactions/ActionValidityContext.java        |  6 ++---
 .../interactions/ActionVisibilityContext.java      |  8 ++++---
 .../interactions/CollectionAccessContext.java      |  6 ++---
 .../interactions/CollectionAddToContext.java       |  4 +++-
 .../interactions/CollectionRemoveFromContext.java  |  8 ++++---
 .../interactions/CollectionUsabilityContext.java   |  3 ++-
 .../interactions/CollectionVisibilityContext.java  |  7 +++---
 .../interactions/DisablingInteractionAdvisor.java  |  3 +--
 .../interactions/HidingInteractionAdvisor.java     |  3 +--
 .../metamodel/interactions/InteractionContext.java | 11 ++-------
 .../InteractionEventSupplier.java}                 | 24 +++++++++-----------
 .../metamodel/interactions/InteractionUtils.java   |  8 +++----
 .../metamodel/interactions/ObjectTitleContext.java |  7 +++---
 .../interactions/ObjectValidityContext.java        |  8 ++++---
 .../interactions/ObjectVisibilityContext.java      |  8 ++++---
 .../metamodel/interactions/ParseValueContext.java  |  8 ++++---
 .../interactions/PropertyAccessContext.java        |  7 +++---
 .../interactions/PropertyModifyContext.java        |  8 ++++---
 .../interactions/PropertyUsabilityContext.java     |  7 +++---
 .../interactions/PropertyVisibilityContext.java    |  6 ++---
 .../metamodel/interactions/UsabilityContext.java   |  4 +++-
 .../interactions/ValidatingInteractionAdvisor.java |  3 +--
 .../metamodel/interactions/ValidityContext.java    |  4 +++-
 .../metamodel/interactions/VisibilityContext.java  |  4 +++-
 .../isis/core/metamodel/spec/ManagedObject.java    |  2 +-
 .../specloader/specimpl/ObjectActionDefault.java   | 18 ++++++++-------
 .../specloader/specimpl/ObjectActionMixedIn.java   |  6 ++---
 .../specimpl/ObjectActionParameterAbstract.java    | 10 ++++-----
 .../specloader/specimpl/ObjectMemberAbstract.java  |  8 +++----
 .../specimpl/OneToManyAssociationDefault.java      | 12 +++++-----
 .../specimpl/OneToManyAssociationMixedIn.java      |  6 ++---
 .../specimpl/OneToOneAssociationDefault.java       | 10 ++++-----
 .../specimpl/OneToOneAssociationMixedIn.java       |  4 ++--
 .../specimpl/ObjectAssociationAbstractTest.java    | 14 ++++++------
 ...ObjectAssociationAbstractTest_alwaysHidden.java | 18 +++++++--------
 .../facets/TenantedAuthorizationFacetDefault.java  |  6 ++---
 .../runtime/system/ObjectMemberAbstractTest.java   | 26 +++++++++++-----------
 .../CollectionContentsSortableDataProvider.java    |  2 +-
 80 files changed, 230 insertions(+), 257 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/authorization/standard/AuthorizationFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/authorization/standard/AuthorizationFacetAbstract.java
index 48327a7..11c796f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/authorization/standard/AuthorizationFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/authorization/standard/AuthorizationFacetAbstract.java
@@ -19,8 +19,6 @@
 
 package org.apache.isis.core.metamodel.authorization.standard;
 
-import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
-import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -50,7 +48,7 @@ public abstract class AuthorizationFacetAbstract extends FacetAbstract implement
     }
 
     @Override
-    public String hides(VisibilityContext<? extends VisibilityEvent> ic) {
+    public String hides(VisibilityContext ic) {
         
         val hides = authorizationManager
                 .isVisible(
@@ -67,7 +65,7 @@ public abstract class AuthorizationFacetAbstract extends FacetAbstract implement
     }
 
     @Override
-    public String disables(UsabilityContext<? extends UsabilityEvent> ic) {
+    public String disables(UsabilityContext ic) {
         
         val disables = authorizationManager
                 .isUsable(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java
index e5fad12..c3f7088 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java
@@ -28,7 +28,8 @@ import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 
-public class HiddenFacetForActionAnnotation extends HiddenFacetAbstract {
+public class HiddenFacetForActionAnnotation 
+extends HiddenFacetAbstract {
 
     public static HiddenFacet create(
             final Optional<Action> actionsIfAny,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
index 0b22107..65d6846 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
@@ -23,10 +23,6 @@ import org.apache.isis.applib.events.domain.AbstractDomainEvent;
 import org.apache.isis.applib.events.domain.ActionDomainEvent;
 import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.applib.services.wrapper.events.InteractionEvent;
-import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
-import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 import org.apache.isis.core.commons.collections.Can;
 import org.apache.isis.core.commons.internal.assertions._Assert;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -74,7 +70,7 @@ implements ActionDomainEventFacet {
     }
     
     @Override
-    public String hides(final VisibilityContext<? extends VisibilityEvent> ic) {
+    public String hides(final VisibilityContext ic) {
 
         final ActionDomainEvent<?> event =
                 domainEventHelper.postEventForAction(
@@ -90,7 +86,7 @@ implements ActionDomainEventFacet {
     }
 
     @Override
-    public String disables(UsabilityContext<? extends UsabilityEvent> ic) {
+    public String disables(UsabilityContext ic) {
 
         final ActionDomainEvent<?> event =
                 domainEventHelper.postEventForAction(
@@ -111,7 +107,7 @@ implements ActionDomainEventFacet {
     }
 
     @Override
-    public String invalidates(final ValidityContext<? extends ValidityEvent> ic) {
+    public String invalidates(final ValidityContext ic) {
 
         _Assert.assertTrue(ic instanceof ActionValidityContext, ()->
             String.format("expecting an action context but got %s", ic.getIdentifier()));
@@ -137,7 +133,7 @@ implements ActionDomainEventFacet {
     
     // -- HELPER
     
-    private static ObjectAction actionFrom(final InteractionContext<?> ic) {
+    private static ObjectAction actionFrom(final InteractionContext ic) {
         if(!(ic instanceof ActionInteractionContext)) {
             throw new IllegalStateException(
                     "Expecting ic to be of type ActionInteractionContext, instead was: " + ic);
@@ -147,7 +143,7 @@ implements ActionDomainEventFacet {
 
     @Deprecated
     private static Can<ManagedObject> argumentAdaptersFrom(
-            final InteractionContext<? extends InteractionEvent> ic) {
+            final InteractionContext ic) {
 
         return Can.empty();
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/prototype/PrototypeFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/prototype/PrototypeFacetForActionAnnotation.java
index 9ff1bb0..611975a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/prototype/PrototypeFacetForActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/prototype/PrototypeFacetForActionAnnotation.java
@@ -29,7 +29,8 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet;
 import org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacetAbstract;
 
-public class PrototypeFacetForActionAnnotation extends PrototypeFacetAbstract {
+public class PrototypeFacetForActionAnnotation
+extends PrototypeFacetAbstract {
 
     public static PrototypeFacet create(
             final Optional<Action> actionsIfAny,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/NotInServiceMenuFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/NotInServiceMenuFacet.java
index f5d0a0b..0e8ef68 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/NotInServiceMenuFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/NotInServiceMenuFacet.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.actions.notinservicemenu;
 
-import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 
@@ -33,6 +32,6 @@ import org.apache.isis.core.metamodel.interactions.VisibilityContext;
  */
 public interface NotInServiceMenuFacet extends Facet {
 
-    String hides(VisibilityContext<? extends VisibilityEvent> ic);
+    String hides(VisibilityContext ic);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/derived/NotInServiceMenuFacetDerivedFromDomainServiceFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/derived/NotInServiceMenuFacetDerivedFromDomainServiceFacet.java
index 9526ddb..332da7a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/derived/NotInServiceMenuFacetDerivedFromDomainServiceFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/derived/NotInServiceMenuFacetDerivedFromDomainServiceFacet.java
@@ -22,13 +22,13 @@ package org.apache.isis.core.metamodel.facets.actions.notinservicemenu.derived;
 import java.util.Map;
 
 import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.actions.notinservicemenu.NotInServiceMenuFacetAbstract;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 
 
-public class NotInServiceMenuFacetDerivedFromDomainServiceFacet extends NotInServiceMenuFacetAbstract {
+public class NotInServiceMenuFacetDerivedFromDomainServiceFacet 
+extends NotInServiceMenuFacetAbstract {
 
     private final NatureOfService natureOfService;
 
@@ -39,7 +39,7 @@ public class NotInServiceMenuFacetDerivedFromDomainServiceFacet extends NotInSer
     }
 
     @Override
-    public String hides(final VisibilityContext<? extends VisibilityEvent> ic) {
+    public String hides(final VisibilityContext ic) {
         return String.format("@DomainService(nature=%s) annotation present", natureOfService);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/prototype/PrototypeFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/prototype/PrototypeFacetAbstract.java
index 27d72a4..9bc78fd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/prototype/PrototypeFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/prototype/PrototypeFacetAbstract.java
@@ -21,7 +21,6 @@ package org.apache.isis.core.metamodel.facets.actions.prototype;
 
 import java.util.Map;
 
-import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 import org.apache.isis.core.commons.internal.environment.DeploymentType;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
@@ -43,7 +42,7 @@ public abstract class PrototypeFacetAbstract extends FacetAbstract implements Pr
 
     @Override
     public String hides(
-            final VisibilityContext<? extends VisibilityEvent> ic) {
+            final VisibilityContext ic) {
         return deploymentType.isProduction()
                 ? "Prototyping action not visible in production mode"
                         : null;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/ActionParameterValidationFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/ActionParameterValidationFacetAbstract.java
index 25661be..bb2784a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/ActionParameterValidationFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/ActionParameterValidationFacetAbstract.java
@@ -19,14 +19,15 @@
 
 package org.apache.isis.core.metamodel.facets.actions.validate;
 
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.interactions.ActionArgValidityContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 
-public abstract class ActionParameterValidationFacetAbstract extends FacetAbstract implements ActionParameterValidationFacet {
+public abstract class ActionParameterValidationFacetAbstract 
+extends FacetAbstract 
+implements ActionParameterValidationFacet {
 
     public static Class<? extends Facet> type() {
         return ActionParameterValidationFacet.class;
@@ -37,7 +38,7 @@ public abstract class ActionParameterValidationFacetAbstract extends FacetAbstra
     }
 
     @Override
-    public String invalidates(final ValidityContext<? extends ValidityEvent> context) {
+    public String invalidates(final ValidityContext context) {
         if (!(context instanceof ActionArgValidityContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/ActionValidationFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/ActionValidationFacetAbstract.java
index daf44cd..2b4682c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/ActionValidationFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/ActionValidationFacetAbstract.java
@@ -19,14 +19,15 @@
 
 package org.apache.isis.core.metamodel.facets.actions.validate;
 
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.interactions.ActionValidityContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 
-public abstract class ActionValidationFacetAbstract extends FacetAbstract implements ActionValidationFacet {
+public abstract class ActionValidationFacetAbstract 
+extends FacetAbstract 
+implements ActionValidationFacet {
 
     public static Class<? extends Facet> type() {
         return ActionValidationFacet.class;
@@ -37,7 +38,7 @@ public abstract class ActionValidationFacetAbstract extends FacetAbstract implem
     }
 
     @Override
-    public String invalidates(final ValidityContext<? extends ValidityEvent> context) {
+    public String invalidates(final ValidityContext context) {
         if (!(context instanceof ActionValidityContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java
index b34d483..ff259b0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionDomainEventFacetAbstract.java
@@ -23,9 +23,6 @@ import org.apache.isis.applib.events.domain.AbstractDomainEvent;
 import org.apache.isis.applib.events.domain.CollectionDomainEvent;
 import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
-import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 import org.apache.isis.core.commons.internal.base._Casts;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
@@ -73,7 +70,7 @@ public abstract class CollectionDomainEventFacetAbstract extends SingleClassValu
     }
 
     @Override
-    public String hides(final VisibilityContext<? extends VisibilityEvent> ic) {
+    public String hides(final VisibilityContext ic) {
 
         final CollectionDomainEvent<?, ?> event =
                 domainEventHelper.postEventForCollection(
@@ -89,7 +86,7 @@ public abstract class CollectionDomainEventFacetAbstract extends SingleClassValu
     }
 
     @Override
-    public String disables(final UsabilityContext<? extends UsabilityEvent> ic) {
+    public String disables(final UsabilityContext ic) {
 
         final CollectionDomainEvent<?, ?> event =
                 domainEventHelper.postEventForCollection(
@@ -109,7 +106,7 @@ public abstract class CollectionDomainEventFacetAbstract extends SingleClassValu
     }
 
     @Override
-    public String invalidates(final ValidityContext<? extends ValidityEvent> ic) {
+    public String invalidates(final ValidityContext ic) {
 
         // if this is a mixin, then this ain't true.
         if(!(ic instanceof ProposedHolder)) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateAddToFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateAddToFacetAbstract.java
index 976accc..0cdeb01 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateAddToFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateAddToFacetAbstract.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.collections.validate;
 
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -37,7 +36,7 @@ public abstract class CollectionValidateAddToFacetAbstract extends FacetAbstract
     }
 
     @Override
-    public String invalidates(final ValidityContext<? extends ValidityEvent> context) {
+    public String invalidates(final ValidityContext context) {
         if (!(context instanceof CollectionAddToContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateRemoveFromFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateRemoveFromFacetAbstract.java
index 1bd106e..97a779b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateRemoveFromFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/validate/CollectionValidateRemoveFromFacetAbstract.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.collections.validate;
 
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -37,7 +36,7 @@ public abstract class CollectionValidateRemoveFromFacetAbstract extends FacetAbs
     }
 
     @Override
-    public String invalidates(final ValidityContext<? extends ValidityEvent> context) {
+    public String invalidates(final ValidityContext context) {
         if (!(context instanceof CollectionRemoveFromContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/MaxLengthFacetUnlimited.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/MaxLengthFacetUnlimited.java
index 5cddd8d..3818f4a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/MaxLengthFacetUnlimited.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/MaxLengthFacetUnlimited.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.fallback;
 
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacetAbstract;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
@@ -34,7 +33,7 @@ public class MaxLengthFacetUnlimited extends MaxLengthFacetAbstract {
      * No limit to maximum length.
      */
     @Override
-    public String invalidates(final ValidityContext<? extends ValidityEvent> context) {
+    public String invalidates(final ValidityContext context) {
         return null;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
index fddf865..715d2cc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
@@ -22,7 +22,6 @@ package org.apache.isis.core.metamodel.facets.members.disabled;
 import java.util.Map;
 
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.WhereValueFacetAbstract;
@@ -63,7 +62,7 @@ public abstract class DisabledFacetAbstract extends WhereValueFacetAbstract impl
     }
 
     @Override
-    public String disables(final UsabilityContext<? extends UsabilityEvent> ic) {
+    public String disables(final UsabilityContext ic) {
         if(isInvertedSemantics()) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetNone.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetNone.java
index 71cd0e3..44d0a39 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetNone.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetNone.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.members.disabled.method;
 
-import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 
@@ -36,7 +35,7 @@ public class DisableForContextFacetNone extends DisableForContextFacetAbstract {
      * Always returns <tt>null</tt>.
      */
     @Override
-    public String disables(final UsabilityContext<? extends UsabilityEvent> ic) {
+    public String disables(final UsabilityContext ic) {
         return null;
     }
 
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 4beb180..2b89362 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
@@ -26,7 +26,6 @@ import java.util.Map;
 
 import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
@@ -68,7 +67,7 @@ implements ImperativeFacet {
      * The reason this object is disabled, or <tt>null</tt> otherwise.
      */
     @Override
-    public String disables(final UsabilityContext<? extends UsabilityEvent> ic) {
+    public String disables(final UsabilityContext ic) {
         final ManagedObject target = ic.getTarget();
         if (target == null) {
             return null;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java
index 27115aa..10408fb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java
@@ -22,7 +22,6 @@ package org.apache.isis.core.metamodel.facets.members.hidden;
 import java.util.function.Predicate;
 
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
@@ -73,7 +72,7 @@ public abstract class HiddenFacetAbstract extends WhereValueFacetAbstract implem
     }
 
     @Override
-    public String hides(VisibilityContext<? extends VisibilityEvent> ic) {
+    public String hides(VisibilityContext ic) {
         return hiddenReason(ic.getTarget(), ic.getWhere());
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetNone.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetNone.java
index 888d9a8..7f9541c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetNone.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetNone.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.members.hidden.method;
 
-import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 
@@ -33,7 +32,7 @@ public class HideForContextFacetNone extends HideForContextFacetAbstract {
      * Always returns <tt>null</tt>.
      */
     @Override
-    public String hides(final VisibilityContext<? extends VisibilityEvent> ic) {
+    public String hides(final VisibilityContext ic) {
         return null;
     }
 
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 64dd903..e780c12 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
@@ -24,7 +24,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
@@ -54,7 +53,7 @@ public class HideForContextFacetViaMethod extends HideForContextFacetAbstract im
     }
 
     @Override
-    public String hides(final VisibilityContext<? extends VisibilityEvent> ic) {
+    public String hides(final VisibilityContext ic) {
         final ManagedObject target = ic.getTarget();
         if (target == null) {
             return null;
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 8df3625..8954dd6 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
@@ -21,8 +21,6 @@ package org.apache.isis.core.metamodel.facets.object.choices;
 
 import java.util.function.Predicate;
 
-import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
@@ -64,7 +62,7 @@ implements ChoicesFacet, DisablingInteractionAdvisor, ValidatingInteractionAdvis
     }
 
     @Override
-    public String invalidates(final ValidityContext<? extends ValidityEvent> context) {
+    public String invalidates(final ValidityContext context) {
         if (!(context instanceof ObjectValidityContext)) {
             return null;
         }
@@ -88,7 +86,7 @@ implements ChoicesFacet, DisablingInteractionAdvisor, ValidatingInteractionAdvis
     }
 
     @Override
-    public String disables(final UsabilityContext<? extends UsabilityEvent> context) {
+    public String disables(final UsabilityContext context) {
         final ManagedObject target = context.getTarget();
         return disabledReason(target);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/disabled/DisabledObjectFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/disabled/DisabledObjectFacetAbstract.java
index 559b0b6..1348e71 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/disabled/DisabledObjectFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/disabled/DisabledObjectFacetAbstract.java
@@ -20,7 +20,6 @@
 package org.apache.isis.core.metamodel.facets.object.disabled;
 
 import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -38,10 +37,7 @@ public abstract class DisabledObjectFacetAbstract extends FacetAbstract implemen
     }
 
     @Override
-    public String disables(final UsabilityContext<? extends UsabilityEvent> ic) {
-        if (!(ic instanceof UsabilityContext)) {
-            return null;
-        }
+    public String disables(final UsabilityContext ic) {
         final ManagedObject toDisable = ic.getTarget();
         final Identifier identifier = ic.getIdentifier();
         return toDisable != null ? disabledReason(toDisable, identifier) : null;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/HiddenObjectFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/HiddenObjectFacetAbstract.java
index 4144d9d..a099978 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/HiddenObjectFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/HiddenObjectFacetAbstract.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.object.hidden;
 
-import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -37,10 +36,7 @@ public abstract class HiddenObjectFacetAbstract extends FacetAbstract implements
     }
 
     @Override
-    public String hides(final VisibilityContext<? extends VisibilityEvent> ic) {
-        if (!(ic instanceof VisibilityContext)) {
-            return null;
-        }
+    public String hides(final VisibilityContext ic) {
         final ManagedObject toValidate = ic.getTarget();
         return toValidate != null ? hiddenReason(toValidate) : null;
     }
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 4aafdd6..11aae63 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
@@ -22,14 +22,15 @@ package org.apache.isis.core.metamodel.facets.object.hidden.method;
 import java.lang.reflect.Method;
 import java.util.Map;
 
-import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 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;
 
-public class HiddenObjectFacetViaMethod extends HiddenObjectFacetAbstract {
+public class HiddenObjectFacetViaMethod 
+extends HiddenObjectFacetAbstract {
+    
     private final Method method;
 
     public HiddenObjectFacetViaMethod(final Method method, final FacetHolder holder) {
@@ -38,7 +39,7 @@ public class HiddenObjectFacetViaMethod extends HiddenObjectFacetAbstract {
     }
 
     @Override
-    public String hides(final VisibilityContext<? extends VisibilityEvent> ic) {
+    public String hides(final VisibilityContext ic) {
         final ManagedObject toValidate = ic.getTarget();
         return toValidate != null ? hiddenReason(toValidate) : null;
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetAbstract.java
index cd912e8..60036b3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetAbstract.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.object.immutable;
 
-import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -40,7 +39,7 @@ public abstract class ImmutableFacetAbstract extends FacetAbstract implements Im
      * Immutable facet only prevents changes to a property or a collection.
      */
     @Override
-    public String disables(final UsabilityContext<? extends UsabilityEvent> ic) {
+    public String disables(final UsabilityContext ic) {
         final ManagedObject target = ic.getTarget();
         switch (ic.getInteractionType()) {
         case PROPERTY_MODIFY:
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectvalidprops/ObjectValidPropertiesFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectvalidprops/ObjectValidPropertiesFacetAbstract.java
index 8e26cd4..e91b186 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectvalidprops/ObjectValidPropertiesFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectvalidprops/ObjectValidPropertiesFacetAbstract.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.object.objectvalidprops;
 
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -37,7 +36,7 @@ public abstract class ObjectValidPropertiesFacetAbstract extends FacetAbstract i
     }
 
     @Override
-    public String invalidates(final ValidityContext<? extends ValidityEvent> ic) {
+    public String invalidates(final ValidityContext ic) {
         if (!(ic instanceof ObjectValidityContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
index c1d21e4..dd5ba30 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
@@ -108,7 +108,7 @@ implements ParseableFacet {
         }
     }
 
-    private void validate(final ValidityContext<?> validityContext) {
+    private void validate(final ValidityContext validityContext) {
         final InteractionResultSet resultSet = new InteractionResultSet();
         InteractionUtils.isValidResultSet(getFacetHolder(), validityContext, resultSet);
         if (resultSet.isVetoed()) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ValidateObjectFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ValidateObjectFacetAbstract.java
index 0702d73..3dfb377 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ValidateObjectFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/ValidateObjectFacetAbstract.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.object.validating.validateobject;
 
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -38,7 +37,7 @@ public abstract class ValidateObjectFacetAbstract extends FacetAbstract implemen
     }
 
     @Override
-    public String invalidates(final ValidityContext<? extends ValidityEvent> vc) {
+    public String invalidates(final ValidityContext vc) {
         if (!(vc instanceof ObjectValidityContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java
index 201e676..555890e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java
@@ -21,7 +21,6 @@ package org.apache.isis.core.metamodel.facets.objectvalue.mandatory;
 
 import java.util.Map;
 
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.core.commons.internal.base._Strings;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
@@ -82,7 +81,7 @@ public abstract class MandatoryFacetAbstract extends FacetAbstract implements Ma
     }
 
     @Override
-    public String invalidates(final ValidityContext<? extends ValidityEvent> context) {
+    public String invalidates(final ValidityContext context) {
         if (!(context instanceof PropertyModifyContext) && !(context instanceof ActionArgValidityContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxLengthFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxLengthFacetAbstract.java
index 6107c77..cf6030f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxLengthFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxLengthFacetAbstract.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.objectvalue.maxlen;
 
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.SingleIntValueFacetAbstract;
@@ -54,7 +53,7 @@ public abstract class MaxLengthFacetAbstract extends SingleIntValueFacetAbstract
     }
 
     @Override
-    public String invalidates(final ValidityContext<? extends ValidityEvent> context) {
+    public String invalidates(final ValidityContext context) {
         if (!(context instanceof ProposedHolder)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java
index 138ad57..5500bcc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java
@@ -27,10 +27,7 @@ import java.util.stream.Collectors;
 
 import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.applib.services.inject.ServiceInjector;
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.applib.spec.Specification;
-import org.apache.isis.core.commons.internal.collections._Lists;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -72,7 +69,7 @@ public abstract class MustSatisfySpecificationFacetAbstract extends FacetAbstrac
     }
 
     @Override
-    public String invalidates(final ValidityContext<? extends ValidityEvent> validityContext) {
+    public String invalidates(final ValidityContext validityContext) {
         if (!(validityContext instanceof ProposedHolder)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/regex/RegExFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/regex/RegExFacetAbstract.java
index a9d9789..3afceed 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/regex/RegExFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/regex/RegExFacetAbstract.java
@@ -21,7 +21,6 @@ package org.apache.isis.core.metamodel.facets.objectvalue.regex;
 
 import javax.validation.constraints.Pattern;
 
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -84,7 +83,7 @@ public abstract class RegExFacetAbstract extends FacetAbstract implements RegExF
     // //////////////////////////////////////////////////////////
 
     @Override
-    public String invalidates(final ValidityContext<? extends ValidityEvent> context) {
+    public String invalidates(final ValidityContext context) {
         if (!(context instanceof ProposedHolder)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/ActionParameterDisabledFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/ActionParameterDisabledFacetAbstract.java
index 3fb41b6..fa049f0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/ActionParameterDisabledFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/ActionParameterDisabledFacetAbstract.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.param.disable;
 
-import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -39,7 +38,7 @@ implements ActionParameterDisabledFacet {
     }
 
     @Override
-    public String disables(final UsabilityContext<? extends UsabilityEvent> context) {
+    public String disables(final UsabilityContext context) {
         if (!(context instanceof ActionArgUsabilityContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/ActionParameterHiddenFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/ActionParameterHiddenFacetAbstract.java
index 67661a1..42b68d4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/ActionParameterHiddenFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/ActionParameterHiddenFacetAbstract.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.param.hide;
 
-import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -41,7 +40,7 @@ implements ActionParameterHiddenFacet {
     }
 
     @Override
-    public String hides(final VisibilityContext<? extends VisibilityEvent> context) {
+    public String hides(final VisibilityContext context) {
         if (!(context instanceof ActionArgVisibilityContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/ActionParameterValidationFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/ActionParameterValidationFacetAbstract.java
index b18c365..d85d764 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/ActionParameterValidationFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/ActionParameterValidationFacetAbstract.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.param.validate;
 
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -41,7 +40,7 @@ implements ActionParameterValidationFacet {
     }
 
     @Override
-    public String invalidates(final ValidityContext<? extends ValidityEvent> context) {
+    public String invalidates(final ValidityContext context) {
         if (!(context instanceof ActionArgValidityContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
index a85714b..f3e47b1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertyDomainEventFacetAbstract.java
@@ -26,9 +26,6 @@ import org.apache.isis.applib.events.domain.AbstractDomainEvent;
 import org.apache.isis.applib.events.domain.PropertyDomainEvent;
 import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
-import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 import org.apache.isis.core.commons.internal.base._Casts;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
@@ -90,7 +87,7 @@ extends SingleClassValueFacetAbstract implements PropertyDomainEventFacet {
     }
 
     @Override
-    public String hides(VisibilityContext<? extends VisibilityEvent> ic) {
+    public String hides(VisibilityContext ic) {
 
         final PropertyDomainEvent<?, ?> event =
                 domainEventHelper.postEventForProperty(
@@ -105,7 +102,7 @@ extends SingleClassValueFacetAbstract implements PropertyDomainEventFacet {
     }
 
     @Override
-    public String disables(UsabilityContext<? extends UsabilityEvent> ic) {
+    public String disables(UsabilityContext ic) {
 
         final PropertyDomainEvent<?, ?> event =
                 domainEventHelper.postEventForProperty(
@@ -124,7 +121,7 @@ extends SingleClassValueFacetAbstract implements PropertyDomainEventFacet {
     }
 
     @Override
-    public String invalidates(ValidityContext<? extends ValidityEvent> ic) {
+    public String invalidates(ValidityContext ic) {
 
         if(getterFacetIfAny == null) {
             return null;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/PropertyValidateFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/PropertyValidateFacetAbstract.java
index 8a6d845..136dacc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/PropertyValidateFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/PropertyValidateFacetAbstract.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.properties.validating;
 
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -39,7 +38,7 @@ public abstract class PropertyValidateFacetAbstract extends FacetAbstract implem
     }
 
     @Override
-    public String invalidates(final ValidityContext<? extends ValidityEvent> context) {
+    public String invalidates(final ValidityContext context) {
         if (!(context instanceof PropertyModifyContext)) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/dflt/PropertyValidateFacetDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/dflt/PropertyValidateFacetDefault.java
index 6d495bb..968363c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/dflt/PropertyValidateFacetDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/dflt/PropertyValidateFacetDefault.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.properties.validating.dflt;
 
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.properties.validating.PropertyValidateFacet;
@@ -33,7 +32,7 @@ import org.apache.isis.core.metamodel.spec.ManagedObject;
 public class PropertyValidateFacetDefault extends FacetAbstract implements PropertyValidateFacet {
 
     @Override
-    public String invalidates(final ValidityContext<? extends ValidityEvent> ic) {
+    public String invalidates(final ValidityContext ic) {
         return null;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/AccessContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/AccessContext.java
index ec3cb1f..c3664e7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/AccessContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/AccessContext.java
@@ -29,7 +29,9 @@ import org.apache.isis.core.metamodel.spec.ManagedObject;
  * See {@link InteractionContext} for overview; analogous to {@link AccessEvent}
  * .
  */
-public abstract class AccessContext<T extends AccessEvent> extends InteractionContext<T> {
+public abstract class AccessContext
+extends InteractionContext
+implements InteractionEventSupplier<AccessEvent> {
 
     public AccessContext(
             final InteractionContextType interactionType,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgUsabilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgUsabilityContext.java
index 3553512..f6715ba 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgUsabilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgUsabilityContext.java
@@ -36,7 +36,7 @@ import lombok.Getter;
  * {@link ActionArgumentEvent}.
  */
 public class ActionArgUsabilityContext 
-extends UsabilityContext<ActionArgumentUsabilityEvent> 
+extends UsabilityContext 
 implements ActionInteractionContext {
 
     @Getter(onMethod = @__(@Override)) private final ObjectAction objectAction;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgValidityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgValidityContext.java
index d819227..85435c7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgValidityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgValidityContext.java
@@ -36,7 +36,7 @@ import lombok.Getter;
  * {@link ActionArgumentEvent}.
  */
 public class ActionArgValidityContext 
-extends ValidityContext<ActionArgumentEvent> 
+extends ValidityContext 
 implements ProposedHolder, ActionInteractionContext {
 
     @Getter(onMethod = @__(@Override)) private final ObjectAction objectAction;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgVisibilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgVisibilityContext.java
index 8cc07f5..2aa1e58 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgVisibilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgVisibilityContext.java
@@ -36,7 +36,7 @@ import lombok.Getter;
  * {@link ActionArgumentEvent}.
  */
 public class ActionArgVisibilityContext 
-extends VisibilityContext<ActionArgumentVisibilityEvent> 
+extends VisibilityContext 
 implements ActionInteractionContext {
 
     @Getter(onMethod = @__(@Override)) private final ObjectAction objectAction;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionUsabilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionUsabilityContext.java
index 8894b10..8e908b8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionUsabilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionUsabilityContext.java
@@ -19,6 +19,8 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
+import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.wrapper.events.ActionUsabilityEvent;
@@ -27,13 +29,13 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 
-import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
-
 /**
  * See {@link InteractionContext} for overview; analogous to
  * {@link ActionUsabilityEvent}.
  */
-public class ActionUsabilityContext extends UsabilityContext<ActionUsabilityEvent> implements ActionInteractionContext {
+public class ActionUsabilityContext 
+extends UsabilityContext 
+implements ActionInteractionContext {
 
     private final ObjectAction objectAction;
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionValidityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionValidityContext.java
index 624533b..c8652f8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionValidityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionValidityContext.java
@@ -19,6 +19,8 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
+import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.ActionInvocationEvent;
 import org.apache.isis.core.commons.collections.Can;
@@ -27,8 +29,6 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 
-import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
-
 import lombok.Getter;
 
 /**
@@ -36,7 +36,7 @@ import lombok.Getter;
  * {@link ActionInvocationEvent}.
  */
 public class ActionValidityContext
-extends ValidityContext<ActionInvocationEvent> 
+extends ValidityContext 
 implements ActionInteractionContext {
 
     @Getter(onMethod = @__(@Override)) private final ObjectAction objectAction;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionVisibilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionVisibilityContext.java
index 4a224f2..20b5b4d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionVisibilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionVisibilityContext.java
@@ -19,6 +19,8 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
+import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.wrapper.events.ActionVisibilityEvent;
@@ -27,13 +29,13 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 
-import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
-
 /**
  * See {@link InteractionContext} for overview; analogous to
  * {@link ActionVisibilityEvent}.
  */
-public class ActionVisibilityContext extends VisibilityContext<ActionVisibilityEvent> implements ActionInteractionContext  {
+public class ActionVisibilityContext 
+extends VisibilityContext 
+implements ActionInteractionContext  {
 
     private final ObjectAction objectAction;
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionAccessContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionAccessContext.java
index c998083..5bc33ce 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionAccessContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionAccessContext.java
@@ -19,19 +19,19 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
+import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.CollectionAccessEvent;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 
-import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
-
 /**
  * See {@link InteractionContext} for overview; analogous to
  * {@link CollectionAccessEvent}.
  */
-public class CollectionAccessContext extends AccessContext<CollectionAccessEvent> {
+public class CollectionAccessContext extends AccessContext {
 
     public CollectionAccessContext(
             final ManagedObject target,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionAddToContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionAddToContext.java
index 6ffb00b..19abf10 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionAddToContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionAddToContext.java
@@ -29,7 +29,9 @@ import org.apache.isis.core.metamodel.spec.ManagedObject;
  * See {@link InteractionContext} for overview; analogous to
  * {@link CollectionAddToEvent}.
  */
-public class CollectionAddToContext extends ValidityContext<CollectionAddToEvent> implements ProposedHolder {
+public class CollectionAddToContext 
+extends ValidityContext 
+implements ProposedHolder {
 
     private final ManagedObject proposed;
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionRemoveFromContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionRemoveFromContext.java
index 0be4241..ffad55e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionRemoveFromContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionRemoveFromContext.java
@@ -19,19 +19,21 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
+import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.CollectionRemoveFromEvent;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 
-import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
-
 /**
  * See {@link InteractionContext} for overview; analogous to
  * {@link CollectionRemoveFromEvent}.
  */
-public class CollectionRemoveFromContext extends ValidityContext<CollectionRemoveFromEvent> implements ProposedHolder{
+public class CollectionRemoveFromContext 
+extends ValidityContext 
+implements ProposedHolder{
 
     private final ManagedObject proposed;
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionUsabilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionUsabilityContext.java
index 9127a88..fbae023 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionUsabilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionUsabilityContext.java
@@ -30,7 +30,8 @@ import org.apache.isis.core.metamodel.spec.ManagedObject;
  * See {@link InteractionContext} for overview; analogous to
  * {@link CollectionUsabilityEvent}.
  */
-public class CollectionUsabilityContext extends UsabilityContext<CollectionUsabilityEvent> {
+public class CollectionUsabilityContext 
+extends UsabilityContext {
 
     public CollectionUsabilityContext(
             final ManagedObject targetAdapter,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionVisibilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionVisibilityContext.java
index a11c1f6..478736e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionVisibilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionVisibilityContext.java
@@ -19,6 +19,8 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
+import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.wrapper.events.CollectionVisibilityEvent;
@@ -26,13 +28,12 @@ import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 
-import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
-
 /**
  * See {@link InteractionContext} for overview; analogous to
  * {@link CollectionVisibilityEvent}.
  */
-public class CollectionVisibilityContext extends VisibilityContext<CollectionVisibilityEvent> {
+public class CollectionVisibilityContext 
+extends VisibilityContext {
 
     public CollectionVisibilityContext(
             final ManagedObject target,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/DisablingInteractionAdvisor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/DisablingInteractionAdvisor.java
index a85fa1b..fc188e2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/DisablingInteractionAdvisor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/DisablingInteractionAdvisor.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
-import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract.Disabling;
 
 /**
@@ -41,6 +40,6 @@ public interface DisablingInteractionAdvisor extends InteractionAdvisorFacet, Di
      * They must however guard against a <tt>null</tt>
      * {@link InteractionContext#getTarget() target} - this is not guaranteed to be populated.
      */
-    String disables(final UsabilityContext<? extends UsabilityEvent> ic);
+    String disables(UsabilityContext ic);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/HidingInteractionAdvisor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/HidingInteractionAdvisor.java
index e969084..10fc8cf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/HidingInteractionAdvisor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/HidingInteractionAdvisor.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
-import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract.Hiding;
 
 /**
@@ -43,5 +42,5 @@ public interface HidingInteractionAdvisor extends InteractionAdvisorFacet, Hidin
      * {@link InteractionContext#getSession() session} - neither are guaranteed
      * to be populated.
      */
-    String hides(final VisibilityContext<? extends VisibilityEvent> ic);
+    String hides(VisibilityContext ic);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionContext.java
index 778ff21..7ca66ae 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionContext.java
@@ -53,7 +53,7 @@ import org.apache.isis.core.security.authentication.AuthenticationSession;
  * The class is generic so that the {@link #createInteractionEvent() factory
  * method} can return the correct subclass without having to downcast.
  */
-public abstract class InteractionContext<T extends InteractionEvent> {
+public abstract class InteractionContext {
 
     private final InteractionContextType interactionType;
     private final InteractionInitiatedBy interactionInitiatedBy;
@@ -136,13 +136,6 @@ public abstract class InteractionContext<T extends InteractionEvent> {
         return mixedInAdapter;
     }
 
-    // //////////////////////////////////////
-
-    /**
-     * Factory method to create corresponding {@link InteractionEvent}.
-     *
-     * @return
-     */
-    public abstract T createInteractionEvent();
+    
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/NotInServiceMenuFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionEventSupplier.java
similarity index 57%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/NotInServiceMenuFacet.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionEventSupplier.java
index f5d0a0b..1f3062a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/notinservicemenu/NotInServiceMenuFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionEventSupplier.java
@@ -16,23 +16,21 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
+package org.apache.isis.core.metamodel.interactions;
 
-package org.apache.isis.core.metamodel.facets.actions.notinservicemenu;
-
-import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.interactions.VisibilityContext;
+import org.apache.isis.applib.services.wrapper.events.InteractionEvent;
 
 /**
- * Indicates that the (repository) action should not be contributed to any
- * objects.
+ * 
+ * @since 2.0
  *
- * <p>
- * In the standard Apache Isis Programming Model, corresponds to annotating the
- * action method using <tt>@NotContributed</tt>.
+ * @param <T>
  */
-public interface NotInServiceMenuFacet extends Facet {
-
-    String hides(VisibilityContext<? extends VisibilityEvent> ic);
+public interface InteractionEventSupplier<T extends InteractionEvent> {
 
+    /**
+     * Factory method to create an {@link InteractionEvent}.
+     */
+    T createInteractionEvent();
+    
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionUtils.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionUtils.java
index 8af335c..02c80ae 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionUtils.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionUtils.java
@@ -30,7 +30,7 @@ import lombok.val;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class InteractionUtils {
 
-    public static InteractionResult isVisibleResult(FacetHolder facetHolder, VisibilityContext<?> context) {
+    public static InteractionResult isVisibleResult(FacetHolder facetHolder, VisibilityContext context) {
         
         val iaResult = new InteractionResult(context.createInteractionEvent());
         
@@ -43,7 +43,7 @@ public final class InteractionUtils {
         return iaResult;
     }
 
-    public static InteractionResult isUsableResult(FacetHolder facetHolder, UsabilityContext<?> context) {
+    public static InteractionResult isUsableResult(FacetHolder facetHolder, UsabilityContext context) {
         
         val isResult = new InteractionResult(context.createInteractionEvent());
         
@@ -59,7 +59,7 @@ public final class InteractionUtils {
         return isResult;
     }
 
-    public static InteractionResult isValidResult(FacetHolder facetHolder, ValidityContext<?> context) {
+    public static InteractionResult isValidResult(FacetHolder facetHolder, ValidityContext context) {
         
         val iaResult = new InteractionResult(context.createInteractionEvent());
         
@@ -74,7 +74,7 @@ public final class InteractionUtils {
 
     public static InteractionResultSet isValidResultSet(
             FacetHolder facetHolder, 
-            ValidityContext<?> context, 
+            ValidityContext context, 
             InteractionResultSet resultSet) {
         
         return resultSet.add(isValidResult(facetHolder, context));
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectTitleContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectTitleContext.java
index c794a1f..65795d6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectTitleContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectTitleContext.java
@@ -19,19 +19,20 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
+import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.ObjectTitleEvent;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 
-import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
-
 /**
  * See {@link InteractionContext} for overview; analogous to
  * {@link ObjectTitleEvent}.
  */
-public class ObjectTitleContext extends AccessContext<ObjectTitleEvent> {
+public class ObjectTitleContext 
+extends AccessContext {
 
     private final String title;
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectValidityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectValidityContext.java
index 383866c..628045e9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectValidityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectValidityContext.java
@@ -19,19 +19,21 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
+import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.ObjectValidityEvent;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 
-import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
-
 /**
  * See {@link InteractionContext} for overview; analogous to
  * {@link ObjectValidityEvent}.
  */
-public class ObjectValidityContext extends ValidityContext<ObjectValidityEvent> implements ProposedHolder {
+public class ObjectValidityContext
+extends ValidityContext 
+implements ProposedHolder {
 
     public ObjectValidityContext(
             final ManagedObject targetAdapter,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectVisibilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectVisibilityContext.java
index 9c64b8d..5d8500a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectVisibilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectVisibilityContext.java
@@ -19,6 +19,8 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
+import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.wrapper.events.ObjectVisibilityEvent;
@@ -26,13 +28,13 @@ import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 
-import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
-
 /**
  * See {@link InteractionContext} for overview; analogous to
  * {@link ObjectVisibilityEvent}.
  */
-public class ObjectVisibilityContext extends VisibilityContext<ObjectVisibilityEvent> implements ProposedHolder {
+public class ObjectVisibilityContext 
+extends VisibilityContext 
+implements ProposedHolder {
 
     public ObjectVisibilityContext(
             final ManagedObject targetAdapter,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ParseValueContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ParseValueContext.java
index 9249253..b97bdbf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ParseValueContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ParseValueContext.java
@@ -19,19 +19,21 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
+import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.ParseValueEvent;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 
-import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
-
 /**
  * See {@link InteractionContext} for overview; analogous to
  * {@link ParseValueEvent}.
  */
-public class ParseValueContext extends ValidityContext<ParseValueEvent> implements ProposedHolder {
+public class ParseValueContext 
+extends ValidityContext 
+implements ProposedHolder {
 
     private final ManagedObject proposed;
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyAccessContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyAccessContext.java
index ec27c8f..acfdf6e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyAccessContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyAccessContext.java
@@ -19,19 +19,20 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
+import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.PropertyAccessEvent;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 
-import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
-
 /**
  * See {@link InteractionContext} for overview; analogous to
  * {@link PropertyAccessEvent}.
  */
-public class PropertyAccessContext extends AccessContext<PropertyAccessEvent> {
+public class PropertyAccessContext 
+extends AccessContext {
 
     private final ManagedObject value;
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyModifyContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyModifyContext.java
index 35e7455..6fe63e7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyModifyContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyModifyContext.java
@@ -19,19 +19,21 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
+import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.PropertyModifyEvent;
 import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 
-import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
-
 /**
  * See {@link InteractionContext} for overview; analogous to
  * {@link PropertyModifyEvent}.
  */
-public class PropertyModifyContext extends ValidityContext<PropertyModifyEvent> implements ProposedHolder {
+public class PropertyModifyContext
+extends ValidityContext
+implements ProposedHolder {
 
     private final ManagedObject proposed;
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyUsabilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyUsabilityContext.java
index 6c64d58..616876a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyUsabilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyUsabilityContext.java
@@ -19,6 +19,8 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
+import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.wrapper.events.PropertyUsabilityEvent;
@@ -26,13 +28,12 @@ import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 
-import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
-
 /**
  * See {@link InteractionContext} for overview; analogous to
  * {@link PropertyUsabilityEvent}.
  */
-public class PropertyUsabilityContext extends UsabilityContext<PropertyUsabilityEvent> {
+public class PropertyUsabilityContext 
+extends UsabilityContext {
 
     public PropertyUsabilityContext(
             final ManagedObject targetAdapter,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyVisibilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyVisibilityContext.java
index 0439e7d..908f5d4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyVisibilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyVisibilityContext.java
@@ -19,6 +19,8 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
+import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.wrapper.events.PropertyVisibilityEvent;
@@ -26,13 +28,11 @@ import org.apache.isis.core.metamodel.consent.InteractionContextType;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 
-import static org.apache.isis.core.metamodel.spec.ManagedObject.unwrapSingle;
-
 /**
  * See {@link InteractionContext} for overview; analogous to
  * {@link PropertyVisibilityEvent}.
  */
-public class PropertyVisibilityContext extends VisibilityContext<PropertyVisibilityEvent> {
+public class PropertyVisibilityContext extends VisibilityContext {
 
     public PropertyVisibilityContext(
             final ManagedObject targetAdapter,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/UsabilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/UsabilityContext.java
index a6506c9..ac934c7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/UsabilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/UsabilityContext.java
@@ -30,7 +30,9 @@ import org.apache.isis.core.metamodel.spec.ManagedObject;
  * See {@link InteractionContext} for overview; analogous to
  * {@link UsabilityEvent}.
  */
-public abstract class UsabilityContext<T extends UsabilityEvent> extends InteractionContext<T> {
+public abstract class UsabilityContext 
+extends InteractionContext
+implements InteractionEventSupplier<UsabilityEvent> {
 
     private final Where where;
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ValidatingInteractionAdvisor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ValidatingInteractionAdvisor.java
index 9e0bc12..86442e1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ValidatingInteractionAdvisor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ValidatingInteractionAdvisor.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract.Validating;
 
@@ -47,5 +46,5 @@ public interface ValidatingInteractionAdvisor extends InteractionAdvisorFacet, V
      * and {@link ValidityContext#getSession() session} - neither are guaranteed
      * to be populated.
      */
-    String invalidates(final ValidityContext<? extends ValidityEvent> ic);
+    String invalidates(ValidityContext ic);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ValidityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ValidityContext.java
index bd65853..0004bd9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ValidityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ValidityContext.java
@@ -29,7 +29,9 @@ import org.apache.isis.core.metamodel.spec.ManagedObject;
  * See {@link InteractionContext} for overview; analogous to
  * {@link ValidityEvent}
  */
-public abstract class ValidityContext<T extends ValidityEvent> extends InteractionContext<T> {
+public abstract class ValidityContext 
+extends InteractionContext
+implements InteractionEventSupplier<ValidityEvent> {
 
     public ValidityContext(
             final InteractionContextType interactionType,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/VisibilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/VisibilityContext.java
index e9f368d..df1648e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/VisibilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/VisibilityContext.java
@@ -30,7 +30,9 @@ import org.apache.isis.core.metamodel.spec.ManagedObject;
  * See {@link InteractionContext} for overview; analogous to
  * {@link VisibilityEvent}.
  */
-public abstract class VisibilityContext<T extends VisibilityEvent> extends InteractionContext<T> {
+public abstract class VisibilityContext 
+extends InteractionContext
+implements InteractionEventSupplier<VisibilityEvent> {
 
     private Where where;
 
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 185836e..898aa99 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
@@ -593,7 +593,7 @@ public interface ManagedObject {
                     .isNotVetoing();
         }
 
-        private static VisibilityContext<?> createVisibleInteractionContextForUser(
+        private static VisibilityContext createVisibleInteractionContextForUser(
                 ManagedObject adapter) {
 
             return new ObjectVisibilityContext(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
index 3648295..6cfe652 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
@@ -228,16 +228,18 @@ public class ObjectActionDefault extends ObjectMemberAbstract implements ObjectA
     // -- visable, usable
 
     @Override
-    public VisibilityContext<?> createVisibleInteractionContext(
-            final ManagedObject targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
-            Where where) {
+    public VisibilityContext createVisibleInteractionContext(
+            final ManagedObject targetObjectAdapter, 
+            final InteractionInitiatedBy interactionInitiatedBy,
+            final Where where) {
         return new ActionVisibilityContext(targetObjectAdapter, this, getIdentifier(), interactionInitiatedBy, where);
     }
 
     @Override
-    public UsabilityContext<?> createUsableInteractionContext(
-            final ManagedObject targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
-            Where where) {
+    public UsabilityContext createUsableInteractionContext(
+            final ManagedObject targetObjectAdapter, 
+            final InteractionInitiatedBy interactionInitiatedBy,
+            final Where where) {
         return new ActionUsabilityContext(targetObjectAdapter, this, getIdentifier(), interactionInitiatedBy, where);
     }
 
@@ -308,7 +310,7 @@ public class ObjectActionDefault extends ObjectMemberAbstract implements ObjectA
         val actionParameters = getParameters();
         if (proposedArguments != null) {
             for (int i = 0; i < proposedArguments.size(); i++) {
-                final ValidityContext<?> ic = actionParameters.getElseFail(i)
+                final ValidityContext ic = actionParameters.getElseFail(i)
                         .createProposedArgumentInteractionContext(
                                 objectAdapter, proposedArguments, i, interactionInitiatedBy);
                 
@@ -348,7 +350,7 @@ public class ObjectActionDefault extends ObjectMemberAbstract implements ObjectA
             final InteractionInitiatedBy interactionInitiatedBy,
             final InteractionResultSet resultSet) {
         
-        final ValidityContext<?> ic = createActionInvocationInteractionContext(
+        final ValidityContext ic = createActionInvocationInteractionContext(
                 objectAdapter, proposedArguments, interactionInitiatedBy);
         InteractionUtils.isValidResultSet(this, ic, resultSet);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
index 1396c07..c473fd4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
@@ -176,7 +176,7 @@ public class ObjectActionMixedIn extends ObjectActionDefault implements MixedInM
             final Where where) {
 
         final ManagedObject mixinAdapter = mixinAdapterFor(mixinType, mixedInAdapter);
-        final VisibilityContext<?> ic =
+        final VisibilityContext ic =
                 mixinAction.createVisibleInteractionContext(mixinAdapter, interactionInitiatedBy, where);
         ic.setMixedIn(mixedInAdapter);
         return InteractionUtils.isVisibleResult(this, ic).createConsent();
@@ -188,7 +188,7 @@ public class ObjectActionMixedIn extends ObjectActionDefault implements MixedInM
             final InteractionInitiatedBy interactionInitiatedBy, final Where where) {
 
         final ManagedObject mixinAdapter = mixinAdapterFor(mixinType, mixedInAdapter);
-        final UsabilityContext<?> ic =
+        final UsabilityContext ic =
                 mixinAction.createUsableInteractionContext(mixinAdapter, interactionInitiatedBy, where);
         ic.setMixedIn(mixedInAdapter);
         return InteractionUtils.isUsableResult(this, ic).createConsent();
@@ -221,7 +221,7 @@ public class ObjectActionMixedIn extends ObjectActionDefault implements MixedInM
 
         final ManagedObject targetObject = mixinAdapterFor(mixinType, mixedInAdapter);
 
-        final ValidityContext<?> ic =
+        final ValidityContext ic =
                 mixinAction.createActionInvocationInteractionContext(targetObject, proposedArguments, interactionInitiatedBy);
         ic.setMixedIn(mixedInAdapter);
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
index dbf0a81..26b0b55 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
@@ -19,6 +19,8 @@
 
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
+import static org.apache.isis.core.commons.internal.base._With.requires;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -59,8 +61,6 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
-import static org.apache.isis.core.commons.internal.base._With.requires;
-
 import lombok.NonNull;
 import lombok.val;
 
@@ -320,7 +320,7 @@ implements ObjectActionParameter, FacetHolder.Delegating {
             final Can<ManagedObject> pendingArgs,
             final InteractionInitiatedBy interactionInitiatedBy) {
 
-        final VisibilityContext<?> ic = createArgumentVisibilityContext(
+        final VisibilityContext ic = createArgumentVisibilityContext(
                 targetAdapter, pendingArgs, getNumber(), interactionInitiatedBy);
 
         final InteractionResult visibleResult = InteractionUtils.isVisibleResult(this, ic);
@@ -352,7 +352,7 @@ implements ObjectActionParameter, FacetHolder.Delegating {
             final Can<ManagedObject> pendingArgs,
             final InteractionInitiatedBy interactionInitiatedBy) {
 
-        final UsabilityContext<?> ic = createArgumentUsabilityContext(
+        final UsabilityContext ic = createArgumentUsabilityContext(
                 targetAdapter, pendingArgs, getNumber(), interactionInitiatedBy);
 
         final InteractionResult usableResult = InteractionUtils.isUsableResult(this, ic);
@@ -395,7 +395,7 @@ implements ObjectActionParameter, FacetHolder.Delegating {
         }
 
         val argumentAdapters = arguments(proposedValueAdapter);
-        final ValidityContext<?> ic = createProposedArgumentInteractionContext(
+        final ValidityContext ic = createProposedArgumentInteractionContext(
                 objectAdapter, argumentAdapters, getNumber(), interactionInitiatedBy);
 
         final InteractionResultSet buf = new InteractionResultSet();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
index e0f7f33..890897b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
@@ -157,7 +157,7 @@ implements ObjectMember, MetaModelContext.Delegating, FacetHolder.Delegating {
      * provided as API for symmetry with interactions (such as
      * {@link AccessContext} accesses) have no corresponding vetoing methods.
      */
-    protected abstract VisibilityContext<?> createVisibleInteractionContext(
+    protected abstract VisibilityContext createVisibleInteractionContext(
             final ManagedObject targetObjectAdapter,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where);
@@ -190,7 +190,7 @@ implements ObjectMember, MetaModelContext.Delegating, FacetHolder.Delegating {
             final ManagedObject target,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where) {
-        final VisibilityContext<?> ic = createVisibleInteractionContext(target, interactionInitiatedBy, where);
+        final VisibilityContext ic = createVisibleInteractionContext(target, interactionInitiatedBy, where);
         return InteractionUtils.isVisibleResult(this, ic);
     }
 
@@ -206,7 +206,7 @@ implements ObjectMember, MetaModelContext.Delegating, FacetHolder.Delegating {
      * provided as API for symmetry with interactions (such as
      * {@link AccessContext} accesses) have no corresponding vetoing methods.
      */
-    protected abstract UsabilityContext<?> createUsableInteractionContext(
+    protected abstract UsabilityContext createUsableInteractionContext(
             final ManagedObject target,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where);
@@ -227,7 +227,7 @@ implements ObjectMember, MetaModelContext.Delegating, FacetHolder.Delegating {
             final ManagedObject target,
             final InteractionInitiatedBy interactionInitiatedBy,
             final Where where) {
-        final UsabilityContext<?> ic = createUsableInteractionContext(target, interactionInitiatedBy, where);
+        final UsabilityContext ic = createUsableInteractionContext(target, interactionInitiatedBy, where);
         return InteractionUtils.isUsableResult(this, ic);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
index 4229ec6..ecd6b96 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
@@ -73,7 +73,7 @@ extends ObjectAssociationAbstract implements OneToManyAssociation {
     // -- visible, usable
 
     @Override
-    public VisibilityContext<?> createVisibleInteractionContext(
+    public VisibilityContext createVisibleInteractionContext(
             final ManagedObject ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
             Where where) {
         return new CollectionVisibilityContext(ownerAdapter, getIdentifier(), interactionInitiatedBy, where);
@@ -81,7 +81,7 @@ extends ObjectAssociationAbstract implements OneToManyAssociation {
 
 
     @Override
-    public UsabilityContext<?> createUsableInteractionContext(
+    public UsabilityContext createUsableInteractionContext(
             final ManagedObject ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
             Where where) {
         return new CollectionUsabilityContext(ownerAdapter, getIdentifier(), interactionInitiatedBy, where);
@@ -91,7 +91,7 @@ extends ObjectAssociationAbstract implements OneToManyAssociation {
 
     // -- Validate Add
     // Not API
-    private ValidityContext<?> createValidateAddInteractionContext(
+    private ValidityContext createValidateAddInteractionContext(
             final InteractionInitiatedBy interactionInitiatedBy,
             final ManagedObject ownerAdapter,
             final ManagedObject proposedToAddAdapter) {
@@ -111,7 +111,7 @@ extends ObjectAssociationAbstract implements OneToManyAssociation {
             final ManagedObject ownerAdapter,
             final ManagedObject proposedToAddAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
-        final ValidityContext<?> validityContext = createValidateAddInteractionContext(
+        final ValidityContext validityContext = createValidateAddInteractionContext(
                 interactionInitiatedBy, ownerAdapter, proposedToAddAdapter);
         return InteractionUtils.isValidResult(this, validityContext);
     }
@@ -119,7 +119,7 @@ extends ObjectAssociationAbstract implements OneToManyAssociation {
 
 
     // -- Validate Remove
-    private ValidityContext<?> createValidateRemoveInteractionContext(
+    private ValidityContext createValidateRemoveInteractionContext(
             final ManagedObject ownerAdapter,
             final ManagedObject proposedToRemoveAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
@@ -141,7 +141,7 @@ extends ObjectAssociationAbstract implements OneToManyAssociation {
             final ManagedObject ownerAdapter,
             final ManagedObject proposedToRemoveAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
-        final ValidityContext<?> validityContext = createValidateRemoveInteractionContext(
+        final ValidityContext validityContext = createValidateRemoveInteractionContext(
                 ownerAdapter, proposedToRemoveAdapter, interactionInitiatedBy);
         return InteractionUtils.isValidResult(this, validityContext);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
index 99dbfc7..228428d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
@@ -83,7 +83,7 @@ public class OneToManyAssociationMixedIn extends OneToManyAssociationDefault imp
         // created from mixin actions.
         val type = actionTypeOfFacet != null
                 ? actionTypeOfFacet.value()
-                : (Class)Object.class;
+                : (Class<?>)Object.class;
                 
         return objectAction.getSpecificationLoader().loadSpecification(type);
     }
@@ -178,7 +178,7 @@ public class OneToManyAssociationMixedIn extends OneToManyAssociationDefault imp
             final Where where) {
 
         final ManagedObject mixinAdapter = mixinAdapterFor(mixinType, mixedInAdapter);
-        final VisibilityContext<?> ic =
+        final VisibilityContext ic =
                 mixinAction.createVisibleInteractionContext(mixinAdapter, interactionInitiatedBy, where);
         ic.setMixedIn(mixedInAdapter);
         return InteractionUtils.isVisibleResult(this, ic).createConsent();
@@ -191,7 +191,7 @@ public class OneToManyAssociationMixedIn extends OneToManyAssociationDefault imp
             final Where where) {
 
         final ManagedObject mixinAdapter = mixinAdapterFor(mixinType, mixedInAdapter);
-        final UsabilityContext<?> ic =
+        final UsabilityContext ic =
                 mixinAction.createUsableInteractionContext(
                         mixinAdapter, interactionInitiatedBy, where);
         ic.setMixedIn(mixedInAdapter);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
index a8c4b49..8487422 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
@@ -20,11 +20,9 @@
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
 import java.util.Collections;
-import java.util.Optional;
 
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.command.Command;
-import org.apache.isis.applib.services.command.CommandContext;
 import org.apache.isis.core.commons.collections.Can;
 import org.apache.isis.core.commons.internal.base._NullSafe;
 import org.apache.isis.core.metamodel.commons.ToString;
@@ -75,7 +73,7 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
     // -- visible, usable
 
     @Override
-    public VisibilityContext<?> createVisibleInteractionContext(
+    public VisibilityContext createVisibleInteractionContext(
             final ManagedObject ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
             Where where) {
         return new PropertyVisibilityContext(ownerAdapter, getIdentifier(), interactionInitiatedBy, where);
@@ -83,7 +81,7 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
 
 
     @Override
-    public UsabilityContext<?> createUsableInteractionContext(
+    public UsabilityContext createUsableInteractionContext(
             final ManagedObject ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
             Where where) {
         return new PropertyUsabilityContext(ownerAdapter, getIdentifier(), interactionInitiatedBy, where);
@@ -92,7 +90,7 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
 
 
     // -- Validity
-    private ValidityContext<?> createValidateInteractionContext(
+    private ValidityContext createValidateInteractionContext(
             final ManagedObject ownerAdapter,
             final ManagedObject proposedToReferenceAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
@@ -112,7 +110,7 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
             final ManagedObject ownerAdapter,
             final ManagedObject proposedToReferenceAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
-        final ValidityContext<?> validityContext =
+        final ValidityContext validityContext =
                 createValidateInteractionContext(
                         ownerAdapter, proposedToReferenceAdapter, interactionInitiatedBy
                         );
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
index e881f94..edcb35f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
@@ -164,7 +164,7 @@ public class OneToOneAssociationMixedIn extends OneToOneAssociationDefault imple
             final Where where) {
 
         val mixinAdapter = mixinAdapterFor(mixinType, mixedInAdapter);
-        final VisibilityContext<?> ic =
+        final VisibilityContext ic =
                 mixinAction.createVisibleInteractionContext(mixinAdapter, interactionInitiatedBy, where);
         ic.setMixedIn(mixedInAdapter);
         return InteractionUtils.isVisibleResult(this, ic).createConsent();
@@ -177,7 +177,7 @@ public class OneToOneAssociationMixedIn extends OneToOneAssociationDefault imple
             final Where where) {
 
         val mixinAdapter = mixinAdapterFor(mixinType, mixedInAdapter);
-        final UsabilityContext<?> ic =
+        final UsabilityContext ic =
                 mixinAction.createUsableInteractionContext(mixinAdapter, interactionInitiatedBy, where);
         ic.setMixedIn(mixedInAdapter);
         return InteractionUtils.isUsableResult(this, ic).createConsent();
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
index 404cd99..d650bbc 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
@@ -19,18 +19,20 @@
 
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
 import org.jmock.Expectations;
 import org.jmock.auto.Mock;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.core.commons.collections.Can;
+import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2;
+import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2.Mode;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -43,8 +45,6 @@ import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2;
-import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2.Mode;
 
 public class ObjectAssociationAbstractTest {
 
@@ -110,14 +110,14 @@ public class ObjectAssociationAbstractTest {
             }
 
             @Override
-            public UsabilityContext<?> createUsableInteractionContext(
+            public UsabilityContext createUsableInteractionContext(
                     final ManagedObject target, final InteractionInitiatedBy interactionInitiatedBy,
                     Where where) {
                 return null;
             }
 
             @Override
-            public VisibilityContext<?> createVisibleInteractionContext(
+            public VisibilityContext createVisibleInteractionContext(
                     final ManagedObject targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
                     Where where) {
                 return null;
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
index 3227eed..bf5643f 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
@@ -19,20 +19,22 @@
 
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
 import org.jmock.Expectations;
 import org.jmock.auto.Mock;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.core.commons.collections.Can;
+import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2;
+import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2.Mode;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -46,8 +48,6 @@ import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2;
-import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2.Mode;
 
 public class ObjectAssociationAbstractTest_alwaysHidden {
 
@@ -112,14 +112,14 @@ public class ObjectAssociationAbstractTest_alwaysHidden {
             }
 
             @Override
-            public UsabilityContext<?> createUsableInteractionContext(
+            public UsabilityContext createUsableInteractionContext(
                     final ManagedObject target, final InteractionInitiatedBy interactionInitiatedBy,
                     final Where where) {
                 return null;
             }
 
             @Override
-            public VisibilityContext<?> createVisibleInteractionContext(
+            public VisibilityContext createVisibleInteractionContext(
                     final ManagedObject targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
                     final Where where) {
                 return null;
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/facets/TenantedAuthorizationFacetDefault.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/facets/TenantedAuthorizationFacetDefault.java
index 9e25aea..0b2b548 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/facets/TenantedAuthorizationFacetDefault.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/facets/TenantedAuthorizationFacetDefault.java
@@ -23,8 +23,6 @@ import java.util.concurrent.Callable;
 
 import org.apache.isis.applib.services.queryresultscache.QueryResultsCache;
 import org.apache.isis.applib.services.user.UserService;
-import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
-import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -59,7 +57,7 @@ public class TenantedAuthorizationFacetDefault extends FacetAbstract implements
     }
 
     @Override
-    public String hides(final VisibilityContext<? extends VisibilityEvent> ic) {
+    public String hides(final VisibilityContext ic) {
 
         if(evaluators == null || evaluators.isEmpty()) {
             return null;
@@ -85,7 +83,7 @@ public class TenantedAuthorizationFacetDefault extends FacetAbstract implements
 
 
     @Override
-    public String disables(final UsabilityContext<? extends UsabilityEvent> ic) {
+    public String disables(final UsabilityContext ic) {
         if(evaluators == null || evaluators.isEmpty()) {
             return null;
         }
diff --git a/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java b/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
index 4598fbd..30d2d5a 100644
--- a/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
+++ b/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
@@ -19,15 +19,6 @@
 
 package org.apache.isis.core.runtime.system;
 
-import java.util.Optional;
-
-import org.datanucleus.enhancement.Persistable;
-import org.jmock.Expectations;
-import org.jmock.auto.Mock;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
 import static org.hamcrest.Matchers.emptyString;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.is;
@@ -37,7 +28,18 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
+import java.util.Optional;
+
+import org.datanucleus.enhancement.Persistable;
+import org.jmock.Expectations;
+import org.jmock.auto.Mock;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
 import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2;
+import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2.Mode;
 import org.apache.isis.core.metamodel.MetaModelContext_forTesting;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.Oid.Factory;
@@ -65,8 +67,6 @@ import org.apache.isis.core.metamodel.specloader.specimpl.ObjectMemberAbstract;
 import org.apache.isis.core.security.authentication.AuthenticationSession;
 import org.apache.isis.core.security.authentication.AuthenticationSessionTracker;
 import org.apache.isis.persistence.jdo.datanucleus5.objectadapter.PojoAdapter;
-import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2;
-import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2.Mode;
 
 public class ObjectMemberAbstractTest {
 
@@ -214,14 +214,14 @@ class ObjectMemberAbstractImpl extends ObjectMemberAbstract {
     }
 
     @Override
-    public UsabilityContext<?> createUsableInteractionContext(
+    public UsabilityContext createUsableInteractionContext(
             final ManagedObject target, final InteractionInitiatedBy interactionInitiatedBy,
             Where where) {
         return new PropertyUsabilityContext(target, getIdentifier(), interactionInitiatedBy, where);
     }
 
     @Override
-    public VisibilityContext<?> createVisibleInteractionContext(
+    public VisibilityContext createVisibleInteractionContext(
             final ManagedObject targetObjectAdapter, final InteractionInitiatedBy interactionInitiatedBy,
             Where where) {
         return new PropertyVisibilityContext(targetObjectAdapter, getIdentifier(), interactionInitiatedBy,
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsSortableDataProvider.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsSortableDataProvider.java
index df85dd3..cc13621 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsSortableDataProvider.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsSortableDataProvider.java
@@ -143,7 +143,7 @@ public class CollectionContentsSortableDataProvider extends SortableDataProvider
         };
     }
 
-    private VisibilityContext<?> createVisibleInteractionContext(ManagedObject objectAdapter) {
+    private VisibilityContext createVisibleInteractionContext(ManagedObject objectAdapter) {
         return new ObjectVisibilityContext(
                 objectAdapter, objectAdapter.getSpecification().getIdentifier(), InteractionInitiatedBy.USER,
                 Where.ALL_TABLES);