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:40 UTC

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

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