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 2019/12/15 14:16:39 UTC

[isis] branch master updated (9024713 -> 45873d3)

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

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


    from 9024713  ISIS-2226: fully testing following supporting method scenarios
     new 3213b54  ISIS-2228: some efficiency improvements
     new 45873d3  ISIS-2228: fixes property specific facets with mixins

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../isis/metamodel/facetapi/FeatureType.java       | 41 +++++++++----------
 .../apache/isis/metamodel/facets/FacetFactory.java |  4 +-
 .../metamodel/facets/FacetFactoryAbstract.java     | 19 ++++-----
 .../metamodel/facets/MethodLiteralConstants.java   | 21 ++++++----
 .../facets/MethodPrefixBasedFacetFactory.java      |  5 +--
 .../MethodPrefixBasedFacetFactoryAbstract.java     | 34 ++++++++++------
 ...rCollectionIdentifyingFacetFactoryAbstract.java |  9 +++--
 .../ActionDefaultsFacetViaMethodFactory.java       |  3 +-
 .../ActionValidationFacetViaMethodFactory.java     |  8 ++--
 .../CollectionAccessorFacetViaAccessorFactory.java |  3 +-
 .../clear/CollectionClearFacetFactory.java         |  4 +-
 ...tionAddToRemoveFromAndValidateFacetFactory.java |  4 +-
 .../DisableForContextFacetViaMethodFactory.java    |  4 +-
 .../HideForContextFacetViaMethodFactory.java       | 15 +++----
 .../callbacks/CreatedCallbackFacetFactory.java     |  5 ++-
 .../object/callbacks/LoadCallbackFacetFactory.java | 10 +++--
 .../callbacks/PersistCallbackFacetFactory.java     | 10 +++--
 .../PersistCallbackViaSaveMethodFacetFactory.java  | 10 +++--
 .../callbacks/RemoveCallbackFacetFactory.java      | 10 +++--
 .../RemoveCallbackViaDeleteMethodFacetFactory.java | 11 +++--
 .../callbacks/UpdateCallbackFacetFactory.java      | 10 +++--
 .../method/CssClassFacetMethodFactory.java         |  9 +++--
 .../DisabledObjectFacetViaMethodFactory.java       |  3 +-
 .../method/HiddenObjectFacetViaMethodFactory.java  |  9 +++--
 .../object/icon/method/IconFacetMethodFactory.java |  9 +++--
 .../facets/object/layout/LayoutFacetFactory.java   |  9 +++--
 .../title/methods/TitleFacetViaMethodsFactory.java |  8 +++-
 .../method/ValidateObjectFacetMethodFactory.java   |  5 ++-
 ...ParameterAutoCompleteFacetViaMethodFactory.java |  5 ++-
 .../method/ActionChoicesFacetViaMethodFactory.java |  6 +--
 ...ctionParameterChoicesFacetViaMethodFactory.java |  3 +-
 ...tionParameterDefaultsFacetViaMethodFactory.java |  3 +-
 ...tionParameterDisabledFacetViaMethodFactory.java |  9 +++--
 ...ActionParameterHiddenFacetViaMethodFactory.java |  5 ++-
 ...onParameterValidationFacetViaMethodFactory.java |  7 ++--
 .../PropertyAccessorFacetViaAccessorFactory.java   |  6 ++-
 .../PropertyAutoCompleteFacetMethodFactory.java    | 35 +++++++++-------
 .../PropertyChoicesFacetViaMethodFactory.java      | 34 +++++++++++-----
 .../PropertyDefaultFacetViaMethodFactory.java      | 35 +++++++++++-----
 .../update/PropertyModifyFacetFactory.java         |  5 ++-
 .../update/PropertySetAndClearFacetFactory.java    | 10 +++--
 .../PropertyValidateFacetViaMethodFactory.java     |  3 +-
 .../specloader/facetprocessor/FacetProcessor.java  | 10 ++---
 .../facets/AbstractFacetFactoryJUnit4TestCase.java | 12 ++----
 .../metamodel/facets/AbstractFacetFactoryTest.java |  6 +--
 .../org/apache/isis/metamodel/facets/Utils.java    | 16 +++-----
 .../facets/FacetsFacetAnnotationFactoryTest.java   |  6 +--
 .../PropertyMethodsFacetFactoryTest.java           | 17 +++++---
 ...atastoreIdentityAnnotationFacetFactoryTest.java | 22 ++++------
 ...JdoDiscriminatorAnnotationFacetFactoryTest.java | 10 ++---
 ...rsistenceCapableAnnotationFacetFactoryTest.java | 32 +++++----------
 .../JdoVersionAnnotationFacetFactoryTest.java      |  9 ++---
 ...vedFromJdoColumnAnnotationFacetFactoryTest.java |  5 ++-
 ...vedFromJdoColumnAnnotationFacetFactoryTest.java |  5 ++-
 ...JdoNotPersistentAnnotationFacetFactoryTest.java |  5 ++-
 ...venJdoPrimaryKeyAnnotationFacetFactoryTest.java |  5 ++-
 .../DomainModelTest_usingGoodDomain.java           | 47 +++++++++++-----------
 .../SupportingMethodValidatorRefinerFactory.java   | 10 +++--
 58 files changed, 376 insertions(+), 299 deletions(-)


[isis] 01/02: ISIS-2228: some efficiency improvements

Posted by ah...@apache.org.
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

commit 3213b542f463b1ced6e7375aff2d4b00e2c6bc0e
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Dec 15 14:25:58 2019 +0100

    ISIS-2228: some efficiency improvements
    
    - replace List<FeatureType> -> EnumSet<FeatureType>
    - replace static method prefix arrays -> Can<String>
---
 .../isis/metamodel/facetapi/FeatureType.java       | 41 +++++++++----------
 .../apache/isis/metamodel/facets/FacetFactory.java |  4 +-
 .../metamodel/facets/FacetFactoryAbstract.java     | 15 +++----
 .../metamodel/facets/MethodLiteralConstants.java   |  5 +++
 .../facets/MethodPrefixBasedFacetFactory.java      |  5 +--
 .../MethodPrefixBasedFacetFactoryAbstract.java     | 26 ++++++------
 ...rCollectionIdentifyingFacetFactoryAbstract.java |  9 +++--
 .../ActionDefaultsFacetViaMethodFactory.java       |  3 +-
 .../ActionValidationFacetViaMethodFactory.java     |  8 ++--
 .../CollectionAccessorFacetViaAccessorFactory.java |  3 +-
 .../clear/CollectionClearFacetFactory.java         |  4 +-
 ...tionAddToRemoveFromAndValidateFacetFactory.java |  4 +-
 .../DisableForContextFacetViaMethodFactory.java    |  4 +-
 .../HideForContextFacetViaMethodFactory.java       | 19 ++++++---
 .../callbacks/CreatedCallbackFacetFactory.java     |  3 +-
 .../object/callbacks/LoadCallbackFacetFactory.java |  6 ++-
 .../callbacks/PersistCallbackFacetFactory.java     |  6 ++-
 .../PersistCallbackViaSaveMethodFacetFactory.java  |  6 ++-
 .../callbacks/RemoveCallbackFacetFactory.java      |  6 ++-
 .../RemoveCallbackViaDeleteMethodFacetFactory.java |  7 +++-
 .../callbacks/UpdateCallbackFacetFactory.java      |  6 ++-
 .../method/CssClassFacetMethodFactory.java         |  9 +++--
 .../DisabledObjectFacetViaMethodFactory.java       |  3 +-
 .../method/HiddenObjectFacetViaMethodFactory.java  |  9 +++--
 .../object/icon/method/IconFacetMethodFactory.java |  9 +++--
 .../facets/object/layout/LayoutFacetFactory.java   |  9 +++--
 .../title/methods/TitleFacetViaMethodsFactory.java |  6 ++-
 .../method/ValidateObjectFacetMethodFactory.java   |  3 +-
 ...ParameterAutoCompleteFacetViaMethodFactory.java |  3 +-
 .../method/ActionChoicesFacetViaMethodFactory.java |  6 +--
 ...ctionParameterChoicesFacetViaMethodFactory.java |  3 +-
 ...tionParameterDefaultsFacetViaMethodFactory.java |  3 +-
 ...tionParameterDisabledFacetViaMethodFactory.java |  7 ++--
 ...ActionParameterHiddenFacetViaMethodFactory.java |  3 +-
 ...onParameterValidationFacetViaMethodFactory.java |  7 ++--
 .../PropertyAccessorFacetViaAccessorFactory.java   |  6 ++-
 .../PropertyAutoCompleteFacetMethodFactory.java    | 13 ++++--
 .../PropertyChoicesFacetViaMethodFactory.java      |  5 ++-
 .../PropertyDefaultFacetViaMethodFactory.java      |  6 +--
 .../update/PropertyModifyFacetFactory.java         |  5 ++-
 .../update/PropertySetAndClearFacetFactory.java    |  8 +++-
 .../PropertyValidateFacetViaMethodFactory.java     |  3 +-
 .../specloader/facetprocessor/FacetProcessor.java  | 10 ++---
 .../facets/AbstractFacetFactoryJUnit4TestCase.java | 12 ++----
 .../metamodel/facets/AbstractFacetFactoryTest.java |  6 +--
 .../org/apache/isis/metamodel/facets/Utils.java    | 16 +++-----
 .../facets/FacetsFacetAnnotationFactoryTest.java   |  6 +--
 ...atastoreIdentityAnnotationFacetFactoryTest.java | 22 ++++------
 ...JdoDiscriminatorAnnotationFacetFactoryTest.java | 10 ++---
 ...rsistenceCapableAnnotationFacetFactoryTest.java | 32 +++++----------
 .../JdoVersionAnnotationFacetFactoryTest.java      |  9 ++---
 ...vedFromJdoColumnAnnotationFacetFactoryTest.java |  5 ++-
 ...vedFromJdoColumnAnnotationFacetFactoryTest.java |  5 ++-
 ...JdoNotPersistentAnnotationFacetFactoryTest.java |  5 ++-
 ...venJdoPrimaryKeyAnnotationFacetFactoryTest.java |  5 ++-
 .../DomainModelTest_usingGoodDomain.java           | 47 +++++++++++-----------
 .../SupportingMethodValidatorRefinerFactory.java   | 10 +++--
 57 files changed, 277 insertions(+), 239 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FeatureType.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FeatureType.java
index f7a1e3b..47e5337 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FeatureType.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FeatureType.java
@@ -21,10 +21,9 @@ package org.apache.isis.metamodel.facetapi;
 
 import java.beans.Introspector;
 import java.lang.reflect.Method;
-import java.util.List;
+import java.util.EnumSet;
 
 import org.apache.isis.applib.Identifier;
-import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facets.FacetFactory;
 
@@ -86,34 +85,34 @@ public enum FeatureType {
         }
     };
 
-    public final static List<FeatureType> COLLECTIONS_ONLY = _Lists.of(COLLECTION);
-    public final static List<FeatureType> COLLECTIONS_AND_ACTIONS = _Lists.of(COLLECTION, ACTION);
-    public final static List<FeatureType> ACTIONS_ONLY = _Lists.of(ACTION);
-    public final static List<FeatureType> PARAMETERS_ONLY = _Lists.of(ACTION_PARAMETER_SCALAR, ACTION_PARAMETER_COLLECTION);
-    public final static List<FeatureType> PROPERTIES_ONLY = _Lists.of(PROPERTY);
-    public final static List<FeatureType> PROPERTIES_AND_ACTIONS = _Lists.of(PROPERTY, ACTION);
-    public final static List<FeatureType> OBJECTS_ONLY = _Lists.of(OBJECT);
-    public final static List<FeatureType> MEMBERS = _Lists.of(PROPERTY, COLLECTION, ACTION);
-    public final static List<FeatureType> OBJECTS_AND_PROPERTIES = _Lists.of(OBJECT, PROPERTY);
-    public final static List<FeatureType> PROPERTIES_AND_COLLECTIONS = _Lists.of(PROPERTY, COLLECTION);
-    public final static List<FeatureType> OBJECTS_AND_COLLECTIONS = _Lists.of(OBJECT, COLLECTION);
-    public final static List<FeatureType> OBJECTS_AND_ACTIONS = _Lists.of(OBJECT, ACTION);
-    public final static List<FeatureType> OBJECTS_PROPERTIES_AND_COLLECTIONS = _Lists.of(OBJECT, PROPERTY, COLLECTION);
-
-    public static final List<FeatureType> ACTIONS_AND_PARAMETERS =
-            _Lists.of(ACTION, ACTION_PARAMETER_SCALAR, ACTION_PARAMETER_COLLECTION);
+    public final static EnumSet<FeatureType> COLLECTIONS_ONLY = EnumSet.of(COLLECTION);
+    public final static EnumSet<FeatureType> COLLECTIONS_AND_ACTIONS = EnumSet.of(COLLECTION, ACTION);
+    public final static EnumSet<FeatureType> ACTIONS_ONLY = EnumSet.of(ACTION);
+    public final static EnumSet<FeatureType> PARAMETERS_ONLY = EnumSet.of(ACTION_PARAMETER_SCALAR, ACTION_PARAMETER_COLLECTION);
+    public final static EnumSet<FeatureType> PROPERTIES_ONLY = EnumSet.of(PROPERTY);
+    public final static EnumSet<FeatureType> PROPERTIES_AND_ACTIONS = EnumSet.of(PROPERTY, ACTION);
+    public final static EnumSet<FeatureType> OBJECTS_ONLY = EnumSet.of(OBJECT);
+    public final static EnumSet<FeatureType> MEMBERS = EnumSet.of(PROPERTY, COLLECTION, ACTION);
+    public final static EnumSet<FeatureType> OBJECTS_AND_PROPERTIES = EnumSet.of(OBJECT, PROPERTY);
+    public final static EnumSet<FeatureType> PROPERTIES_AND_COLLECTIONS = EnumSet.of(PROPERTY, COLLECTION);
+    public final static EnumSet<FeatureType> OBJECTS_AND_COLLECTIONS = EnumSet.of(OBJECT, COLLECTION);
+    public final static EnumSet<FeatureType> OBJECTS_AND_ACTIONS = EnumSet.of(OBJECT, ACTION);
+    public final static EnumSet<FeatureType> OBJECTS_PROPERTIES_AND_COLLECTIONS = EnumSet.of(OBJECT, PROPERTY, COLLECTION);
+    public static final EnumSet<FeatureType> ACTIONS_AND_PARAMETERS =
+            EnumSet.of(ACTION, ACTION_PARAMETER_SCALAR, ACTION_PARAMETER_COLLECTION);
 
     /**
      * Use of this is discouraged; instead use multiple {@link FacetFactory}s
      * for different features.
      */
-    public final static List<FeatureType> EVERYTHING_BUT_PARAMETERS = _Lists.of(OBJECT, PROPERTY, COLLECTION, ACTION);
+    public final static EnumSet<FeatureType> EVERYTHING_BUT_PARAMETERS = 
+            EnumSet.complementOf(
+                    EnumSet.of(ACTION_PARAMETER_SCALAR, ACTION_PARAMETER_COLLECTION));
     /**
      * Use of this is discouraged; instead use multiple {@link FacetFactory}s
      * for different features.
      */
-    public final static List<FeatureType> EVERYTHING =
-            _Lists.of(OBJECT, PROPERTY, COLLECTION, ACTION, ACTION_PARAMETER_SCALAR, ACTION_PARAMETER_COLLECTION);
+    public final static EnumSet<FeatureType> EVERYTHING = EnumSet.allOf(FeatureType.class); 
 
     private final String name;
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactory.java
index 7a02c39..b7122c6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactory.java
@@ -22,7 +22,7 @@ package org.apache.isis.metamodel.facets;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
 import java.lang.reflect.Parameter;
-import java.util.List;
+import java.util.EnumSet;
 import java.util.Optional;
 import java.util.function.Consumer;
 import java.util.function.Supplier;
@@ -143,7 +143,7 @@ public interface FacetFactory {
      * the meta-model.
      * 
      */
-    List<FeatureType> getFeatureTypes();
+    EnumSet<FeatureType> getFeatureTypes();
 
 
     // //////////////////////////////////////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactoryAbstract.java
index fe7edb4..8ce0048 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactoryAbstract.java
@@ -19,9 +19,8 @@
 
 package org.apache.isis.metamodel.facets;
 
-import java.util.List;
+import java.util.EnumSet;
 
-import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.context.MetaModelContext;
 import org.apache.isis.metamodel.context.MetaModelContextAware;
 import org.apache.isis.metamodel.facetapi.Facet;
@@ -37,15 +36,11 @@ implements FacetFactory, MetaModelContextAware, MetaModelContext.Delegating {
     @Getter(onMethod = @__({@Override})) @Setter(onMethod = @__({@Override}))
     private MetaModelContext metaModelContext;
     
-    private final List<FeatureType> featureTypes;
+    @Getter(onMethod = @__({@Override}))
+    private final EnumSet<FeatureType> featureTypes;
 
-    public FacetFactoryAbstract(final List<FeatureType> featureTypes) {
-        this.featureTypes = _Lists.unmodifiable(featureTypes);
-    }
-
-    @Override
-    public List<FeatureType> getFeatureTypes() {
-        return featureTypes;
+    public FacetFactoryAbstract(EnumSet<FeatureType> featureTypes) {
+        this.featureTypes = featureTypes;
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodLiteralConstants.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodLiteralConstants.java
index 4434e7a..fa6f7a0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodLiteralConstants.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodLiteralConstants.java
@@ -66,5 +66,10 @@ public final class MethodLiteralConstants {
     public static final String TITLE = "title";
     public static final String TO_STRING = "toString";
     
+    public static final String CSS_CLASS_PREFIX = "cssClass";
+    public static final String HIDDEN_PREFIX = "hidden";
+    public static final String ICON_NAME_PREFIX = "iconName";
+    public static final String LAYOUT_METHOD_NAME = "layout";
+    
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactory.java
index 00f152f..3f8184b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactory.java
@@ -19,8 +19,7 @@
 
 package org.apache.isis.metamodel.facets;
 
-import java.util.List;
-
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.metamodel.specloader.facetprocessor.FacetProcessor;
 
@@ -36,5 +35,5 @@ public interface MethodPrefixBasedFacetFactory extends FacetFactory, MetaModelRe
     /**
      * All prefixes recognized by this {@link FacetFactory}.
      */
-    public List<String> getPrefixes();
+    public Can<String> getPrefixes();
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java
index 4a7891f..ddc75a3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java
@@ -18,43 +18,43 @@
  */
 package org.apache.isis.metamodel.facets;
 
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
+import java.util.EnumSet;
 import java.util.Objects;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.metamodel.spec.feature.Contributed;
 
+import lombok.Getter;
+import lombok.NonNull;
 import lombok.val;
 
 public abstract class MethodPrefixBasedFacetFactoryAbstract
 extends FacetFactoryAbstract
 implements MethodPrefixBasedFacetFactory {
 
-    private final List<String> prefixes;
+    @Getter(onMethod = @__(@Override))
+    private final Can<String> prefixes;
 
     private final OrphanValidation orphanValidation; 
 
-    protected enum OrphanValidation { // remove?
+    protected enum OrphanValidation {
         VALIDATE,
         DONT_VALIDATE
     }
 
-    public MethodPrefixBasedFacetFactoryAbstract(final List<FeatureType> featureTypes, final OrphanValidation orphanValidation, final String... prefixes) {
+    public MethodPrefixBasedFacetFactoryAbstract(
+            @NonNull final EnumSet<FeatureType> featureTypes, 
+            @NonNull final OrphanValidation orphanValidation, 
+            @NonNull final Can<String> prefixes) {
+        
         super(featureTypes);
         this.orphanValidation = orphanValidation;
-        this.prefixes = Collections.unmodifiableList(Arrays.asList(prefixes));
+        this.prefixes = prefixes;
     }
     
     @Override
-    public List<String> getPrefixes() {
-        return prefixes;
-    }
-
- 
-    @Override
     public void refineProgrammingModel(ProgrammingModel programmingModel) {
 
         // we can safely skip this validation if the @Action annotation is mandatory
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java
index a6789a5..b2676d8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/PropertyOrCollectionIdentifyingFacetFactoryAbstract.java
@@ -19,8 +19,9 @@
 
 package org.apache.isis.metamodel.facets;
 
-import java.util.List;
+import java.util.EnumSet;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.collections._Collections;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 
@@ -28,8 +29,10 @@ public abstract class PropertyOrCollectionIdentifyingFacetFactoryAbstract
 extends MethodPrefixBasedFacetFactoryAbstract
 implements PropertyOrCollectionIdentifyingFacetFactory {
 
-
-    public PropertyOrCollectionIdentifyingFacetFactoryAbstract(final List<FeatureType> featureTypes, final String... prefixes) {
+    public PropertyOrCollectionIdentifyingFacetFactoryAbstract(
+            final EnumSet<FeatureType> featureTypes, 
+            final Can<String> prefixes) {
+        
         super(featureTypes, OrphanValidation.DONT_VALIDATE, prefixes);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethodFactory.java
index 2331e6b..675b3a9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethodFactory.java
@@ -22,6 +22,7 @@ package org.apache.isis.metamodel.facets.actions.defaults.method;
 import java.lang.reflect.Method;
 import java.util.List;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal._Constants;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.Facet;
@@ -36,7 +37,7 @@ import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
  */
 public class ActionDefaultsFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodLiteralConstants.DEFAULT_PREFIX };
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.DEFAULT_PREFIX);
 
     /**
      * Note that the {@link Facet}s registered are the generic ones from
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java
index a951854..ac6cf75 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java
@@ -19,11 +19,10 @@
 
 package org.apache.isis.metamodel.facets.actions.validate.method;
 
-import lombok.val;
-
 import java.lang.reflect.Method;
 
 import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FeatureType;
@@ -33,12 +32,15 @@ import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.actions.validate.ActionValidationFacet;
 
+import lombok.val;
+
 /**
  * Sets up {@link ActionValidationFacet}.
  */
 public class ActionValidationFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract  {
 
-    private static final String[] PREFIXES = { MethodLiteralConstants.VALIDATE_PREFIX };
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.VALIDATE_PREFIX);
+
 
     /**
      * Note that the {@link Facet}s registered are the generic ones from
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
index 4ba2d0e..62ffd1f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
@@ -23,6 +23,7 @@ import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.List;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.CanBeVoid;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FeatureType;
@@ -35,7 +36,7 @@ import org.apache.isis.metamodel.spec.ObjectSpecification;
 public class CollectionAccessorFacetViaAccessorFactory
 extends PropertyOrCollectionIdentifyingFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodLiteralConstants.GET_PREFIX };
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.GET_PREFIX);
 
     public CollectionAccessorFacetViaAccessorFactory() {
         super(FeatureType.COLLECTIONS_ONLY, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/clear/CollectionClearFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/clear/CollectionClearFacetFactory.java
index 93dd8b9..0b8e22a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/clear/CollectionClearFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/clear/CollectionClearFacetFactory.java
@@ -21,6 +21,7 @@ package org.apache.isis.metamodel.facets.collections.clear;
 
 import java.lang.reflect.Method;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FeatureType;
@@ -31,8 +32,7 @@ import org.apache.isis.metamodel.facets.collections.modify.CollectionClearFacet;
 
 public class CollectionClearFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodLiteralConstants.CLEAR_PREFIX };
-
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.CLEAR_PREFIX);
 
     public CollectionClearFacetFactory() {
         super(FeatureType.COLLECTIONS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/modify/CollectionAddToRemoveFromAndValidateFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/modify/CollectionAddToRemoveFromAndValidateFacetFactory.java
index cd21d10..3533eb3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/modify/CollectionAddToRemoveFromAndValidateFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/modify/CollectionAddToRemoveFromAndValidateFacetFactory.java
@@ -22,6 +22,7 @@ package org.apache.isis.metamodel.facets.collections.modify;
 import java.lang.reflect.Method;
 
 import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.exceptions.MetaModelException;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -41,8 +42,7 @@ import org.apache.isis.metamodel.facets.collections.validate.CollectionValidateR
  */
 public class CollectionAddToRemoveFromAndValidateFacetFactory extends MethodPrefixBasedFacetFactoryAbstract  {
 
-    private static final String[] PREFIXES = {};
-
+    private static final Can<String> PREFIXES = Can.empty();
 
     public CollectionAddToRemoveFromAndValidateFacetFactory() {
         super(FeatureType.COLLECTIONS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethodFactory.java
index 957addc..562d659 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethodFactory.java
@@ -22,6 +22,7 @@ package org.apache.isis.metamodel.facets.members.disabled.method;
 import java.lang.reflect.Method;
 
 import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -33,8 +34,7 @@ import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 
 public class DisableForContextFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract  {
 
-
-    private static final String[] PREFIXES = { MethodLiteralConstants.DISABLE_PREFIX };
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.DISABLE_PREFIX);
 
     /**
      * Note that the {@link Facet}s registered are the generic ones from
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java
index 4dd6f31..0fd5f33 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java
@@ -21,19 +21,21 @@ package org.apache.isis.metamodel.facets.members.hidden.method;
 
 import java.lang.reflect.Method;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
-import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
+import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 
-public class HideForContextFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
+import lombok.val;
 
+public class HideForContextFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodLiteralConstants.HIDE_PREFIX };
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.HIDE_PREFIX);
 
     /**
      * Note that the {@link Facet}s registered are the generic ones from
@@ -54,9 +56,14 @@ public class HideForContextFacetViaMethodFactory extends MethodPrefixBasedFacetF
 
     private void attachHideFacetIfHideMethodIsFound(final ProcessMethodContext processMethodContext) {
 
-        final Method getMethod = processMethodContext.getMethod();
-        final String capitalizedName = StringExtensions.asJavaBaseNameStripAccessorPrefixIfRequired(getMethod.getName());
+        final Method getter = processMethodContext.getMethod();
+        final String capitalizedName = StringExtensions.asJavaBaseNameStripAccessorPrefixIfRequired(getter.getName());
 
+        val getterName = getter.toString();
+        if(getterName.contains("ProperMemberSupport")) {
+            System.out.println("#hide# " + getter);
+        }
+        
         final Class<?> cls = processMethodContext.getCls();
         Method hideMethod = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.HIDE_PREFIX + capitalizedName, boolean.class, new Class[] {});
         if (hideMethod == null) {
@@ -64,7 +71,7 @@ public class HideForContextFacetViaMethodFactory extends MethodPrefixBasedFacetF
             boolean noParamsOnly = getConfiguration().getReflector().getValidator().isNoParamsOnly();
             boolean searchExactMatch = !noParamsOnly;
             if(searchExactMatch) {
-                hideMethod = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.HIDE_PREFIX + capitalizedName, boolean.class, getMethod.getParameterTypes());
+                hideMethod = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.HIDE_PREFIX + capitalizedName, boolean.class, getter.getParameterTypes());
             }
         }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/CreatedCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/CreatedCallbackFacetFactory.java
index ab0f17b..9bd3ff7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/CreatedCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/CreatedCallbackFacetFactory.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.metamodel.facets.object.callbacks;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
@@ -28,7 +29,7 @@ import lombok.val;
 
 public class CreatedCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodLiteralConstants.CREATED_PREFIX, };
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.CREATED_PREFIX);
 
     public CreatedCallbackFacetFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/LoadCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/LoadCallbackFacetFactory.java
index 77a39e0..da1131b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/LoadCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/LoadCallbackFacetFactory.java
@@ -21,6 +21,8 @@ package org.apache.isis.metamodel.facets.object.callbacks;
 
 import java.lang.reflect.Method;
 
+import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
@@ -32,7 +34,9 @@ import lombok.val;
 
 public class LoadCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { LOADED_PREFIX, LOADING_PREFIX, };
+    private static final Can<String> PREFIXES = Can.ofCollection(_Lists.of(
+            LOADED_PREFIX, 
+            LOADING_PREFIX));
 
     public LoadCallbackFacetFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackFacetFactory.java
index 01d329f..b1f1f45 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackFacetFactory.java
@@ -22,6 +22,8 @@ package org.apache.isis.metamodel.facets.object.callbacks;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 
+import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
@@ -33,7 +35,9 @@ import lombok.val;
 
 public class PersistCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodLiteralConstants.PERSISTED_PREFIX, MethodLiteralConstants.PERSISTING_PREFIX, };
+    private static final Can<String> PREFIXES = Can.ofCollection(_Lists.of(
+            MethodLiteralConstants.PERSISTED_PREFIX, 
+            MethodLiteralConstants.PERSISTING_PREFIX));
 
     public PersistCallbackFacetFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackViaSaveMethodFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackViaSaveMethodFacetFactory.java
index 7c3ba46..97ed2bc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackViaSaveMethodFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackViaSaveMethodFacetFactory.java
@@ -22,6 +22,8 @@ package org.apache.isis.metamodel.facets.object.callbacks;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 
+import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
@@ -33,7 +35,9 @@ import lombok.val;
 
 public class PersistCallbackViaSaveMethodFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodLiteralConstants.SAVED_PREFIX, MethodLiteralConstants.SAVING_PREFIX, };
+    private static final Can<String> PREFIXES = Can.ofCollection(_Lists.of(
+            MethodLiteralConstants.SAVED_PREFIX, 
+            MethodLiteralConstants.SAVING_PREFIX));
 
     public PersistCallbackViaSaveMethodFacetFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackFacetFactory.java
index 685ba8b..1d8fa23 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackFacetFactory.java
@@ -22,6 +22,8 @@ package org.apache.isis.metamodel.facets.object.callbacks;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 
+import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
@@ -35,7 +37,9 @@ import lombok.val;
 
 public class RemoveCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { REMOVED_PREFIX, REMOVING_PREFIX, };
+    private static final Can<String> PREFIXES = Can.ofCollection(_Lists.of(
+            REMOVED_PREFIX, 
+            REMOVING_PREFIX));
 
     public RemoveCallbackFacetFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackViaDeleteMethodFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackViaDeleteMethodFacetFactory.java
index 516e577..0024dab 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackViaDeleteMethodFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackViaDeleteMethodFacetFactory.java
@@ -22,6 +22,8 @@ package org.apache.isis.metamodel.facets.object.callbacks;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 
+import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
@@ -35,7 +37,10 @@ import lombok.val;
 
 public class RemoveCallbackViaDeleteMethodFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { DELETED_PREFIX, DELETING_PREFIX, };
+    private static final Can<String> PREFIXES = Can.ofCollection(_Lists.of(
+            DELETED_PREFIX, 
+            DELETING_PREFIX));
+    
 
     public RemoveCallbackViaDeleteMethodFacetFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/UpdateCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/UpdateCallbackFacetFactory.java
index 2baad94..a64428d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/UpdateCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/UpdateCallbackFacetFactory.java
@@ -22,6 +22,8 @@ package org.apache.isis.metamodel.facets.object.callbacks;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 
+import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
@@ -33,7 +35,9 @@ import lombok.val;
 
 public class UpdateCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodLiteralConstants.UPDATED_PREFIX, MethodLiteralConstants.UPDATING_PREFIX, };
+    private static final Can<String> PREFIXES = Can.ofCollection(_Lists.of(
+            MethodLiteralConstants.UPDATED_PREFIX, 
+            MethodLiteralConstants.UPDATING_PREFIX));
 
     public UpdateCallbackFacetFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cssclass/method/CssClassFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cssclass/method/CssClassFacetMethodFactory.java
index a3385a4..21d0301 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cssclass/method/CssClassFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cssclass/method/CssClassFacetMethodFactory.java
@@ -21,16 +21,16 @@ package org.apache.isis.metamodel.facets.object.cssclass.method;
 
 import java.lang.reflect.Method;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 
 public class CssClassFacetMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String CSS_CLASS_PREFIX = "cssClass";
-
-    private static final String[] PREFIXES = { CSS_CLASS_PREFIX, };
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.CSS_CLASS_PREFIX);
 
     public CssClassFacetMethodFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -41,7 +41,8 @@ public class CssClassFacetMethodFactory extends MethodPrefixBasedFacetFactoryAbs
         final Class<?> cls = processClassContext.getCls();
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
 
-        final Method method = MethodFinderUtils.findMethod(cls, CSS_CLASS_PREFIX, String.class, NO_PARAMETERS_TYPES);
+        final Method method = MethodFinderUtils.findMethod(
+                cls, MethodLiteralConstants.CSS_CLASS_PREFIX, String.class, NO_PARAMETERS_TYPES);
         if (method == null) {
             return;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/disabled/method/DisabledObjectFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/disabled/method/DisabledObjectFacetViaMethodFactory.java
index e88aaaa..5b34e1e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/disabled/method/DisabledObjectFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/disabled/method/DisabledObjectFacetViaMethodFactory.java
@@ -20,6 +20,7 @@
 package org.apache.isis.metamodel.facets.object.disabled.method;
 
 import org.apache.isis.applib.Identifier;
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facetapi.IdentifiedHolder;
@@ -47,7 +48,7 @@ import lombok.val;
  */
 public class DisabledObjectFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { DISABLED };
+    private static final Can<String> PREFIXES = Can.ofSingleton(DISABLED);
 
     public DisabledObjectFacetViaMethodFactory() {
         super(FeatureType.EVERYTHING_BUT_PARAMETERS, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethodFactory.java
index 1432dee..0ee479a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethodFactory.java
@@ -21,11 +21,13 @@ package org.apache.isis.metamodel.facets.object.hidden.method;
 
 import java.lang.reflect.Method;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.FacetedMethod;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.object.hidden.HiddenObjectFacet;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
@@ -44,9 +46,7 @@ import org.apache.isis.metamodel.spec.feature.ObjectMember;
  */
 public class HiddenObjectFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String HIDDEN_PREFIX = "hidden";
-
-    private static final String[] PREFIXES = { HIDDEN_PREFIX, };
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.HIDDEN_PREFIX);
 
     public HiddenObjectFacetViaMethodFactory() {
         super(FeatureType.EVERYTHING_BUT_PARAMETERS, OrphanValidation.VALIDATE, PREFIXES);
@@ -77,7 +77,8 @@ public class HiddenObjectFacetViaMethodFactory extends MethodPrefixBasedFacetFac
         final Class<?> cls = processClassContext.getCls();
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
 
-        final Method method = MethodFinderUtils.findMethod(cls, HIDDEN_PREFIX, returnType, NO_PARAMETERS_TYPES);
+        final Method method = MethodFinderUtils.findMethod(
+                cls, MethodLiteralConstants.HIDDEN_PREFIX, returnType, NO_PARAMETERS_TYPES);
         if (method == null) {
             return false;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/icon/method/IconFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/icon/method/IconFacetMethodFactory.java
index 7604dbe..be1159e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/icon/method/IconFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/icon/method/IconFacetMethodFactory.java
@@ -21,17 +21,17 @@ package org.apache.isis.metamodel.facets.object.icon.method;
 
 import java.lang.reflect.Method;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 
 public class IconFacetMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String ICON_NAME_PREFIX = "iconName";
-
-    private static final String[] PREFIXES = { ICON_NAME_PREFIX, };
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.ICON_NAME_PREFIX);
 
     public IconFacetMethodFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -42,7 +42,8 @@ public class IconFacetMethodFactory extends MethodPrefixBasedFacetFactoryAbstrac
         final Class<?> cls = processClassContext.getCls();
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
 
-        final Method method = MethodFinderUtils.findMethod(cls, ICON_NAME_PREFIX, String.class, NO_PARAMETERS_TYPES);
+        final Method method = MethodFinderUtils.findMethod(
+                cls, MethodLiteralConstants.ICON_NAME_PREFIX, String.class, NO_PARAMETERS_TYPES);
         if (method == null) {
             return;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/layout/LayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/layout/LayoutFacetFactory.java
index da62878..e65cb43 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/layout/LayoutFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/layout/LayoutFacetFactory.java
@@ -21,16 +21,16 @@ package org.apache.isis.metamodel.facets.object.layout;
 
 import java.lang.reflect.Method;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 
 public class LayoutFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String LAYOUT_METHOD_NAME = "layout";
-
-    private static final String[] PREFIXES = { LAYOUT_METHOD_NAME, };
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.LAYOUT_METHOD_NAME);
 
     public LayoutFacetFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -41,7 +41,8 @@ public class LayoutFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
         final Class<?> cls = processClassContext.getCls();
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
 
-        final Method method = MethodFinderUtils.findMethod(cls, LAYOUT_METHOD_NAME, String.class, NO_PARAMETERS_TYPES);
+        final Method method = MethodFinderUtils.findMethod(
+                cls, MethodLiteralConstants.LAYOUT_METHOD_NAME, String.class, NO_PARAMETERS_TYPES);
 
         final LayoutFacet facet;
         if (method == null) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/methods/TitleFacetViaMethodsFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/methods/TitleFacetViaMethodsFactory.java
index 37f1606..5051f55 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/methods/TitleFacetViaMethodsFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/methods/TitleFacetViaMethodsFactory.java
@@ -22,6 +22,8 @@ package org.apache.isis.metamodel.facets.object.title.methods;
 import java.lang.reflect.Method;
 
 import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.commons.ClassExtensions;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
@@ -36,7 +38,9 @@ import static org.apache.isis.metamodel.facets.MethodLiteralConstants.TO_STRING;
 
 public class TitleFacetViaMethodsFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { TO_STRING, TITLE, };
+    private static final Can<String> PREFIXES = Can.ofCollection(_Lists.of(
+            TO_STRING, 
+            TITLE));
 
     public TitleFacetViaMethodsFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
index 1490b7e..98efe80 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
@@ -22,6 +22,7 @@ package org.apache.isis.metamodel.facets.object.validating.validateobject.method
 import java.lang.reflect.Method;
 
 import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
@@ -33,7 +34,7 @@ import static org.apache.isis.metamodel.facets.MethodLiteralConstants.VALIDATE_P
 
 public class ValidateObjectFacetMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { VALIDATE_PREFIX, };
+    private static final Can<String> PREFIXES = Can.ofSingleton(VALIDATE_PREFIX);
 
     public ValidateObjectFacetMethodFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
index 5eada6d..0debc33 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
@@ -25,6 +25,7 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.FacetedMethod;
@@ -35,7 +36,7 @@ import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 
 public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = {"autoComplete"};
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.AUTO_COMPLETE_PREFIX);
 
     public ActionParameterAutoCompleteFacetViaMethodFactory() {
         super(FeatureType.ACTIONS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
index 4549da3..7f239e2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
@@ -22,19 +22,19 @@ package org.apache.isis.metamodel.facets.param.choices.method;
 import java.lang.reflect.Method;
 import java.util.Collection;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal._Constants;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
-import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
+import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 
 public class ActionChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodLiteralConstants.CHOICES_PREFIX };
-
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.CHOICES_PREFIX);
 
     /**
      * Note that the {@link Facet}s registered are the generic ones from
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
index b92a0cc..78f9b41 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
@@ -24,6 +24,7 @@ import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.List;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.ListExtensions;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.exceptions.MetaModelException;
@@ -38,7 +39,7 @@ import org.apache.isis.metamodel.facets.param.choices.ActionChoicesFacet;
 
 public class ActionParameterChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = {};
+    private static final Can<String> PREFIXES = Can.empty();
 
     /**
      * Note that the {@link Facet}s registered are the generic ones from
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
index 83f78fd..f945dfa 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
@@ -22,6 +22,7 @@ package org.apache.isis.metamodel.facets.param.defaults.methodnum;
 import java.lang.reflect.Method;
 import java.util.List;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.collections._Arrays;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.exceptions.MetaModelException;
@@ -41,7 +42,7 @@ import lombok.val;
  */
 public class ActionParameterDefaultsFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = {};
+    private static final Can<String> PREFIXES = Can.empty();
 
     /**
      * Note that the {@link Facet}s registered are the generic ones from
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
index 88a6343..a0eefe0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
@@ -19,12 +19,11 @@
 
 package org.apache.isis.metamodel.facets.param.disable.method;
 
-import lombok.val;
-
 import java.lang.reflect.Method;
 import java.util.List;
 
 import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.ListExtensions;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.Facet;
@@ -35,12 +34,14 @@ import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.param.disable.ActionParameterDisabledFacet;
 
+import lombok.val;
+
 /**
  * Sets up {@link ActionParameterDisabledFacet}.
  */
 public class ActionParameterDisabledFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract  {
 
-    private static final String[] PREFIXES = { MethodLiteralConstants.DISABLE_PREFIX };
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.DISABLE_PREFIX);
 
     public ActionParameterDisabledFacetViaMethodFactory() {
         super(FeatureType.PARAMETERS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
index 9b4918e..aecaf64 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
@@ -24,6 +24,7 @@ import lombok.val;
 import java.lang.reflect.Method;
 import java.util.List;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.ListExtensions;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.Facet;
@@ -39,7 +40,7 @@ import org.apache.isis.metamodel.facets.param.hide.ActionParameterHiddenFacet;
  */
 public class ActionParameterHiddenFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract  {
 
-    private static final String[] PREFIXES = { MethodLiteralConstants.HIDE_PREFIX };
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.HIDE_PREFIX);
 
     public ActionParameterHiddenFacetViaMethodFactory() {
         super(FeatureType.PARAMETERS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethodFactory.java
index 9828be0..e3e0c07 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethodFactory.java
@@ -19,11 +19,10 @@
 
 package org.apache.isis.metamodel.facets.param.validate.method;
 
-import lombok.val;
-
 import java.lang.reflect.Method;
 
 import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FeatureType;
@@ -32,12 +31,14 @@ import org.apache.isis.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 
+import lombok.val;
+
 /**
  * Sets up {@link org.apache.isis.metamodel.facets.param.validate.ActionParameterValidationFacet}.
  */
 public class ActionParameterValidationFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract  {
 
-    private static final String[] PREFIXES = { MethodLiteralConstants.VALIDATE_PREFIX };
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.VALIDATE_PREFIX);
 
     /**
      * Note that the {@link Facet}s registered are the generic ones from
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
index 5e7c117..8392f58 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
@@ -22,6 +22,8 @@ package org.apache.isis.metamodel.facets.properties.accessor;
 import java.lang.reflect.Method;
 import java.util.List;
 
+import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.commons.CanBeVoid;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
@@ -33,7 +35,9 @@ import org.apache.isis.metamodel.spec.ObjectSpecification;
 
 public class PropertyAccessorFacetViaAccessorFactory extends PropertyOrCollectionIdentifyingFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodLiteralConstants.GET_PREFIX, MethodLiteralConstants.IS_PREFIX };
+    private static final Can<String> PREFIXES = Can.ofCollection(_Lists.of(
+            MethodLiteralConstants.GET_PREFIX, 
+            MethodLiteralConstants.IS_PREFIX));
 
     public PropertyAccessorFacetViaAccessorFactory() {
         super(FeatureType.PROPERTIES_ONLY, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
index 4c29978..41bb625 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
@@ -21,18 +21,20 @@ package org.apache.isis.metamodel.facets.properties.autocomplete.method;
 
 import java.lang.reflect.Method;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
-import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
+import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 
-public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
+import lombok.val;
 
-    private static final String[] PREFIXES = { MethodLiteralConstants.AUTO_COMPLETE_PREFIX };
+public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.AUTO_COMPLETE_PREFIX);
 
     public PropertyAutoCompleteFacetMethodFactory() {
         super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -50,7 +52,10 @@ public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFac
         final Method getter = processMethodContext.getMethod();
         final String capitalizedName = StringExtensions.asJavaBaseName(getter.getName());
 
-        System.out.println("### " + getter);
+        val getterName = getter.toString();
+        if(getterName.contains("ProperMemberSupport")) {
+            System.out.println("#autoComplete# " + getter);
+        }
         
         final Class<?> cls = processMethodContext.getCls();
         final Class<?> returnType = getter.getReturnType();
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
index ad36b1c..368e8dc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
@@ -21,17 +21,18 @@ package org.apache.isis.metamodel.facets.properties.choices.method;
 
 import java.lang.reflect.Method;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
-import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
+import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 
 public class PropertyChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodLiteralConstants.CHOICES_PREFIX };
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.CHOICES_PREFIX);
 
     public PropertyChoicesFacetViaMethodFactory() {
         super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
index 9ba40f5..d9298a0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
@@ -21,18 +21,18 @@ package org.apache.isis.metamodel.facets.properties.defaults.method;
 
 import java.lang.reflect.Method;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
-import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
+import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 
 public class PropertyDefaultFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodLiteralConstants.DEFAULT_PREFIX };
-
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.DEFAULT_PREFIX);
 
     public PropertyDefaultFacetViaMethodFactory() {
         super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/update/PropertyModifyFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/update/PropertyModifyFacetFactory.java
index 6f1fa25..55fdf3c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/update/PropertyModifyFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/update/PropertyModifyFacetFactory.java
@@ -21,18 +21,19 @@ package org.apache.isis.metamodel.facets.properties.update;
 
 import java.lang.reflect.Method;
 
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
-import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
+import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacetViaModifyMethod;
 
 public class PropertyModifyFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodLiteralConstants.MODIFY_PREFIX };
+    private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.MODIFY_PREFIX);
 
     public PropertyModifyFacetFactory() {
         super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java
index 1123777..1d7ab0b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java
@@ -21,13 +21,15 @@ package org.apache.isis.metamodel.facets.properties.update;
 
 import java.lang.reflect.Method;
 
+import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
-import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
+import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.members.disabled.DisabledFacet;
 import org.apache.isis.metamodel.facets.properties.update.clear.PropertyClearFacetViaClearMethod;
 import org.apache.isis.metamodel.facets.properties.update.clear.PropertyClearFacetViaSetterMethod;
@@ -36,7 +38,9 @@ import org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterF
 
 public class PropertySetAndClearFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodLiteralConstants.SET_PREFIX, MethodLiteralConstants.CLEAR_PREFIX };
+    private static final Can<String> PREFIXES = Can.ofCollection(_Lists.of(
+            MethodLiteralConstants.SET_PREFIX, 
+            MethodLiteralConstants.CLEAR_PREFIX));
 
     public PropertySetAndClearFacetFactory() {
         super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethodFactory.java
index 4348772..7977593 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethodFactory.java
@@ -22,6 +22,7 @@ package org.apache.isis.metamodel.facets.properties.validating.method;
 import java.lang.reflect.Method;
 
 import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.FacetedMethod;
@@ -32,7 +33,7 @@ import static org.apache.isis.metamodel.facets.MethodLiteralConstants.VALIDATE_P
 
 public class PropertyValidateFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract  {
 
-    private static final String[] PREFIXES = { VALIDATE_PREFIX };
+    private static final Can<String> PREFIXES = Can.ofSingleton(VALIDATE_PREFIX);
 
     public PropertyValidateFacetViaMethodFactory() {
         super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/facetprocessor/FacetProcessor.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/facetprocessor/FacetProcessor.java
index 25689ac..43845a8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/facetprocessor/FacetProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/facetprocessor/FacetProcessor.java
@@ -32,8 +32,8 @@ import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.commons.internal.collections._Multimaps;
 import org.apache.isis.commons.internal.collections._Multimaps.ListMultimap;
+import org.apache.isis.commons.internal.collections._Sets;
 import org.apache.isis.metamodel.context.MetaModelContext;
-import org.apache.isis.metamodel.commons.ListExtensions;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facetapi.MethodRemover;
@@ -82,7 +82,7 @@ public class FacetProcessor {
      * {@link MethodPrefixBasedFacetFactory}.
      *
      */
-    private final _Lazy<List<String>> methodPrefixes = 
+    private final _Lazy<Set<String>> methodPrefixes = 
             _Lazy.threadSafe(this::init_methodPrefixes);
 
     /**
@@ -433,12 +433,12 @@ public class FacetProcessor {
         return factoryListByFeatureType;
     }
 
-    private List<String> init_methodPrefixes() {
-        val cachedMethodPrefixes = _Lists.<String>newArrayList();
+    private Set<String> init_methodPrefixes() {
+        val cachedMethodPrefixes = _Sets.<String>newHashSet();
         for (val facetFactory : factories) {
             if (facetFactory instanceof MethodPrefixBasedFacetFactory) {
                 val methodPrefixBasedFacetFactory = (MethodPrefixBasedFacetFactory) facetFactory;
-                ListExtensions.mergeWith(cachedMethodPrefixes, methodPrefixBasedFacetFactory.getPrefixes());
+                methodPrefixBasedFacetFactory.getPrefixes().forEach(cachedMethodPrefixes::add);
             }
         }
         return cachedMethodPrefixes;
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
index d3f732a..9e637fe 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
@@ -20,7 +20,7 @@
 package org.apache.isis.metamodel.facets;
 
 import java.lang.reflect.Method;
-import java.util.List;
+import java.util.EnumSet;
 import java.util.Optional;
 
 import org.jmock.Expectations;
@@ -33,10 +33,10 @@ import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
-import org.apache.isis.metamodel.context.MetaModelContext;
-import org.apache.isis.metamodel.context.MetaModelContextAware;
 import org.apache.isis.metamodel.MetaModelContext_forTesting;
 import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
+import org.apache.isis.metamodel.context.MetaModelContext;
+import org.apache.isis.metamodel.context.MetaModelContextAware;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facetapi.IdentifiedHolder;
@@ -139,11 +139,7 @@ public abstract class AbstractFacetFactoryJUnit4TestCase {
         return Utils.contains(types, type);
     }
 
-    protected boolean contains(final FeatureType[] featureTypes, final FeatureType featureType) {
-        return Utils.contains(featureTypes, featureType);
-    }
-
-    protected static boolean contains(final List<FeatureType> featureTypes, final FeatureType featureType) {
+    protected static boolean contains(final EnumSet<FeatureType> featureTypes, final FeatureType featureType) {
         return Utils.contains(featureTypes, featureType);
     }
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/AbstractFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/AbstractFacetFactoryTest.java
index b6d816d..a5e9530 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/AbstractFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/AbstractFacetFactoryTest.java
@@ -20,16 +20,16 @@
 package org.apache.isis.metamodel.facets;
 
 import java.lang.reflect.Method;
-import java.util.List;
+import java.util.EnumSet;
 
 import org.jmock.Expectations;
 import org.junit.Rule;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.metamodel.context.MetaModelContextAware;
 import org.apache.isis.metamodel.MetaModelContext_forTesting;
 import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
+import org.apache.isis.metamodel.context.MetaModelContextAware;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetHolderImpl;
 import org.apache.isis.metamodel.facetapi.FeatureType;
@@ -149,7 +149,7 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
         return Utils.contains(types, type);
     }
 
-    protected static boolean contains(final List<FeatureType> featureTypes, final FeatureType featureType) {
+    protected static boolean contains(final EnumSet<FeatureType> featureTypes, final FeatureType featureType) {
         return Utils.contains(featureTypes, featureType);
     }
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/Utils.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/Utils.java
index 0ebedb1..0436489 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/Utils.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/Utils.java
@@ -20,7 +20,7 @@
 package org.apache.isis.metamodel.facets;
 
 import java.lang.reflect.Method;
-import java.util.List;
+import java.util.EnumSet;
 
 import org.apache.isis.commons.internal._Constants;
 import org.apache.isis.metamodel.facetapi.FeatureType;
@@ -40,17 +40,11 @@ class Utils {
         return false;
     }
 
-    protected static boolean contains(final FeatureType[] array, final FeatureType val) {
-        for (final FeatureType element : array) {
-            if (element == val) {
-                return true;
-            }
+    protected static boolean contains(EnumSet<FeatureType> featureTypes, final FeatureType featureType) {
+        if(featureTypes==null || featureType==null) {
+            return false;
         }
-        return false;
-    }
-
-    protected static boolean contains(final List<FeatureType> list, final FeatureType val) {
-        return list.contains(val);
+        return featureTypes.contains(featureType);
     }
 
     protected static Method findMethod(final Class<?> type, final String methodName, final Class<?>[] methodTypes) {
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/facets/FacetsFacetAnnotationFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/facets/FacetsFacetAnnotationFactoryTest.java
index cf2052c..d75f589 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/facets/FacetsFacetAnnotationFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/facets/FacetsFacetAnnotationFactoryTest.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.metamodel.facets.object.facets;
 
-import java.util.List;
+import java.util.EnumSet;
 
 import org.apache.isis.applib.annotation.Facets;
 import org.apache.isis.metamodel.facetapi.Facet;
@@ -49,7 +49,7 @@ public class FacetsFacetAnnotationFactoryTest extends AbstractFacetFactoryTest {
 
     public static class CustomerFacetFactory implements FacetFactory {
         @Override
-        public List<FeatureType> getFeatureTypes() {
+        public EnumSet<FeatureType> getFeatureTypes() {
             return null;
         }
 
@@ -68,7 +68,7 @@ public class FacetsFacetAnnotationFactoryTest extends AbstractFacetFactoryTest {
 
     public static class CustomerFacetFactory2 implements FacetFactory {
         @Override
-        public List<FeatureType> getFeatureTypes() {
+        public EnumSet<FeatureType> getFeatureTypes() {
             return null;
         }
 
diff --git a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/datastoreidentity/GivenJdoDatastoreIdentityAnnotationFacetFactoryTest.java b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/datastoreidentity/GivenJdoDatastoreIdentityAnnotationFacetFactoryTest.java
index 5751bde..13cc37c 100644
--- a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/datastoreidentity/GivenJdoDatastoreIdentityAnnotationFacetFactoryTest.java
+++ b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/datastoreidentity/GivenJdoDatastoreIdentityAnnotationFacetFactoryTest.java
@@ -18,15 +18,10 @@
  */
 package org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.object.datastoreidentity;
 
-import java.util.List;
-
 import javax.jdo.annotations.DatastoreIdentity;
 import javax.jdo.annotations.IdGeneratorStrategy;
 import javax.jdo.annotations.PersistenceCapable;
 
-import org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.object.datastoreidentity.JdoDatastoreIdentityAnnotationFacetFactory;
-import org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.object.datastoreidentity.JdoDatastoreIdentityFacet;
-import org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.object.datastoreidentity.JdoDatastoreIdentityFacetAnnotation;
 import org.datanucleus.enhancement.Persistable;
 
 import org.apache.isis.metamodel.facetapi.Facet;
@@ -34,11 +29,10 @@ import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.metamodel.facets.FacetFactory;
 
-import junit.framework.Assert;
-
+import lombok.val;
 
-public class GivenJdoDatastoreIdentityAnnotationFacetFactoryTest extends
-AbstractFacetFactoryTest {
+public class GivenJdoDatastoreIdentityAnnotationFacetFactoryTest
+extends AbstractFacetFactoryTest {
 
     private JdoDatastoreIdentityAnnotationFacetFactory facetFactory;
 
@@ -56,14 +50,12 @@ AbstractFacetFactoryTest {
     }
 
     public void testFeatureTypes() {
-        final List<FeatureType> featureTypes = facetFactory
-                .getFeatureTypes();
-        Assert.assertTrue(contains(featureTypes, FeatureType.OBJECT));
+        val featureTypes = facetFactory.getFeatureTypes();
+        assertTrue(contains(featureTypes, FeatureType.OBJECT));
         assertFalse(contains(featureTypes, FeatureType.PROPERTY));
         assertFalse(contains(featureTypes, FeatureType.COLLECTION));
-        Assert.assertFalse(contains(featureTypes, FeatureType.ACTION));
-        assertFalse(contains(featureTypes,
-                FeatureType.ACTION_PARAMETER_SCALAR));
+        assertFalse(contains(featureTypes, FeatureType.ACTION));
+        assertFalse(contains(featureTypes, FeatureType.ACTION_PARAMETER_SCALAR));
     }
 
     public void testDatastoreIdentityAnnotationPickedUpOnClass() {
diff --git a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/discriminator/GivenJdoDiscriminatorAnnotationFacetFactoryTest.java b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/discriminator/GivenJdoDiscriminatorAnnotationFacetFactoryTest.java
index bb1192f..030389d 100644
--- a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/discriminator/GivenJdoDiscriminatorAnnotationFacetFactoryTest.java
+++ b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/discriminator/GivenJdoDiscriminatorAnnotationFacetFactoryTest.java
@@ -18,15 +18,9 @@
  */
 package org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.object.discriminator;
 
-import java.util.List;
-
 import javax.jdo.annotations.Discriminator;
 import javax.jdo.annotations.PersistenceCapable;
 
-import org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.object.discriminator.JdoDiscriminatorAnnotationFacetFactory;
-import org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.object.discriminator.JdoDiscriminatorFacet;
-import org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.object.discriminator.JdoDiscriminatorFacetDefault;
-import org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.object.discriminator.ObjectSpecIdFacetInferredFromJdoDiscriminatorValueAnnotation;
 import org.datanucleus.enhancement.Persistable;
 
 import org.apache.isis.metamodel.facetapi.Facet;
@@ -37,6 +31,8 @@ import org.apache.isis.metamodel.facets.ObjectSpecIdFacetFactory;
 import org.apache.isis.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
 import org.apache.isis.metamodel.spec.ObjectSpecId;
 
+import lombok.val;
+
 public class GivenJdoDiscriminatorAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
 
     private JdoDiscriminatorAnnotationFacetFactory facetFactory;
@@ -55,7 +51,7 @@ public class GivenJdoDiscriminatorAnnotationFacetFactoryTest extends AbstractFac
     }
 
     public void testFeatureTypes() {
-        final List<FeatureType> featureTypes = facetFactory.getFeatureTypes();
+        val featureTypes = facetFactory.getFeatureTypes();
         assertTrue(contains(featureTypes, FeatureType.OBJECT));
         assertFalse(contains(featureTypes, FeatureType.PROPERTY));
         assertFalse(contains(featureTypes, FeatureType.COLLECTION));
diff --git a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/persistencecapable/GivenJdoPersistenceCapableAnnotationFacetFactoryTest.java b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/persistencecapable/GivenJdoPersistenceCapableAnnotationFacetFactoryTest.java
index 084678a..93866af 100644
--- a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/persistencecapable/GivenJdoPersistenceCapableAnnotationFacetFactoryTest.java
+++ b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/persistencecapable/GivenJdoPersistenceCapableAnnotationFacetFactoryTest.java
@@ -18,14 +18,9 @@
  */
 package org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.object.persistencecapable;
 
-import java.util.List;
-
 import javax.jdo.annotations.IdentityType;
 import javax.jdo.annotations.PersistenceCapable;
 
-import org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.object.persistencecapable.JdoPersistenceCapableAnnotationFacetFactory;
-import org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet;
-import org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacetAnnotation;
 import org.datanucleus.enhancement.Persistable;
 
 import org.apache.isis.metamodel.facetapi.Facet;
@@ -34,11 +29,10 @@ import org.apache.isis.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.metamodel.facets.FacetFactory;
 import org.apache.isis.metamodel.facets.ObjectSpecIdFacetFactory;
 
-import junit.framework.Assert;
-
+import lombok.val;
 
-public class GivenJdoPersistenceCapableAnnotationFacetFactoryTest extends
-AbstractFacetFactoryTest {
+public class GivenJdoPersistenceCapableAnnotationFacetFactoryTest
+extends AbstractFacetFactoryTest {
 
     private JdoPersistenceCapableAnnotationFacetFactory facetFactory;
 
@@ -56,20 +50,12 @@ AbstractFacetFactoryTest {
     }
 
     public void testFeatureTypes() {
-        final List<FeatureType> featureTypes = facetFactory
-                .getFeatureTypes();
-        Assert
-        .assertTrue(contains(featureTypes,
-                FeatureType.OBJECT));
-        assertFalse(contains(featureTypes,
-                FeatureType.PROPERTY));
-        assertFalse(contains(featureTypes,
-                FeatureType.COLLECTION));
-        Assert
-        .assertFalse(contains(featureTypes,
-                FeatureType.ACTION));
-        assertFalse(contains(featureTypes,
-                FeatureType.ACTION_PARAMETER_SCALAR));
+        val featureTypes = facetFactory.getFeatureTypes();
+        assertTrue(contains(featureTypes, FeatureType.OBJECT));
+        assertFalse(contains(featureTypes, FeatureType.PROPERTY));
+        assertFalse(contains(featureTypes, FeatureType.COLLECTION));
+        assertFalse(contains(featureTypes, FeatureType.ACTION));
+        assertFalse(contains(featureTypes, FeatureType.ACTION_PARAMETER_SCALAR));
     }
 
     public void testPersistenceCapableAnnotationPickedUpOnClass() {
diff --git a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/version/JdoVersionAnnotationFacetFactoryTest.java b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/version/JdoVersionAnnotationFacetFactoryTest.java
index 5456949..7330ce0 100644
--- a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/version/JdoVersionAnnotationFacetFactoryTest.java
+++ b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/version/JdoVersionAnnotationFacetFactoryTest.java
@@ -18,14 +18,9 @@
  */
 package org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.object.version;
 
-import java.util.List;
-
 import javax.jdo.annotations.PersistenceCapable;
 import javax.jdo.annotations.Version;
 
-import org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.object.version.JdoVersionAnnotationFacetFactory;
-import org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.object.version.JdoVersionFacet;
-import org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.object.version.JdoVersionFacetFromAnnotation;
 import org.datanucleus.enhancement.Persistable;
 
 import org.apache.isis.metamodel.facetapi.Facet;
@@ -33,6 +28,8 @@ import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.metamodel.facets.FacetFactory;
 
+import lombok.val;
+
 public class JdoVersionAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
 
     private JdoVersionAnnotationFacetFactory facetFactory;
@@ -51,7 +48,7 @@ public class JdoVersionAnnotationFacetFactoryTest extends AbstractFacetFactoryTe
     }
 
     public void testFeatureTypes() {
-        final List<FeatureType> featureTypes = facetFactory.getFeatureTypes();
+        val featureTypes = facetFactory.getFeatureTypes();
         assertTrue(contains(featureTypes, FeatureType.OBJECT));
         assertFalse(contains(featureTypes, FeatureType.PROPERTY));
         assertFalse(contains(featureTypes, FeatureType.COLLECTION));
diff --git a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest.java b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest.java
index 74b8eee..bbdc56c 100644
--- a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest.java
+++ b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest.java
@@ -19,7 +19,6 @@
 package org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.prop.column;
 
 import java.lang.reflect.Method;
-import java.util.List;
 
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FeatureType;
@@ -30,6 +29,8 @@ import org.apache.isis.metamodel.facets.value.bigdecimal.BigDecimalValueFacet;
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 
+import lombok.val;
+
 public class BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
 
     private BigDecimalDerivedFromJdoColumnAnnotationFacetFactory facetFactory;
@@ -48,7 +49,7 @@ public class BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest extends Ab
     }
 
     public void testFeatureTypes() {
-        final List<FeatureType> featureTypes = facetFactory.getFeatureTypes();
+        val featureTypes = facetFactory.getFeatureTypes();
         assertFalse(contains(featureTypes, FeatureType.OBJECT));
         assertTrue(contains(featureTypes, FeatureType.PROPERTY));
         assertFalse(contains(featureTypes, FeatureType.COLLECTION));
diff --git a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/prop/column/MandatoryDerivedFromJdoColumnAnnotationFacetFactoryTest.java b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/prop/column/MandatoryDerivedFromJdoColumnAnnotationFacetFactoryTest.java
index 71382ad..0e71b9b 100644
--- a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/prop/column/MandatoryDerivedFromJdoColumnAnnotationFacetFactoryTest.java
+++ b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/prop/column/MandatoryDerivedFromJdoColumnAnnotationFacetFactoryTest.java
@@ -19,7 +19,6 @@
 package org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.prop.column;
 
 import java.lang.reflect.Method;
-import java.util.List;
 
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.AbstractFacetFactoryTest;
@@ -29,6 +28,8 @@ import org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet;
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 
+import lombok.val;
+
 public class MandatoryDerivedFromJdoColumnAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
 
     private MandatoryFromJdoColumnAnnotationFacetFactory facetFactory;
@@ -49,7 +50,7 @@ public class MandatoryDerivedFromJdoColumnAnnotationFacetFactoryTest extends Abs
     }
 
     public void testFeatureTypes() {
-        final List<FeatureType> featureTypes = facetFactory.getFeatureTypes();
+        val featureTypes = facetFactory.getFeatureTypes();
         assertFalse(contains(featureTypes, FeatureType.OBJECT));
         assertTrue(contains(featureTypes, FeatureType.PROPERTY));
         assertFalse(contains(featureTypes, FeatureType.COLLECTION));
diff --git a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/prop/notpersistent/GivenJdoNotPersistentAnnotationFacetFactoryTest.java b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/prop/notpersistent/GivenJdoNotPersistentAnnotationFacetFactoryTest.java
index cc68ebb..a1d70cf 100644
--- a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/prop/notpersistent/GivenJdoNotPersistentAnnotationFacetFactoryTest.java
+++ b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/prop/notpersistent/GivenJdoNotPersistentAnnotationFacetFactoryTest.java
@@ -19,7 +19,6 @@
 package org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.prop.notpersistent;
 
 import java.lang.reflect.Method;
-import java.util.List;
 
 import javax.jdo.annotations.NotPersistent;
 
@@ -29,6 +28,8 @@ import org.apache.isis.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.metamodel.facets.FacetFactory;
 import org.apache.isis.metamodel.facets.propcoll.notpersisted.NotPersistedFacet;
 
+import lombok.val;
+
 public class GivenJdoNotPersistentAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
 
     private JdoNotPersistentAnnotationFacetFactory facetFactory;
@@ -47,7 +48,7 @@ public class GivenJdoNotPersistentAnnotationFacetFactoryTest extends AbstractFac
     }
 
     public void testFeatureTypes() {
-        final List<FeatureType> featureTypes = facetFactory.getFeatureTypes();
+        val featureTypes = facetFactory.getFeatureTypes();
         assertFalse(contains(featureTypes, FeatureType.OBJECT));
         assertTrue(contains(featureTypes, FeatureType.PROPERTY));
         assertFalse(contains(featureTypes, FeatureType.COLLECTION));
diff --git a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/prop/primarykey/GivenJdoPrimaryKeyAnnotationFacetFactoryTest.java b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/prop/primarykey/GivenJdoPrimaryKeyAnnotationFacetFactoryTest.java
index 3809119..938416c 100644
--- a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/prop/primarykey/GivenJdoPrimaryKeyAnnotationFacetFactoryTest.java
+++ b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/prop/primarykey/GivenJdoPrimaryKeyAnnotationFacetFactoryTest.java
@@ -19,7 +19,6 @@
 package org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.prop.primarykey;
 
 import java.lang.reflect.Method;
-import java.util.List;
 
 import javax.jdo.annotations.PrimaryKey;
 
@@ -30,6 +29,8 @@ import org.apache.isis.metamodel.facets.FacetFactory;
 import org.apache.isis.metamodel.facets.members.disabled.DisabledFacet;
 import org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet;
 
+import lombok.val;
+
 public class GivenJdoPrimaryKeyAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
 
     private JdoPrimaryKeyAnnotationFacetFactory facetFactory;
@@ -48,7 +49,7 @@ public class GivenJdoPrimaryKeyAnnotationFacetFactoryTest extends AbstractFacetF
     }
 
     public void testFeatureTypes() {
-        final List<FeatureType> featureTypes = facetFactory.getFeatureTypes();
+        val featureTypes = facetFactory.getFeatureTypes();
         assertFalse(contains(featureTypes, FeatureType.OBJECT));
         assertTrue(contains(featureTypes, FeatureType.PROPERTY));
         assertFalse(contains(featureTypes, FeatureType.COLLECTION));
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
index 3d2ab5a..de6ce62 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
@@ -20,15 +20,17 @@ package org.apache.isis.testdomain.domainmodel;
 
 import javax.inject.Inject;
 
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.TestPropertySource;
 
+import org.apache.isis.applib.services.jaxb.JaxbService;
+import org.apache.isis.applib.services.metamodel.MetaModelService;
 import org.apache.isis.config.presets.IsisPresets;
 import org.apache.isis.integtestsupport.validate.ValidateDomainModel;
 import org.apache.isis.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.metamodel.specloader.specimpl.IntrospectionState;
+import org.apache.isis.schema.metamodel.v1.DomainClassDto;
 import org.apache.isis.testdomain.Smoketest;
 import org.apache.isis.testdomain.conf.Configuration_usingJdo;
 import org.apache.isis.testdomain.jdo.Product;
@@ -62,35 +64,34 @@ import lombok.val;
 //@Transactional
 class DomainModelTest_usingGoodDomain {
     
-//    @Inject private MetaModelService metaModelService;
-//    @Inject private JaxbService jaxbService;
+    @Inject private MetaModelService metaModelService;
+    @Inject private JaxbService jaxbService;
 //    @Inject private FactoryService factoryService;
     @Inject private SpecificationLoader specificationLoader;
 
     void debug() {
-           
-        
-//        val config = new MetaModelService.Config()
-////              .withIgnoreNoop()
-////              .withIgnoreAbstractClasses()
-////              .withIgnoreBuiltInValueTypes()
-////              .withIgnoreInterfaces()
-//                //.withPackagePrefix("*")
-//                .withPackagePrefix("org.apache.isis.testdomain.")
-//                ;
-//
-//        System.out.println("!!! listing MM");
-//        val metamodelDto = metaModelService.exportMetaModel(config);
-//        for (DomainClassDto domainClass : metamodelDto.getDomainClassDto()) {
-//            System.out.println("dc: " + domainClass.getId());
-//            val xmlString = jaxbService.toXml(domainClass);
-//            System.out.println(xmlString);
-//        }
-//        System.out.println("!!! ---");
+        val config = new MetaModelService.Config()
+//              .withIgnoreNoop()
+//              .withIgnoreAbstractClasses()
+//              .withIgnoreBuiltInValueTypes()
+//              .withIgnoreInterfaces()
+                //.withPackagePrefix("*")
+                .withPackagePrefix("org.apache.isis.testdomain.")
+                ;
+
+        System.out.println("!!! listing MM");
+        val metamodelDto = metaModelService.exportMetaModel(config);
+        for (DomainClassDto domainClass : metamodelDto.getDomainClassDto()) {
+            System.out.println("dc: " + domainClass.getId());
+            val xmlString = jaxbService.toXml(domainClass);
+            System.out.println(xmlString);
+        }
+        System.out.println("!!! ---");
     }
     
-    @Test  @Disabled("autoComplete, default, choices, don't get added to the MM with property contributed by mixins")
+    @Test
     void goodDomain_shouldPassValidation() {
+        debug();
         assertFalse(specificationLoader.snapshotSpecifications().isEmpty());
         
         val validateDomainModel = new ValidateDomainModel(specificationLoader);
diff --git a/incubator/core/model/src/main/java/org/apache/isis/incubator/model/metamodel/facets/SupportingMethodValidatorRefinerFactory.java b/incubator/core/model/src/main/java/org/apache/isis/incubator/model/metamodel/facets/SupportingMethodValidatorRefinerFactory.java
index e587302..f0b772f 100644
--- a/incubator/core/model/src/main/java/org/apache/isis/incubator/model/metamodel/facets/SupportingMethodValidatorRefinerFactory.java
+++ b/incubator/core/model/src/main/java/org/apache/isis/incubator/model/metamodel/facets/SupportingMethodValidatorRefinerFactory.java
@@ -19,16 +19,17 @@
 package org.apache.isis.incubator.model.metamodel.facets;
 
 import java.lang.reflect.Method;
-import java.util.Collections;
+import java.util.EnumSet;
 import java.util.HashSet;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import org.apache.isis.incubator.model.applib.annotation.Model;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Sets;
+import org.apache.isis.incubator.model.applib.annotation.Model;
 import org.apache.isis.metamodel.commons.MethodUtil;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
+import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.ImperativeFacet;
@@ -42,11 +43,12 @@ import lombok.val;
  * @since 2.0
  *
  */
-public class SupportingMethodValidatorRefinerFactory extends FacetFactoryAbstract 
+public class SupportingMethodValidatorRefinerFactory 
+extends FacetFactoryAbstract 
 implements MetaModelRefiner {
 
     public SupportingMethodValidatorRefinerFactory() {
-        super(Collections.emptyList()); // does not contribute any facets
+        super(EnumSet.noneOf(FeatureType.class)); // does not contribute any facets
     }
 
     @Override


[isis] 02/02: ISIS-2228: fixes property specific facets with mixins

Posted by ah...@apache.org.
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

commit 45873d390e74299a45a67148cbcb3a1ddc5ecedb
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Dec 15 15:16:29 2019 +0100

    ISIS-2228: fixes property specific facets with mixins
---
 .../metamodel/facets/FacetFactoryAbstract.java     |  4 ++-
 .../metamodel/facets/MethodLiteralConstants.java   | 16 +++++++-----
 .../MethodPrefixBasedFacetFactoryAbstract.java     |  8 ++++++
 .../HideForContextFacetViaMethodFactory.java       | 10 ++------
 .../callbacks/CreatedCallbackFacetFactory.java     |  2 +-
 .../object/callbacks/LoadCallbackFacetFactory.java |  4 +--
 .../callbacks/PersistCallbackFacetFactory.java     |  4 +--
 .../PersistCallbackViaSaveMethodFacetFactory.java  |  4 +--
 .../callbacks/RemoveCallbackFacetFactory.java      |  4 +--
 .../RemoveCallbackViaDeleteMethodFacetFactory.java |  4 +--
 .../callbacks/UpdateCallbackFacetFactory.java      |  4 +--
 .../method/CssClassFacetMethodFactory.java         |  2 +-
 .../method/HiddenObjectFacetViaMethodFactory.java  |  2 +-
 .../object/icon/method/IconFacetMethodFactory.java |  2 +-
 .../facets/object/layout/LayoutFacetFactory.java   |  2 +-
 .../title/methods/TitleFacetViaMethodsFactory.java |  2 +-
 .../method/ValidateObjectFacetMethodFactory.java   |  2 +-
 ...ParameterAutoCompleteFacetViaMethodFactory.java |  2 +-
 ...tionParameterDisabledFacetViaMethodFactory.java |  2 +-
 ...ActionParameterHiddenFacetViaMethodFactory.java |  2 +-
 .../PropertyAutoCompleteFacetMethodFactory.java    | 30 ++++++++++++----------
 .../PropertyChoicesFacetViaMethodFactory.java      | 29 +++++++++++++++------
 .../PropertyDefaultFacetViaMethodFactory.java      | 29 +++++++++++++++------
 .../update/PropertySetAndClearFacetFactory.java    |  2 +-
 .../PropertyMethodsFacetFactoryTest.java           | 17 +++++++-----
 .../DomainModelTest_usingGoodDomain.java           |  2 +-
 26 files changed, 115 insertions(+), 76 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactoryAbstract.java
index 8ce0048..ddb88c6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactoryAbstract.java
@@ -63,7 +63,9 @@ implements FacetFactory, MetaModelContextAware, MetaModelContext.Delegating {
     
     // -- METHOD UTILITITES
     
-    protected static final Class<?>[] NO_PARAMETERS_TYPES = new Class<?>[0];
+    protected static final Class<?> NO_RETURN = (Class<?>)null;
+    protected static final Class<?>[] NO_ARG = new Class<?>[0];
+    protected static final Class<?>[] STRING_ARG = new Class<?>[] {String.class};
 
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodLiteralConstants.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodLiteralConstants.java
index fa6f7a0..eb37661 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodLiteralConstants.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodLiteralConstants.java
@@ -29,10 +29,6 @@ public final class MethodLiteralConstants {
     public static final String GET_PREFIX = "get";
     public static final String IS_PREFIX = "is";
     public static final String SET_PREFIX = "set";
-    public static final String CLEAR_PREFIX = "clear";
-    public static final String MODIFY_PREFIX = "modify";
-    public static final String ADD_TO_PREFIX = "addTo";
-    public static final String REMOVE_FROM_PREFIX = "removeFrom";
 
     public static final String DEFAULT_PREFIX = "default";
     public static final String CHOICES_PREFIX = "choices";
@@ -43,9 +39,6 @@ public final class MethodLiteralConstants {
     public static final String DISABLE_PREFIX = "disable";
     public static final String VALIDATE_PREFIX = "validate";
     
-    public static final String VALIDATE_ADD_TO_PREFIX = "validateAddTo";
-    public static final String VALIDATE_REMOVE_FROM_PREFIX = "validateRemoveFrom";
-
     public static final String CREATED_PREFIX = "created";
     public static final String LOADED_PREFIX = "loaded";
     public static final String LOADING_PREFIX = "loading";
@@ -71,5 +64,14 @@ public final class MethodLiteralConstants {
     public static final String ICON_NAME_PREFIX = "iconName";
     public static final String LAYOUT_METHOD_NAME = "layout";
     
+    // -- DEPRECATIONS
+    
+    @Deprecated public static final String VALIDATE_ADD_TO_PREFIX = "validateAddTo";
+    @Deprecated public static final String VALIDATE_REMOVE_FROM_PREFIX = "validateRemoveFrom";
+    @Deprecated public static final String CLEAR_PREFIX = "clear";
+    @Deprecated public static final String MODIFY_PREFIX = "modify";
+    @Deprecated public static final String ADD_TO_PREFIX = "addTo";
+    @Deprecated public static final String REMOVE_FROM_PREFIX = "removeFrom";
+    
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java
index ddc75a3..59ec8af 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixBasedFacetFactoryAbstract.java
@@ -106,4 +106,12 @@ implements MethodPrefixBasedFacetFactory {
         });
     }
 
+    protected boolean isPropertyOrMixinMain(ProcessMethodContext processMethodContext) {
+        return processMethodContext.isMixinMain() 
+                || (
+                        processMethodContext.getFeatureType()!=null // yet to support some JUnit tests
+                        && processMethodContext.getFeatureType().isProperty()
+                   );
+    }
+
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java
index 0fd5f33..7980d8f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java
@@ -31,8 +31,6 @@ import org.apache.isis.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 
-import lombok.val;
-
 public class HideForContextFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.HIDE_PREFIX);
@@ -57,12 +55,8 @@ public class HideForContextFacetViaMethodFactory extends MethodPrefixBasedFacetF
     private void attachHideFacetIfHideMethodIsFound(final ProcessMethodContext processMethodContext) {
 
         final Method getter = processMethodContext.getMethod();
-        final String capitalizedName = StringExtensions.asJavaBaseNameStripAccessorPrefixIfRequired(getter.getName());
-
-        val getterName = getter.toString();
-        if(getterName.contains("ProperMemberSupport")) {
-            System.out.println("#hide# " + getter);
-        }
+        final String capitalizedName = 
+                StringExtensions.asJavaBaseNameStripAccessorPrefixIfRequired(getter.getName());
         
         final Class<?> cls = processMethodContext.getCls();
         Method hideMethod = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.HIDE_PREFIX + capitalizedName, boolean.class, new Class[] {});
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/CreatedCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/CreatedCallbackFacetFactory.java
index 9bd3ff7..2381722 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/CreatedCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/CreatedCallbackFacetFactory.java
@@ -40,7 +40,7 @@ public class CreatedCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAb
         val cls = processClassContext.getCls();
         val facetHolder = processClassContext.getFacetHolder();
 
-        val method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.CREATED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        val method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.CREATED_PREFIX, void.class, NO_ARG);
         if (method != null) {
             super.addFacet(new CreatedCallbackFacetViaMethod(method, facetHolder));
             processClassContext.removeMethod(method);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/LoadCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/LoadCallbackFacetFactory.java
index da1131b..dc6f771 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/LoadCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/LoadCallbackFacetFactory.java
@@ -48,13 +48,13 @@ public class LoadCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstr
         val facetHolder = processClassContext.getFacetHolder();
 
         Method method = null;
-        method = MethodFinderUtils.findMethod(cls, LOADING_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, LOADING_PREFIX, void.class, NO_ARG);
         if (method != null) {
             processClassContext.removeMethod(method);
             super.addFacet(new LoadingCallbackFacetViaMethod(method, facetHolder));
         }
 
-        method = MethodFinderUtils.findMethod(cls, LOADED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, LOADED_PREFIX, void.class, NO_ARG);
         if (method != null) {
             processClassContext.removeMethod(method);
             super.addFacet(new LoadedCallbackFacetViaMethod(method, facetHolder));
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackFacetFactory.java
index b1f1f45..0b99dd2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackFacetFactory.java
@@ -50,7 +50,7 @@ public class PersistCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAb
         val facets = new ArrayList<Facet>();
 
         Method method = null;
-        method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.PERSISTING_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.PERSISTING_PREFIX, void.class, NO_ARG);
         if (method != null) {
             processClassContext.removeMethod(method);
             val facet = facetHolder.getFacet(PersistingCallbackFacet.class);
@@ -61,7 +61,7 @@ public class PersistCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAb
             }
         }
 
-        method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.PERSISTED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.PERSISTED_PREFIX, void.class, NO_ARG);
         if (method != null) {
             processClassContext.removeMethod(method);
             val facet = facetHolder.getFacet(PersistedCallbackFacet.class);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackViaSaveMethodFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackViaSaveMethodFacetFactory.java
index 97ed2bc..6c6e976 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackViaSaveMethodFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackViaSaveMethodFacetFactory.java
@@ -50,7 +50,7 @@ public class PersistCallbackViaSaveMethodFacetFactory extends MethodPrefixBasedF
         val facets = new ArrayList<Facet>();
 
         Method method = null;
-        method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.SAVING_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.SAVING_PREFIX, void.class, NO_ARG);
         if (method != null) {
             processClassContext.removeMethod(method);
             val facet = facetHolder.getFacet(PersistingCallbackFacet.class);
@@ -61,7 +61,7 @@ public class PersistCallbackViaSaveMethodFacetFactory extends MethodPrefixBasedF
             }
         }
 
-        method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.SAVED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.SAVED_PREFIX, void.class, NO_ARG);
         if (method != null) {
             processClassContext.removeMethod(method);
             val facet = facetHolder.getFacet(PersistedCallbackFacet.class);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackFacetFactory.java
index 1d8fa23..8e9047d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackFacetFactory.java
@@ -53,7 +53,7 @@ public class RemoveCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbs
 
         Method method = MethodFinderUtils
                 .findMethod(cls, REMOVING_PREFIX, void.class,
-                        NO_PARAMETERS_TYPES);
+                        NO_ARG);
         if (method != null) {
             processClassContext.removeMethod(method);
             val facet = facetHolder.getFacet(RemovingCallbackFacet.class);
@@ -64,7 +64,7 @@ public class RemoveCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbs
             }
         }
 
-        method = MethodFinderUtils.findMethod(cls, REMOVED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, REMOVED_PREFIX, void.class, NO_ARG);
         if (method != null) {
             processClassContext.removeMethod(method);
             val facet = facetHolder.getFacet(RemovedCallbackFacet.class);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackViaDeleteMethodFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackViaDeleteMethodFacetFactory.java
index 0024dab..174b731 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackViaDeleteMethodFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackViaDeleteMethodFacetFactory.java
@@ -53,7 +53,7 @@ public class RemoveCallbackViaDeleteMethodFacetFactory extends MethodPrefixBased
         val facets = new ArrayList<Facet>();
 
         Method method = null;
-        method = MethodFinderUtils.findMethod(cls, DELETING_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, DELETING_PREFIX, void.class, NO_ARG);
         if (method != null) {
             processClassContext.removeMethod(method);
             final RemovingCallbackFacet facet = facetHolder.getFacet(RemovingCallbackFacet.class);
@@ -64,7 +64,7 @@ public class RemoveCallbackViaDeleteMethodFacetFactory extends MethodPrefixBased
             }
         }
 
-        method = MethodFinderUtils.findMethod(cls, DELETED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, DELETED_PREFIX, void.class, NO_ARG);
         if (method != null) {
             processClassContext.removeMethod(method);
             val facet = facetHolder.getFacet(RemovedCallbackFacet.class);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/UpdateCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/UpdateCallbackFacetFactory.java
index a64428d..6967839 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/UpdateCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/UpdateCallbackFacetFactory.java
@@ -50,13 +50,13 @@ public class UpdateCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbs
         val facets = new ArrayList<Facet>();
 
         Method method = null;
-        method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.UPDATING_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.UPDATING_PREFIX, void.class, NO_ARG);
         if (method != null) {
             processClassContext.removeMethod(method);
             facets.add(new UpdatingCallbackFacetViaMethod(method, facetHolder));
         }
 
-        method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.UPDATED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.UPDATED_PREFIX, void.class, NO_ARG);
         if (method != null) {
             processClassContext.removeMethod(method);
             facets.add(new UpdatedCallbackFacetViaMethod(method, facetHolder));
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cssclass/method/CssClassFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cssclass/method/CssClassFacetMethodFactory.java
index 21d0301..d6a0ea1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cssclass/method/CssClassFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cssclass/method/CssClassFacetMethodFactory.java
@@ -42,7 +42,7 @@ public class CssClassFacetMethodFactory extends MethodPrefixBasedFacetFactoryAbs
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
 
         final Method method = MethodFinderUtils.findMethod(
-                cls, MethodLiteralConstants.CSS_CLASS_PREFIX, String.class, NO_PARAMETERS_TYPES);
+                cls, MethodLiteralConstants.CSS_CLASS_PREFIX, String.class, NO_ARG);
         if (method == null) {
             return;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethodFactory.java
index 0ee479a..a7c859a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/hidden/method/HiddenObjectFacetViaMethodFactory.java
@@ -78,7 +78,7 @@ public class HiddenObjectFacetViaMethodFactory extends MethodPrefixBasedFacetFac
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
 
         final Method method = MethodFinderUtils.findMethod(
-                cls, MethodLiteralConstants.HIDDEN_PREFIX, returnType, NO_PARAMETERS_TYPES);
+                cls, MethodLiteralConstants.HIDDEN_PREFIX, returnType, NO_ARG);
         if (method == null) {
             return false;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/icon/method/IconFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/icon/method/IconFacetMethodFactory.java
index be1159e..abf5a04 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/icon/method/IconFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/icon/method/IconFacetMethodFactory.java
@@ -43,7 +43,7 @@ public class IconFacetMethodFactory extends MethodPrefixBasedFacetFactoryAbstrac
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
 
         final Method method = MethodFinderUtils.findMethod(
-                cls, MethodLiteralConstants.ICON_NAME_PREFIX, String.class, NO_PARAMETERS_TYPES);
+                cls, MethodLiteralConstants.ICON_NAME_PREFIX, String.class, NO_ARG);
         if (method == null) {
             return;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/layout/LayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/layout/LayoutFacetFactory.java
index e65cb43..d5fc851 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/layout/LayoutFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/layout/LayoutFacetFactory.java
@@ -42,7 +42,7 @@ public class LayoutFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
 
         final Method method = MethodFinderUtils.findMethod(
-                cls, MethodLiteralConstants.LAYOUT_METHOD_NAME, String.class, NO_PARAMETERS_TYPES);
+                cls, MethodLiteralConstants.LAYOUT_METHOD_NAME, String.class, NO_ARG);
 
         final LayoutFacet facet;
         if (method == null) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/methods/TitleFacetViaMethodsFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/methods/TitleFacetViaMethodsFactory.java
index 5051f55..da2bcfd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/methods/TitleFacetViaMethodsFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/methods/TitleFacetViaMethodsFactory.java
@@ -58,7 +58,7 @@ public class TitleFacetViaMethodsFactory extends MethodPrefixBasedFacetFactoryAb
         Method method = MethodFinderUtils.findMethod_returningText(
                 cls,
                 TITLE,
-                NO_PARAMETERS_TYPES);
+                NO_ARG);
         if (method != null) {
             processClassContext.removeMethod(method);
             final TranslationService translationService = getTranslationService();
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
index 98efe80..addc9bc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
@@ -48,7 +48,7 @@ public class ValidateObjectFacetMethodFactory extends MethodPrefixBasedFacetFact
         final Method method = MethodFinderUtils.findMethod_returningText(
                 cls,
                 VALIDATE_PREFIX,
-                NO_PARAMETERS_TYPES);
+                NO_ARG);
         if (method != null) {
             final TranslationService translationService = getTranslationService();
             // sadness: same as in TranslationFactory
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
index 0debc33..cbba636 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
@@ -99,7 +99,7 @@ public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPref
                 returnTypes,
                 cls,
                 name,
-                new Class[]{String.class});
+                STRING_ARG);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
index a0eefe0..a1ed4eb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
@@ -69,7 +69,7 @@ public class ActionParameterDisabledFacetViaMethodFactory extends MethodPrefixBa
             val disableMethod = MethodFinderUtils.findMethod_returningText(
                     cls,
                     hideName,
-                    NO_PARAMETERS_TYPES);
+                    NO_ARG);
 
             if (disableMethod != null) {
                 processParameterContext.removeMethod(disableMethod);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
index aecaf64..b6b0b91 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
@@ -67,7 +67,7 @@ public class ActionParameterHiddenFacetViaMethodFactory extends MethodPrefixBase
                     cls,
                     hideName,
                     boolean.class,
-                    NO_PARAMETERS_TYPES);
+                    NO_ARG);
 
             if (hideMethod != null) {
                 processParameterContext.removeMethod(hideMethod);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
index 41bb625..2d127ee 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
@@ -19,8 +19,6 @@
 
 package org.apache.isis.metamodel.facets.properties.autocomplete.method;
 
-import java.lang.reflect.Method;
-
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -37,7 +35,8 @@ public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFac
     private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.AUTO_COMPLETE_PREFIX);
 
     public PropertyAutoCompleteFacetMethodFactory() {
-        super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+        // to also support properties from mixins, need to not only include properties but also actions
+        super(FeatureType.PROPERTIES_AND_ACTIONS, OrphanValidation.VALIDATE, PREFIXES);
     }
 
     @Override
@@ -48,22 +47,25 @@ public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFac
 
     private void attachPropertyAutoCompleteFacetIfChoicesMethodIsFound(
             final ProcessMethodContext processMethodContext) {
-
-        final Method getter = processMethodContext.getMethod();
-        final String capitalizedName = StringExtensions.asJavaBaseName(getter.getName());
-
-        val getterName = getter.toString();
-        if(getterName.contains("ProperMemberSupport")) {
-            System.out.println("#autoComplete# " + getter);
+        
+        // optimization step, not strictly required
+        if(!super.isPropertyOrMixinMain(processMethodContext)) {
+            return;
         }
+
+        val getterOrMixinMain = processMethodContext.getMethod();
+        val capitalizedName = processMethodContext.isMixinMain() 
+                ? StringExtensions.asCapitalizedName(getterOrMixinMain.getName())
+                        : StringExtensions.asJavaBaseName(getterOrMixinMain.getName());
         
-        final Class<?> cls = processMethodContext.getCls();
-        final Class<?> returnType = getter.getReturnType();
-        final Method autoCompleteMethod = MethodFinderUtils
+        val cls = processMethodContext.getCls();
+        val returnType = getterOrMixinMain.getReturnType();
+        val autoCompleteMethod = MethodFinderUtils
                 .findMethod(
                         cls, 
                         MethodLiteralConstants.AUTO_COMPLETE_PREFIX + capitalizedName, 
-                        (Class<?>)null, new Class[]{String.class});
+                        NO_RETURN, 
+                        STRING_ARG);
         if (autoCompleteMethod == null) {
             return;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
index 368e8dc..789d518 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
@@ -19,8 +19,6 @@
 
 package org.apache.isis.metamodel.facets.properties.choices.method;
 
-import java.lang.reflect.Method;
-
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -30,12 +28,15 @@ import org.apache.isis.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 
+import lombok.val;
+
 public class PropertyChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.CHOICES_PREFIX);
 
     public PropertyChoicesFacetViaMethodFactory() {
-        super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+     // to also support properties from mixins, need to not only include properties but also actions
+        super(FeatureType.PROPERTIES_AND_ACTIONS, OrphanValidation.VALIDATE, PREFIXES);
     }
 
     @Override
@@ -46,12 +47,24 @@ public class PropertyChoicesFacetViaMethodFactory extends MethodPrefixBasedFacet
 
     private void attachPropertyChoicesFacetIfChoicesMethodIsFound(final ProcessMethodContext processMethodContext) {
 
-        final Method getMethod = processMethodContext.getMethod();
-        final String capitalizedName = StringExtensions.asJavaBaseName(getMethod.getName());
+        // optimization step, not strictly required
+        if(!super.isPropertyOrMixinMain(processMethodContext)) {
+            return;
+        }
+
+        val getterOrMixinMain = processMethodContext.getMethod();
+        val capitalizedName = processMethodContext.isMixinMain() 
+                ? StringExtensions.asCapitalizedName(getterOrMixinMain.getName())
+                        : StringExtensions.asJavaBaseName(getterOrMixinMain.getName());
 
-        final Class<?> cls = processMethodContext.getCls();
-        final Class<?> returnType = getMethod.getReturnType();
-        final Method choicesMethod = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.CHOICES_PREFIX + capitalizedName, (Class<?>)null, NO_PARAMETERS_TYPES);
+        val cls = processMethodContext.getCls();
+        val returnType = getterOrMixinMain.getReturnType();
+        val choicesMethod = MethodFinderUtils
+                .findMethod(
+                    cls, 
+                    MethodLiteralConstants.CHOICES_PREFIX + capitalizedName, 
+                    NO_RETURN, 
+                    NO_ARG);
         if (choicesMethod == null) {
             return;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
index d9298a0..052010b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
@@ -19,8 +19,6 @@
 
 package org.apache.isis.metamodel.facets.properties.defaults.method;
 
-import java.lang.reflect.Method;
-
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -30,12 +28,15 @@ import org.apache.isis.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 
+import lombok.val;
+
 public class PropertyDefaultFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final Can<String> PREFIXES = Can.ofSingleton(MethodLiteralConstants.DEFAULT_PREFIX);
 
     public PropertyDefaultFacetViaMethodFactory() {
-        super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+     // to also support properties from mixins, need to not only include properties but also actions
+        super(FeatureType.PROPERTIES_AND_ACTIONS, OrphanValidation.VALIDATE, PREFIXES);
     }
 
     @Override
@@ -46,12 +47,24 @@ public class PropertyDefaultFacetViaMethodFactory extends MethodPrefixBasedFacet
 
     private void attachPropertyDefaultFacetIfDefaultMethodIsFound(final ProcessMethodContext processMethodContext) {
 
-        final Method getMethod = processMethodContext.getMethod();
-        final String capitalizedName = StringExtensions.asJavaBaseName(getMethod.getName());
+        // optimization step, not strictly required
+        if(!super.isPropertyOrMixinMain(processMethodContext)) {
+            return;
+        }
+
+        val getterOrMixinMain = processMethodContext.getMethod();
+        val capitalizedName = processMethodContext.isMixinMain() 
+                ? StringExtensions.asCapitalizedName(getterOrMixinMain.getName())
+                        : StringExtensions.asJavaBaseName(getterOrMixinMain.getName());
 
-        final Class<?> cls = processMethodContext.getCls();
-        final Class<?> returnType = getMethod.getReturnType();
-        final Method method = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.DEFAULT_PREFIX + capitalizedName, returnType, NO_PARAMETERS_TYPES);
+        val cls = processMethodContext.getCls();
+        val returnType = getterOrMixinMain.getReturnType();
+        val method = MethodFinderUtils
+                .findMethod(
+                    cls,
+                    MethodLiteralConstants.DEFAULT_PREFIX + capitalizedName, 
+                    returnType, 
+                    NO_ARG);
         if (method == null) {
             return;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java
index 1d7ab0b..38e1982 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java
@@ -95,7 +95,7 @@ public class PropertySetAndClearFacetFactory extends MethodPrefixBasedFacetFacto
         final FacetHolder property = processMethodContext.getFacetHolder();
 
         final String capitalizedName = StringExtensions.asJavaBaseName(getMethod.getName());
-        final Method clearMethod = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.CLEAR_PREFIX + capitalizedName, void.class, NO_PARAMETERS_TYPES);
+        final Method clearMethod = MethodFinderUtils.findMethod(cls, MethodLiteralConstants.CLEAR_PREFIX + capitalizedName, void.class, NO_ARG);
 
         if (clearMethod == null) {
             return null;
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
index 04eaf1d..23d4314 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
@@ -19,11 +19,12 @@
 
 package org.apache.isis.metamodel.facets.properties;
 
-import lombok.val;
-
 import java.lang.reflect.Method;
 
+import org.jmock.auto.Mock;
+
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.metamodel.facets.FacetFactory.ProcessMethodContext;
 import org.apache.isis.metamodel.facets.members.disabled.DisabledFacet;
@@ -63,7 +64,8 @@ import org.apache.isis.metamodel.facets.properties.validating.method.PropertyVal
 import org.apache.isis.metamodel.facets.properties.validating.method.PropertyValidateFacetViaMethodFactory;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2;
-import org.jmock.auto.Mock;
+
+import lombok.val;
 
 public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
@@ -362,7 +364,8 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
         final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
         final Method propertyChoicesMethod = findMethod(Customer.class, "choicesFirstName");
 
-        facetFactory.process(new ProcessMethodContext(Customer.class, null, propertyAccessorMethod, methodRemover, facetedMethod));
+        facetFactory.process(new ProcessMethodContext(
+                Customer.class, FeatureType.PROPERTY, propertyAccessorMethod, methodRemover, facetedMethod));
 
         final Facet facet = facetedMethod.getFacet(PropertyChoicesFacet.class);
         assertNotNull(facet);
@@ -403,7 +406,8 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
         final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
         final Method propertyAutoCompleteMethod = findMethod(Customer.class, "autoCompleteFirstName", new Class[]{String.class});
 
-        facetFactory.process(new ProcessMethodContext(Customer.class, null, propertyAccessorMethod, methodRemover, facetedMethod));
+        facetFactory.process(new ProcessMethodContext(
+                Customer.class, FeatureType.PROPERTY, propertyAccessorMethod, methodRemover, facetedMethod));
 
         final Facet facet = facetedMethod.getFacet(PropertyAutoCompleteFacet.class);
         assertNotNull(facet);
@@ -432,7 +436,8 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
         final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
         final Method propertyDefaultMethod = findMethod(Customer.class, "defaultFirstName");
 
-        facetFactory.process(new ProcessMethodContext(Customer.class, null, propertyAccessorMethod, methodRemover, facetedMethod));
+        facetFactory.process(new ProcessMethodContext(
+                Customer.class, FeatureType.PROPERTY, propertyAccessorMethod, methodRemover, facetedMethod));
 
         final Facet facet = facetedMethod.getFacet(PropertyDefaultFacet.class);
         assertNotNull(facet);
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
index de6ce62..12dbed3 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
@@ -91,7 +91,7 @@ class DomainModelTest_usingGoodDomain {
     
     @Test
     void goodDomain_shouldPassValidation() {
-        debug();
+        //debug();
         assertFalse(specificationLoader.snapshotSpecifications().isEmpty());
         
         val validateDomainModel = new ValidateDomainModel(specificationLoader);