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/09/21 17:04:54 UTC

[isis] branch v2 updated: ISIS-2158: add specialized MethodFinderUtils.findMethod_returningText()

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

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


The following commit(s) were added to refs/heads/v2 by this push:
     new 9d3149c  ISIS-2158: add specialized MethodFinderUtils.findMethod_returningText()
9d3149c is described below

commit 9d3149cd52bb81b05827b55c2383226635535318
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat Sep 21 19:04:42 2019 +0200

    ISIS-2158: add specialized MethodFinderUtils.findMethod_returningText()
    
    - and use it with many of the FacetFactories
---
 .../metamodel/facets/FacetFactoryAbstract.java     |  8 ++++--
 .../isis/metamodel/facets/MethodFinderUtils.java   | 30 +++++++++++++++-------
 ...xConstants.java => MethodLiteralConstants.java} | 16 ++++++++++--
 .../MethodPrefixBasedFacetFactoryAbstract.java     | 30 +++++++++++-----------
 .../ActionDefaultsFacetViaMethodFactory.java       |  6 ++---
 .../ActionValidationFacetViaMethodFactory.java     | 15 +++++------
 .../CollectionAccessorFacetViaAccessorFactory.java |  8 +++---
 .../clear/CollectionClearFacetFactory.java         |  6 ++---
 ...tionAddToRemoveFromAndValidateFacetFactory.java | 17 +++++-------
 .../DisableForSessionFacetViaMethodFactory.java    |  6 ++---
 .../DisableForContextFacetViaMethodFactory.java    | 15 +++++------
 .../HideForSessionFacetViaMethodFactory.java       |  6 ++---
 .../HideForContextFacetViaMethodFactory.java       |  8 +++---
 .../callbacks/CreatedCallbackFacetFactory.java     |  6 ++---
 .../object/callbacks/LoadCallbackFacetFactory.java | 10 +++++---
 .../callbacks/PersistCallbackFacetFactory.java     |  8 +++---
 .../PersistCallbackViaSaveMethodFacetFactory.java  |  8 +++---
 .../callbacks/RemoveCallbackFacetFactory.java      | 10 +++++---
 .../RemoveCallbackViaDeleteMethodFacetFactory.java | 11 +++++---
 .../callbacks/UpdateCallbackFacetFactory.java      |  8 +++---
 .../choices/enums/EnumValueSemanticsProvider.java  |  6 ++---
 .../DisabledObjectFacetViaMethodFactory.java       | 29 +++++++++------------
 .../title/methods/TitleFacetViaMethodsFactory.java | 12 ++++-----
 .../method/ValidateObjectFacetMethodFactory.java   |  8 +++---
 ...ParameterAutoCompleteFacetViaMethodFactory.java | 11 +++++---
 .../method/ActionChoicesFacetViaMethodFactory.java |  6 ++---
 ...ctionParameterChoicesFacetViaMethodFactory.java |  4 +--
 ...tionParameterDefaultsFacetViaMethodFactory.java |  4 +--
 ...tionParameterDisabledFacetViaMethodFactory.java | 14 +++++-----
 ...ActionParameterHiddenFacetViaMethodFactory.java | 14 +++++-----
 ...onParameterValidationFacetViaMethodFactory.java | 14 +++++-----
 .../PropertyAccessorFacetViaAccessorFactory.java   | 12 ++++-----
 .../PropertyAutoCompleteFacetMethodFactory.java    |  6 ++---
 .../PropertyChoicesFacetViaMethodFactory.java      |  6 ++---
 .../PropertyDefaultFacetViaMethodFactory.java      |  6 ++---
 .../update/PropertyModifyFacetFactory.java         |  6 ++---
 .../update/PropertySetAndClearFacetFactory.java    |  8 +++---
 .../PropertyValidateFacetViaMethodFactory.java     | 11 ++++----
 .../wrapper/internal/util/MethodPrefixFinder.java  | 26 +++++++++----------
 .../DomainModelTest_usingGoodDomain.java           |  7 +++--
 40 files changed, 231 insertions(+), 211 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactoryAbstract.java
index 89d1075..1f21efd 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
@@ -26,7 +26,7 @@ import org.apache.isis.metamodel.MetaModelContext;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 
 public abstract class FacetFactoryAbstract implements FacetFactory, MetaModelContext.Delegating {
-
+    
     private final List<FeatureType> featureTypes;
 
     public FacetFactoryAbstract(final List<FeatureType> featureTypes) {
@@ -50,7 +50,11 @@ public abstract class FacetFactoryAbstract implements FacetFactory, MetaModelCon
     public void processParams(final ProcessParameterContext processParameterContext) {
     }
 
-    // -- dependencies
+    // -- METHOD UTILITITES
+    
+    protected static final Class<?>[] NO_PARAMETERS_TYPES = new Class<?>[0];
+    
+    // -- DEPENDENCIES
 
     @Override
     public MetaModelContext getMetaModelContext() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodFinderUtils.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodFinderUtils.java
index 66e761b..6cc31d7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodFinderUtils.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodFinderUtils.java
@@ -24,8 +24,7 @@ import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
-
+import java.util.Optional;import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.commons.internal.reflection._MethodCache;
 import org.apache.isis.metamodel.facetapi.MethodRemover;
 import org.apache.isis.metamodel.methodutils.MethodScope;
@@ -45,8 +44,6 @@ public final class MethodFinderUtils {
         return method;
     }
     
-    //private static final _MethodCache methodCache = new _MethodCache(); //TODO could be share on the context
-
     /**
      * Returns a specific public methods that: have the specified prefix; have
      * the specified return type (or some subtype), and has the
@@ -109,15 +106,15 @@ public final class MethodFinderUtils {
         return method;
     }
     
-
-    public static Method findMethod(
+    public static Method findMethod_returningAnyOf(
+            final Class<?>[] returnTypes,
             final Class<?> type,
             final MethodScope methodScope,
             final String name,
-            final Class<?>[] returnTypes,
             final Class<?>[] paramTypes) {
-        for (Class<?> returnType : returnTypes) {
-            final Method method = findMethod(type, methodScope, name, returnType, paramTypes);
+        
+        for (val returnType : returnTypes) {
+            val method = findMethod(type, methodScope, name, returnType, paramTypes);
             if(method != null) {
                 return method;
             }
@@ -238,4 +235,19 @@ public final class MethodFinderUtils {
         return nullableMethod;
     }
 
+    // -- SHORTCUTS
+    
+    public static final Class<?>[] TEXT_TYPES = new Class<?>[]{
+        String.class, 
+        TranslatableString.class};
+
+    
+    public static Method findMethod_returningText(
+            final Class<?> type,
+            final MethodScope methodScope,
+            final String name,
+            final Class<?>[] paramTypes) {
+        return findMethod_returningAnyOf(TEXT_TYPES, type, methodScope, name, paramTypes);
+    }
+
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixConstants.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodLiteralConstants.java
similarity index 86%
rename from core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixConstants.java
rename to core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodLiteralConstants.java
index 71d711f..4434e7a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodPrefixConstants.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodLiteralConstants.java
@@ -18,7 +18,13 @@
  */
 package org.apache.isis.metamodel.facets;
 
-public class MethodPrefixConstants {
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class MethodLiteralConstants {
+    
+    // -- PREFIXES
 
     public static final String GET_PREFIX = "get";
     public static final String IS_PREFIX = "is";
@@ -35,7 +41,6 @@ public class MethodPrefixConstants {
     public static final String HIDE_PREFIX = "hide";
 
     public static final String DISABLE_PREFIX = "disable";
-
     public static final String VALIDATE_PREFIX = "validate";
     
     public static final String VALIDATE_ADD_TO_PREFIX = "validateAddTo";
@@ -54,5 +59,12 @@ public class MethodPrefixConstants {
     public static final String REMOVING_PREFIX = "removing";
     public static final String UPDATED_PREFIX = "updated";
     public static final String UPDATING_PREFIX = "updating";
+    
+    // -- LITERALS
+    
+    public static final String DISABLED = "disabled"; // for batch disabling all members
+    public static final String TITLE = "title";
+    public static final String TO_STRING = "toString";
+    
 
 }
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 030bc94..29790b7 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
@@ -23,13 +23,11 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
-import java.util.stream.Stream;
 
 import org.apache.isis.config.internal._Config;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.spec.feature.Contributed;
-import org.apache.isis.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.metamodel.specloader.validator.MetaModelValidatorComposite;
 import org.apache.isis.metamodel.specloader.validator.MetaModelValidatorVisiting;
 import org.apache.isis.metamodel.specloader.validator.ValidationFailures;
@@ -47,8 +45,6 @@ implements MethodPrefixBasedFacetFactory {
 
     private final List<String> prefixes;
 
-    protected static final Class<?>[] NO_PARAMETERS_TYPES = new Class<?>[0];
-
     private final OrphanValidation orphanValidation;
 
     protected enum OrphanValidation {
@@ -61,7 +57,7 @@ implements MethodPrefixBasedFacetFactory {
         this.orphanValidation = orphanValidation;
         this.prefixes = Collections.unmodifiableList(Arrays.asList(prefixes));
     }
-
+    
     @Override
     public List<String> getPrefixes() {
         return prefixes;
@@ -77,24 +73,27 @@ implements MethodPrefixBasedFacetFactory {
             @Override
             public boolean visit(final ObjectSpecification objectSpec, final ValidationFailures validationFailures) {
 
-                boolean noParamsOnly = _Config.getConfiguration().getBoolean(
-                        MethodPrefixBasedFacetFactoryAbstract.ISIS_REFLECTOR_VALIDATOR_NO_PARAMS_ONLY_KEY,
-                        MethodPrefixBasedFacetFactoryAbstract.ISIS_REFLECTOR_VALIDATOR_NO_PARAMS_ONLY_DEFAULT);
+                final boolean noParamsOnly = _Config.getConfiguration().getBoolean(
+                        ISIS_REFLECTOR_VALIDATOR_NO_PARAMS_ONLY_KEY,
+                        ISIS_REFLECTOR_VALIDATOR_NO_PARAMS_ONLY_DEFAULT);
 
-                final Stream<ObjectAction> objectActions = objectSpec.streamObjectActions(Contributed.EXCLUDED);
-                objectActions.forEach(objectAction->{
+                val objectActionStream = objectSpec.streamObjectActions(Contributed.EXCLUDED);
+                
+                objectActionStream.forEach(objectAction->{
                     for (final String prefix : prefixes) {
                         String actionId = objectAction.getId();
 
                         if (actionId.startsWith(prefix) && prefix.length() < actionId.length()) {
 
                             val explanation =
-                                    objectAction.getParameterCount() > 0 && noParamsOnly &&
-                                    (Objects.equals(prefix, MethodPrefixConstants.HIDE_PREFIX) || Objects.equals(prefix, MethodPrefixConstants.DISABLE_PREFIX))
+                                    objectAction.getParameterCount() > 0 && 
+                                    noParamsOnly &&
+                                    (Objects.equals(prefix, MethodLiteralConstants.HIDE_PREFIX) || 
+                                            Objects.equals(prefix, MethodLiteralConstants.DISABLE_PREFIX))
                                     ? " (note that such methods must have no parameters, '"
-                                    + ISIS_REFLECTOR_VALIDATOR_NO_PARAMS_ONLY_KEY
-                                    + "' config property)"
-                                    : "";
+                                        + ISIS_REFLECTOR_VALIDATOR_NO_PARAMS_ONLY_KEY
+                                        + "' config property)"
+                                            : "";
 
                             val message = "%s#%s: has prefix %s, is probably intended as a supporting method for a property, collection or action%s.  If the method is intended to be an action, then rename and use @ActionLayout(named=\"...\") or ignore completely using @Programmatic";
                             validationFailures.add(
@@ -112,4 +111,5 @@ implements MethodPrefixBasedFacetFactory {
             }
         }));
     }
+
 }
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 111a24c..058039d 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
@@ -30,7 +30,7 @@ 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.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
 /**
@@ -38,7 +38,7 @@ import org.apache.isis.metamodel.methodutils.MethodScope;
  */
 public class ActionDefaultsFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.DEFAULT_PREFIX };
+    private static final String[] PREFIXES = { MethodLiteralConstants.DEFAULT_PREFIX };
 
     /**
      * Note that the {@link Facet}s registered are the generic ones from
@@ -79,7 +79,7 @@ public class ActionDefaultsFacetViaMethodFactory extends MethodPrefixBasedFacetF
 
         final Method actionMethod = processMethodContext.getMethod();
         final String capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
-        final String name = MethodPrefixConstants.DEFAULT_PREFIX + capitalizedName;
+        final String name = MethodLiteralConstants.DEFAULT_PREFIX + capitalizedName;
 
         final Class<?> cls = processMethodContext.getCls();
         return MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, name, returnType, _Constants.emptyClasses);
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 aa51f14..8f3509a 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
@@ -21,7 +21,6 @@ package org.apache.isis.metamodel.facets.actions.validate.method;
 
 import java.lang.reflect.Method;
 
-import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.Facet;
@@ -29,8 +28,8 @@ import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facetapi.IdentifiedHolder;
 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.MethodPrefixConstants;
 import org.apache.isis.metamodel.facets.actions.validate.ActionValidationFacet;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
@@ -39,7 +38,7 @@ import org.apache.isis.metamodel.methodutils.MethodScope;
  */
 public class ActionValidationFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract  {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.VALIDATE_PREFIX };
+    private static final String[] PREFIXES = { MethodLiteralConstants.VALIDATE_PREFIX };
 
     /**
      * Note that the {@link Facet}s registered are the generic ones from
@@ -68,10 +67,9 @@ public class ActionValidationFacetViaMethodFactory extends MethodPrefixBasedFace
         final Class<?>[] paramTypes = actionMethod.getParameterTypes();
         final MethodScope onClass = MethodScope.scopeFor(actionMethod);
 
-        final Method validateMethod = MethodFinderUtils.findMethod(
+        final Method validateMethod = MethodFinderUtils.findMethod_returningText(
                 cls, onClass,
-                MethodPrefixConstants.VALIDATE_PREFIX + capitalizedName,
-                new Class<?>[]{String.class, TranslatableString.class},
+                MethodLiteralConstants.VALIDATE_PREFIX + capitalizedName,
                 paramTypes);
         if (validateMethod == null) {
             return;
@@ -97,11 +95,10 @@ public class ActionValidationFacetViaMethodFactory extends MethodPrefixBasedFace
         final Class<?>[] paramTypes = actionMethod.getParameterTypes();
         final MethodScope onClass = MethodScope.scopeFor(actionMethod);
 
-        final String validateName = MethodPrefixConstants.VALIDATE_PREFIX + param + capitalizedName;
-        final Method validateMethod = MethodFinderUtils.findMethod(
+        final String validateName = MethodLiteralConstants.VALIDATE_PREFIX + param + capitalizedName;
+        final Method validateMethod = MethodFinderUtils.findMethod_returningText(
                 cls, onClass,
                 validateName,
-                new Class<?>[]{String.class, TranslatableString.class},
                 new Class<?>[]{paramTypes[param]});
         if (validateMethod == null) {
             return;
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 ef6581c..d328d1a 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
@@ -27,7 +27,7 @@ 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.facetapi.MethodRemover;
-import org.apache.isis.metamodel.facets.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.PropertyOrCollectionIdentifyingFacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.collparam.semantics.CollectionSemanticsFacetDefault;
 import org.apache.isis.metamodel.methodutils.MethodScope;
@@ -36,7 +36,7 @@ import org.apache.isis.metamodel.spec.ObjectSpecification;
 public class CollectionAccessorFacetViaAccessorFactory
 extends PropertyOrCollectionIdentifyingFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.GET_PREFIX };
+    private static final String[] PREFIXES = { MethodLiteralConstants.GET_PREFIX };
 
     public CollectionAccessorFacetViaAccessorFactory() {
         super(FeatureType.COLLECTIONS_ONLY, PREFIXES);
@@ -69,7 +69,7 @@ extends PropertyOrCollectionIdentifyingFacetFactoryAbstract {
 
     @Override
     public boolean isPropertyOrCollectionAccessorCandidate(final Method method) {
-        return method.getName().startsWith(MethodPrefixConstants.GET_PREFIX);
+        return method.getName().startsWith(MethodLiteralConstants.GET_PREFIX);
     }
 
     @Override
@@ -96,7 +96,7 @@ extends PropertyOrCollectionIdentifyingFacetFactoryAbstract {
             final List<Method> methodListToAppendTo) {
 
         final List<Method> list =
-                methodRemover.removeMethods(MethodScope.OBJECT, MethodPrefixConstants.GET_PREFIX,
+                methodRemover.removeMethods(MethodScope.OBJECT, MethodLiteralConstants.GET_PREFIX,
                         Collection.class, false, 0);
         methodListToAppendTo.addAll(list);
     }
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 5cfb081..7c3f71f 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
@@ -27,13 +27,13 @@ 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.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.collections.modify.CollectionClearFacet;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
 public class CollectionClearFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.CLEAR_PREFIX };
+    private static final String[] PREFIXES = { MethodLiteralConstants.CLEAR_PREFIX };
 
 
     public CollectionClearFacetFactory() {
@@ -52,7 +52,7 @@ public class CollectionClearFacetFactory extends MethodPrefixBasedFacetFactoryAb
         final String capitalizedName = StringExtensions.asJavaBaseName(getMethod.getName());
 
         final Class<?> cls = processMethodContext.getCls();
-        final Method method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.CLEAR_PREFIX + capitalizedName, void.class, null);
+        final Method method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.CLEAR_PREFIX + capitalizedName, void.class, null);
         processMethodContext.removeMethod(method);
 
         final FacetHolder collection = processMethodContext.getFacetHolder();
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 a813d3e..1659302 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
@@ -21,7 +21,6 @@ package org.apache.isis.metamodel.facets.collections.modify;
 
 import java.lang.reflect.Method;
 
-import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.exceptions.MetaModelException;
@@ -31,8 +30,8 @@ import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facetapi.IdentifiedHolder;
 import org.apache.isis.metamodel.facets.FacetFactory;
 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.MethodPrefixConstants;
 import org.apache.isis.metamodel.facets.collections.validate.CollectionValidateAddToFacetViaMethod;
 import org.apache.isis.metamodel.facets.collections.validate.CollectionValidateRemoveFromFacetViaMethod;
 import org.apache.isis.metamodel.methodutils.MethodScope;
@@ -66,11 +65,11 @@ public class CollectionAddToRemoveFromAndValidateFacetFactory extends MethodPref
         final Class<?> cls = processMethodContext.getCls();
 
         // add
-        final Method addToMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.ADD_TO_PREFIX + capitalizedName, void.class);
+        final Method addToMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.ADD_TO_PREFIX + capitalizedName, void.class);
         processMethodContext.removeMethod(addToMethod);
 
         // remove
-        final Method removeFromMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.REMOVE_FROM_PREFIX + capitalizedName, void.class);
+        final Method removeFromMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.REMOVE_FROM_PREFIX + capitalizedName, void.class);
         processMethodContext.removeMethod(removeFromMethod);
 
         // add facets
@@ -134,10 +133,9 @@ public class CollectionAddToRemoveFromAndValidateFacetFactory extends MethodPref
 
         final Class<?> cls = processMethodContext.getCls();
         final Class<?>[] paramTypes = MethodFinderUtils.paramTypesOrNull(collectionType);
-        Method validateAddToMethod = MethodFinderUtils.findMethod(
+        Method validateAddToMethod = MethodFinderUtils.findMethod_returningText(
                 cls, MethodScope.OBJECT,
-                MethodPrefixConstants.VALIDATE_ADD_TO_PREFIX + capitalizedName,
-                new Class<?>[]{String.class, TranslatableString.class},
+                MethodLiteralConstants.VALIDATE_ADD_TO_PREFIX + capitalizedName,
                 paramTypes);
         if (validateAddToMethod == null) {
             return;
@@ -160,10 +158,9 @@ public class CollectionAddToRemoveFromAndValidateFacetFactory extends MethodPref
 
         final Class<?> cls = processMethodContext.getCls();
         final Class<?>[] paramTypes = MethodFinderUtils.paramTypesOrNull(collectionType);
-        Method validateRemoveFromMethod = MethodFinderUtils.findMethod(
+        Method validateRemoveFromMethod = MethodFinderUtils.findMethod_returningText(
                 cls, MethodScope.OBJECT,
-                MethodPrefixConstants.VALIDATE_REMOVE_FROM_PREFIX + capitalizedName,
-                new Class<?>[]{String.class, TranslatableString.class},
+                MethodLiteralConstants.VALIDATE_REMOVE_FROM_PREFIX + capitalizedName,
                 paramTypes);
         if (validateRemoveFromMethod == null) {
             return;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/disabled/forsession/DisableForSessionFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/disabled/forsession/DisableForSessionFacetViaMethodFactory.java
index a880511..b9f4556 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/disabled/forsession/DisableForSessionFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/disabled/forsession/DisableForSessionFacetViaMethodFactory.java
@@ -29,13 +29,13 @@ 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.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 import org.apache.isis.security.authentication.AuthenticationSessionProvider;
 
 public class DisableForSessionFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.DISABLE_PREFIX };
+    private static final String[] PREFIXES = { MethodLiteralConstants.DISABLE_PREFIX };
 
 
     /**
@@ -63,7 +63,7 @@ public class DisableForSessionFacetViaMethodFactory extends MethodPrefixBasedFac
         final String capitalizedName = StringExtensions.asJavaBaseNameStripAccessorPrefixIfRequired(method.getName());
 
         final Class<?> cls = processMethodContext.getCls();
-        final Method disableForSessionMethod = MethodFinderUtils.findMethod(cls, MethodScope.CLASS, MethodPrefixConstants.DISABLE_PREFIX + capitalizedName, String.class, new Class[] { UserMemento.class });
+        final Method disableForSessionMethod = MethodFinderUtils.findMethod(cls, MethodScope.CLASS, MethodLiteralConstants.DISABLE_PREFIX + capitalizedName, String.class, new Class[] { UserMemento.class });
 
         if (disableForSessionMethod == null) {
             return;
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 ca1e7de..0693dcd 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
@@ -21,7 +21,6 @@ package org.apache.isis.metamodel.facets.members.disabled.method;
 
 import java.lang.reflect.Method;
 
-import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.Facet;
@@ -30,14 +29,14 @@ import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facetapi.IdentifiedHolder;
 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.MethodPrefixConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
 public class DisableForContextFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract  {
 
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.DISABLE_PREFIX };
+    private static final String[] PREFIXES = { MethodLiteralConstants.DISABLE_PREFIX };
 
     /**
      * Note that the {@link Facet}s registered are the generic ones from
@@ -71,18 +70,16 @@ public class DisableForContextFacetViaMethodFactory extends MethodPrefixBasedFac
         boolean searchExactMatch = !noParamsOnly;
         if(searchExactMatch) {
             // search for exact match
-            disableMethod = MethodFinderUtils.findMethod(
+            disableMethod = MethodFinderUtils.findMethod_returningText(
                     cls, MethodScope.OBJECT,
-                    MethodPrefixConstants.DISABLE_PREFIX + capitalizedName,
-                    new Class<?>[]{String.class, TranslatableString.class},
+                    MethodLiteralConstants.DISABLE_PREFIX + capitalizedName,
                     method.getParameterTypes());
         }
         if (disableMethod == null) {
             // search for no-arg version
-            disableMethod = MethodFinderUtils.findMethod(
+            disableMethod = MethodFinderUtils.findMethod_returningText(
                     cls, MethodScope.OBJECT,
-                    MethodPrefixConstants.DISABLE_PREFIX + capitalizedName,
-                    new Class<?>[]{String.class, TranslatableString.class},
+                    MethodLiteralConstants.DISABLE_PREFIX + capitalizedName,
                     new Class<?>[0]);
         }
         if (disableMethod == null) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/forsession/HideForSessionFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/forsession/HideForSessionFacetViaMethodFactory.java
index 5f4f48a..2900979 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/forsession/HideForSessionFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/forsession/HideForSessionFacetViaMethodFactory.java
@@ -29,13 +29,13 @@ 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.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 import org.apache.isis.security.authentication.AuthenticationSessionProvider;
 
 public class HideForSessionFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.HIDE_PREFIX };
+    private static final String[] PREFIXES = { MethodLiteralConstants.HIDE_PREFIX };
 
     /**
      * Note that the {@link Facet}s registered are the generic ones from
@@ -64,7 +64,7 @@ public class HideForSessionFacetViaMethodFactory extends MethodPrefixBasedFacetF
         final String capitalizedName = StringExtensions.asJavaBaseNameStripAccessorPrefixIfRequired(method.getName());
 
         final Class<?> cls = processMethodContext.getCls();
-        final Method hideForSessionMethod = MethodFinderUtils.findMethod(cls, MethodScope.CLASS, MethodPrefixConstants.HIDE_PREFIX + capitalizedName, boolean.class, new Class[] { UserMemento.class });
+        final Method hideForSessionMethod = MethodFinderUtils.findMethod(cls, MethodScope.CLASS, MethodLiteralConstants.HIDE_PREFIX + capitalizedName, boolean.class, new Class[] { UserMemento.class });
 
         if (hideForSessionMethod == null) {
             return;
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 e2e5faa..0e64628 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
@@ -28,13 +28,13 @@ 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.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
 public class HideForContextFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.HIDE_PREFIX };
+    private static final String[] PREFIXES = { MethodLiteralConstants.HIDE_PREFIX };
 
     /**
      * Note that the {@link Facet}s registered are the generic ones from
@@ -59,7 +59,7 @@ public class HideForContextFacetViaMethodFactory extends MethodPrefixBasedFacetF
         final String capitalizedName = StringExtensions.asJavaBaseNameStripAccessorPrefixIfRequired(getMethod.getName());
 
         final Class<?> cls = processMethodContext.getCls();
-        Method hideMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.HIDE_PREFIX + capitalizedName, boolean.class, new Class[] {});
+        Method hideMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.HIDE_PREFIX + capitalizedName, boolean.class, new Class[] {});
         if (hideMethod == null) {
 
             boolean noParamsOnly = getConfiguration().getBoolean(
@@ -67,7 +67,7 @@ public class HideForContextFacetViaMethodFactory extends MethodPrefixBasedFacetF
                     ISIS_REFLECTOR_VALIDATOR_NO_PARAMS_ONLY_DEFAULT);
             boolean searchExactMatch = !noParamsOnly;
             if(searchExactMatch) {
-                hideMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.HIDE_PREFIX + capitalizedName, boolean.class, getMethod.getParameterTypes());
+                hideMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.HIDE_PREFIX + capitalizedName, boolean.class, getMethod.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 0b81cb8..66cc6ff 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
@@ -29,12 +29,12 @@ 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.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
 public class CreatedCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.CREATED_PREFIX, };
+    private static final String[] PREFIXES = { MethodLiteralConstants.CREATED_PREFIX, };
 
     public CreatedCallbackFacetFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -49,7 +49,7 @@ public class CreatedCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAb
         final List<Method> methods = new ArrayList<Method>();
 
         Method method = null;
-        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.CREATED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.CREATED_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
             methods.add(method);
             facets.add(new CreatedCallbackFacetViaMethod(method, holder));
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 581c3cc..d5f503f 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
@@ -29,12 +29,14 @@ 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.MethodPrefixConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.LOADED_PREFIX;
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.LOADING_PREFIX;
+
 public class LoadCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.LOADED_PREFIX, MethodPrefixConstants.LOADING_PREFIX, };
+    private static final String[] PREFIXES = { LOADED_PREFIX, LOADING_PREFIX, };
 
     public LoadCallbackFacetFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -49,13 +51,13 @@ public class LoadCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstr
         final List<Method> methods = new ArrayList<Method>();
 
         Method method = null;
-        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.LOADING_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, LOADING_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
             methods.add(method);
             facets.add(new LoadingCallbackFacetViaMethod(method, facetHolder));
         }
 
-        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.LOADED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, LOADED_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
             methods.add(method);
             facets.add(new LoadedCallbackFacetViaMethod(method, facetHolder));
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackFacetFactory.java
index 25147fd..93bc192 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
@@ -29,12 +29,12 @@ 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.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
 public class PersistCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.PERSISTED_PREFIX, MethodPrefixConstants.PERSISTING_PREFIX, };
+    private static final String[] PREFIXES = { MethodLiteralConstants.PERSISTED_PREFIX, MethodLiteralConstants.PERSISTING_PREFIX, };
 
     public PersistCallbackFacetFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -49,7 +49,7 @@ public class PersistCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAb
         final List<Method> methods = new ArrayList<Method>();
 
         Method method = null;
-        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.PERSISTING_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.PERSISTING_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
             methods.add(method);
             final PersistingCallbackFacet facet = facetHolder.getFacet(PersistingCallbackFacet.class);
@@ -60,7 +60,7 @@ public class PersistCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAb
             }
         }
 
-        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.PERSISTED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.PERSISTED_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
             methods.add(method);
             final PersistedCallbackFacet facet = facetHolder.getFacet(PersistedCallbackFacet.class);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackViaSaveMethodFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackViaSaveMethodFacetFactory.java
index ef1630d..8acda42 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
@@ -29,12 +29,12 @@ 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.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
 public class PersistCallbackViaSaveMethodFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.SAVED_PREFIX, MethodPrefixConstants.SAVING_PREFIX, };
+    private static final String[] PREFIXES = { MethodLiteralConstants.SAVED_PREFIX, MethodLiteralConstants.SAVING_PREFIX, };
 
     public PersistCallbackViaSaveMethodFacetFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -49,7 +49,7 @@ public class PersistCallbackViaSaveMethodFacetFactory extends MethodPrefixBasedF
         final List<Method> methods = new ArrayList<Method>();
 
         Method method = null;
-        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.SAVING_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.SAVING_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
             methods.add(method);
             final PersistingCallbackFacet facet = facetHolder.getFacet(PersistingCallbackFacet.class);
@@ -60,7 +60,7 @@ public class PersistCallbackViaSaveMethodFacetFactory extends MethodPrefixBasedF
             }
         }
 
-        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.SAVED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.SAVED_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
             methods.add(method);
             final PersistedCallbackFacet facet = facetHolder.getFacet(PersistedCallbackFacet.class);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackFacetFactory.java
index 66c26a6..5a1a52f 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
@@ -29,12 +29,14 @@ 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.MethodPrefixConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.REMOVED_PREFIX;
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.REMOVING_PREFIX;
+
 public class RemoveCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.REMOVED_PREFIX, MethodPrefixConstants.REMOVING_PREFIX, };
+    private static final String[] PREFIXES = { REMOVED_PREFIX, REMOVING_PREFIX, };
 
     public RemoveCallbackFacetFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -49,7 +51,7 @@ public class RemoveCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbs
         final List<Method> methods = new ArrayList<Method>();
 
         Method method = MethodFinderUtils
-                .findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.REMOVING_PREFIX, void.class,
+                .findMethod(cls, MethodScope.OBJECT, REMOVING_PREFIX, void.class,
                         NO_PARAMETERS_TYPES);
         if (method != null) {
             methods.add(method);
@@ -61,7 +63,7 @@ public class RemoveCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbs
             }
         }
 
-        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.REMOVED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, REMOVED_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
             methods.add(method);
             final RemovedCallbackFacet facet = facetHolder.getFacet(RemovedCallbackFacet.class);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackViaDeleteMethodFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackViaDeleteMethodFacetFactory.java
index 06536d2..b1a8dcf 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
@@ -29,12 +29,15 @@ 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.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.DELETED_PREFIX;
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.DELETING_PREFIX;
+
 public class RemoveCallbackViaDeleteMethodFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.DELETED_PREFIX, MethodPrefixConstants.DELETING_PREFIX, };
+    private static final String[] PREFIXES = { DELETED_PREFIX, DELETING_PREFIX, };
 
     public RemoveCallbackViaDeleteMethodFacetFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -49,7 +52,7 @@ public class RemoveCallbackViaDeleteMethodFacetFactory extends MethodPrefixBased
         final List<Method> methods = new ArrayList<Method>();
 
         Method method = null;
-        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.DELETING_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, DELETING_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
             methods.add(method);
             final RemovingCallbackFacet facet = holder.getFacet(RemovingCallbackFacet.class);
@@ -60,7 +63,7 @@ public class RemoveCallbackViaDeleteMethodFacetFactory extends MethodPrefixBased
             }
         }
 
-        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.DELETED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, DELETED_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
             methods.add(method);
             final RemovedCallbackFacet facet = holder.getFacet(RemovedCallbackFacet.class);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/UpdateCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/UpdateCallbackFacetFactory.java
index efcdb67..4222fc3 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
@@ -29,12 +29,12 @@ 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.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
 public class UpdateCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.UPDATED_PREFIX, MethodPrefixConstants.UPDATING_PREFIX, };
+    private static final String[] PREFIXES = { MethodLiteralConstants.UPDATED_PREFIX, MethodLiteralConstants.UPDATING_PREFIX, };
 
     public UpdateCallbackFacetFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -49,13 +49,13 @@ public class UpdateCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbs
         final List<Method> methods = new ArrayList<Method>();
 
         Method method = null;
-        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.UPDATING_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.UPDATING_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
             methods.add(method);
             facets.add(new UpdatingCallbackFacetViaMethod(method, facetHolder));
         }
 
-        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.UPDATED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.UPDATED_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
             methods.add(method);
             facets.add(new UpdatedCallbackFacetViaMethod(method, facetHolder));
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/choices/enums/EnumValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/choices/enums/EnumValueSemanticsProvider.java
index 1443f4e..bb766ea 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/choices/enums/EnumValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/choices/enums/EnumValueSemanticsProvider.java
@@ -76,10 +76,10 @@ public class EnumValueSemanticsProvider<T extends Enum<T>> extends ValueSemantic
                 EqualByContent.HONOURED,
                 defaultFor(adaptedClass));
 
-        titleMethod = MethodFinderUtils.findMethod(
-                getAdaptedClass(), MethodScope.OBJECT,
+        titleMethod = MethodFinderUtils.findMethod_returningText(
+                getAdaptedClass(), 
+                MethodScope.OBJECT,
                 TITLE,
-                new Class<?>[]{String.class, TranslatableString.class},
                 null);
 
     }
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 efcb5ad..5552ddc 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
@@ -19,12 +19,7 @@
 
 package org.apache.isis.metamodel.facets.object.disabled.method;
 
-import java.lang.reflect.Method;
-
 import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.services.i18n.TranslatableString;
-import org.apache.isis.applib.services.i18n.TranslationService;
-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.facetapi.IdentifiedHolder;
@@ -36,6 +31,10 @@ import org.apache.isis.metamodel.methodutils.MethodScope;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.spec.feature.ObjectMember;
 
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.DISABLED;
+
+import lombok.val;
+
 /**
  * Installs the {@link DisabledObjectFacetViaMethod} on the
  * {@link ObjectSpecification}, and copies this facet onto each
@@ -49,9 +48,7 @@ import org.apache.isis.metamodel.spec.feature.ObjectMember;
  */
 public class DisabledObjectFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String DISABLED_PREFIX = "disabled";
-
-    private static final String[] PREFIXES = { DISABLED_PREFIX, };
+    private static final String[] PREFIXES = { DISABLED };
 
     public DisabledObjectFacetViaMethodFactory() {
         super(FeatureType.EVERYTHING_BUT_PARAMETERS, OrphanValidation.VALIDATE, PREFIXES);
@@ -59,22 +56,20 @@ public class DisabledObjectFacetViaMethodFactory extends MethodPrefixBasedFacetF
 
     @Override
     public void process(final ProcessClassContext processClassContext) {
-        final Class<?> cls = processClassContext.getCls();
-        final FacetHolder facetHolder = processClassContext.getFacetHolder();
-        final Class<?>[] paramTypes = new Class<?>[1];
-        paramTypes[0] = Identifier.Type.class;// String.class;
+        val cls = processClassContext.getCls();
+        val facetHolder = processClassContext.getFacetHolder();
+        val paramTypes = new Class<?>[] {Identifier.Type.class};
 
-        final Method method = MethodFinderUtils.findMethod(
-                cls, MethodScope.OBJECT, DISABLED_PREFIX,
-                new Class<?>[]{String.class, TranslatableString.class},
+        val method = MethodFinderUtils.findMethod_returningText(
+                cls, MethodScope.OBJECT, DISABLED,
                 paramTypes);
         if (method == null) {
             return;
         }
 
-        final TranslationService translationService = getTranslationService();
+        val translationService = getTranslationService();
         // sadness: same logic as in I18nFacetFactory
-        final String translationContext = ((IdentifiedHolder)facetHolder).getIdentifier().toClassIdentityString();
+        val translationContext = ((IdentifiedHolder)facetHolder).getIdentifier().toClassIdentityString();
         FacetUtil.addFacet(new DisabledObjectFacetViaMethod(method, translationService, translationContext, facetHolder));
 
         processClassContext.removeMethod(method);
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 84fc1c0..f9bfde4 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
@@ -21,7 +21,6 @@ package org.apache.isis.metamodel.facets.object.title.methods;
 
 import java.lang.reflect.Method;
 
-import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.metamodel.commons.ClassExtensions;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -33,10 +32,10 @@ import org.apache.isis.metamodel.facets.fallback.FallbackFacetFactory;
 import org.apache.isis.metamodel.facets.object.title.TitleFacet;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
-public class TitleFacetViaMethodsFactory extends MethodPrefixBasedFacetFactoryAbstract {
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.TITLE;
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.TO_STRING;
 
-    private static final String TO_STRING = "toString";
-    private static final String TITLE = "title";
+public class TitleFacetViaMethodsFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final String[] PREFIXES = { TO_STRING, TITLE, };
 
@@ -53,11 +52,10 @@ public class TitleFacetViaMethodsFactory extends MethodPrefixBasedFacetFactoryAb
         final Class<?> cls = processClassContext.getCls();
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
 
-        Method method = MethodFinderUtils.findMethod(
+        Method method = MethodFinderUtils.findMethod_returningText(
                 cls, MethodScope.OBJECT,
                 TITLE,
-                new Class<?>[]{String.class, TranslatableString.class},
-                null);
+                NO_PARAMETERS_TYPES);
         if (method != null) {
             processClassContext.removeMethod(method);
             final TranslationService translationService = getTranslationService();
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
index a522442..ee31f2d 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
@@ -21,7 +21,6 @@ package org.apache.isis.metamodel.facets.object.validating.validateobject.method
 
 import java.lang.reflect.Method;
 
-import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
@@ -31,9 +30,9 @@ import org.apache.isis.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
-public class ValidateObjectFacetMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.VALIDATE_PREFIX;
 
-    private static final String VALIDATE_PREFIX = "validate";
+public class ValidateObjectFacetMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final String[] PREFIXES = { VALIDATE_PREFIX, };
 
@@ -46,10 +45,9 @@ public class ValidateObjectFacetMethodFactory extends MethodPrefixBasedFacetFact
         final Class<?> cls = processClassContext.getCls();
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
 
-        final Method method = MethodFinderUtils.findMethod(
+        final Method method = MethodFinderUtils.findMethod_returningText(
                 cls, MethodScope.OBJECT,
                 VALIDATE_PREFIX,
-                new Class<?>[]{String.class, TranslatableString.class},
                 NO_PARAMETERS_TYPES);
         if (method != null) {
             final TranslationService translationService = getTranslationService();
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 2993dca..d157b24 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
@@ -31,8 +31,8 @@ import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.FacetedMethod;
 import org.apache.isis.metamodel.facets.FacetedMethodParameter;
 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.MethodPrefixConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
 public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
@@ -95,8 +95,13 @@ public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPref
         final Class<?> cls = processMethodContext.getCls();
         final Method actionMethod = processMethodContext.getMethod();
         final String capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
-        final String name = MethodPrefixConstants.AUTO_COMPLETE_PREFIX + paramNum + capitalizedName;
-        return MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, name, returnTypes, new Class[]{String.class});
+        final String name = MethodLiteralConstants.AUTO_COMPLETE_PREFIX + paramNum + capitalizedName;
+        return MethodFinderUtils.findMethod_returningAnyOf(
+                returnTypes,
+                cls, 
+                MethodScope.OBJECT, 
+                name, 
+                new Class[]{String.class});
     }
 
 }
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 48eb752..fb326b7 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
@@ -30,12 +30,12 @@ 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.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
 public class ActionChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.CHOICES_PREFIX };
+    private static final String[] PREFIXES = { MethodLiteralConstants.CHOICES_PREFIX };
 
 
     /**
@@ -93,7 +93,7 @@ public class ActionChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFa
         final MethodScope methodScope = MethodScope.scopeFor(actionMethod);
         final String capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
 
-        final String name = MethodPrefixConstants.CHOICES_PREFIX + capitalizedName;
+        final String name = MethodLiteralConstants.CHOICES_PREFIX + capitalizedName;
         choicesMethod = MethodFinderUtils.findMethod(cls, methodScope, name, returnType2, _Constants.emptyClasses);
         return choicesMethod;
     }
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 b4f2d2d..809242b 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
@@ -34,7 +34,7 @@ import org.apache.isis.metamodel.facets.FacetedMethod;
 import org.apache.isis.metamodel.facets.FacetedMethodParameter;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
-import org.apache.isis.metamodel.facets.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.param.choices.ActionChoicesFacet;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
@@ -135,7 +135,7 @@ public class ActionParameterChoicesFacetViaMethodFactory extends MethodPrefixBas
         final Class<?> cls = processMethodContext.getCls();
         final Method actionMethod = processMethodContext.getMethod();
         final String capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
-        final String name = MethodPrefixConstants.CHOICES_PREFIX + n + capitalizedName;
+        final String name = MethodLiteralConstants.CHOICES_PREFIX + n + capitalizedName;
         return MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, name, returnType, paramTypes);
     }
 
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 4dd534a..1f45c41 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
@@ -32,7 +32,7 @@ import org.apache.isis.metamodel.facets.FacetedMethod;
 import org.apache.isis.metamodel.facets.FacetedMethodParameter;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
-import org.apache.isis.metamodel.facets.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.actions.defaults.ActionDefaultsFacet;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
@@ -107,7 +107,7 @@ public class ActionParameterDefaultsFacetViaMethodFactory extends MethodPrefixBa
         Class<?>[] paramTypes = actionMethod.getParameterTypes();
         val returnType = paramTypes[n];
         val capitalizedName =
-                MethodPrefixConstants.DEFAULT_PREFIX + n +
+                MethodLiteralConstants.DEFAULT_PREFIX + n +
                 StringExtensions.asCapitalizedName(actionMethod.getName());
 
         for(;;) {
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 ddc45bc..3ed376e 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
@@ -22,7 +22,6 @@ package org.apache.isis.metamodel.facets.param.disable.method;
 import java.lang.reflect.Method;
 import java.util.List;
 
-import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.metamodel.commons.ListExtensions;
 import org.apache.isis.metamodel.commons.StringExtensions;
@@ -31,18 +30,20 @@ import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facetapi.IdentifiedHolder;
 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.MethodPrefixConstants;
 import org.apache.isis.metamodel.facets.param.disable.ActionParameterDisabledFacet;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 import org.apache.isis.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
+import lombok.val;
+
 /**
  * Sets up {@link ActionParameterDisabledFacet}.
  */
 public class ActionParameterDisabledFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract  {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.DISABLE_PREFIX };
+    private static final String[] PREFIXES = { MethodLiteralConstants.DISABLE_PREFIX };
 
     public ActionParameterDisabledFacetViaMethodFactory() {
         super(FeatureType.PARAMETERS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -61,18 +62,17 @@ public class ActionParameterDisabledFacetViaMethodFactory extends MethodPrefixBa
         final List<Class<?>> paramTypes = ListExtensions.mutableCopy(actionMethod.getParameterTypes());
         final MethodScope onClass = MethodScope.scopeFor(actionMethod);
 
-        final String hideName = MethodPrefixConstants.DISABLE_PREFIX + param + capitalizedName;
+        final String hideName = MethodLiteralConstants.DISABLE_PREFIX + param + capitalizedName;
 
         final int numParamTypes = paramTypes.size();
 
         final TranslationService translationService = getMetaModelContext().getTranslationService();
 
         for(int i=0; i< numParamTypes+1; i++) {
-            final Method disableMethod = MethodFinderUtils.findMethod(
+            val disableMethod = MethodFinderUtils.findMethod_returningText(
                     cls, onClass,
                     hideName,
-                    new Class<?>[]{String.class, TranslatableString.class},
-                    paramTypes.toArray(new Class<?>[]{}));
+                    NO_PARAMETERS_TYPES);
 
             if (disableMethod != null) {
                 processParameterContext.removeMethod(disableMethod);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
index 58b6ba0..bd0b617 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
@@ -30,17 +30,19 @@ import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facetapi.IdentifiedHolder;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
-import org.apache.isis.metamodel.facets.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.param.hide.ActionParameterHiddenFacet;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 import org.apache.isis.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 
+import lombok.val;
+
 /**
  * Sets up {@link ActionParameterHiddenFacet}.
  */
 public class ActionParameterHiddenFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract  {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.HIDE_PREFIX };
+    private static final String[] PREFIXES = { MethodLiteralConstants.HIDE_PREFIX };
 
     public ActionParameterHiddenFacetViaMethodFactory() {
         super(FeatureType.PARAMETERS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -59,16 +61,16 @@ public class ActionParameterHiddenFacetViaMethodFactory extends MethodPrefixBase
         final List<Class<?>> paramTypes = ListExtensions.mutableCopy(actionMethod.getParameterTypes());
         final MethodScope onClass = MethodScope.scopeFor(actionMethod);
 
-        final String hideName = MethodPrefixConstants.HIDE_PREFIX + param + capitalizedName;
+        final String hideName = MethodLiteralConstants.HIDE_PREFIX + param + capitalizedName;
 
         final int numParamTypes = paramTypes.size();
 
         for(int i=0; i< numParamTypes+1; i++) {
-            final Method hideMethod = MethodFinderUtils.findMethod(
+            val hideMethod = MethodFinderUtils.findMethod(
                     cls, onClass,
                     hideName,
-                    new Class<?>[]{boolean.class},
-                    paramTypes.toArray(new Class<?>[]{}));
+                    boolean.class,
+                    NO_PARAMETERS_TYPES);
 
             if (hideMethod != null) {
                 processParameterContext.removeMethod(hideMethod);
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 9784b44..f0d9702 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
@@ -21,7 +21,6 @@ package org.apache.isis.metamodel.facets.param.validate.method;
 
 import java.lang.reflect.Method;
 
-import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.Facet;
@@ -29,8 +28,8 @@ import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facetapi.IdentifiedHolder;
 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.MethodPrefixConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
 /**
@@ -38,7 +37,7 @@ import org.apache.isis.metamodel.methodutils.MethodScope;
  */
 public class ActionParameterValidationFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract  {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.VALIDATE_PREFIX };
+    private static final String[] PREFIXES = { MethodLiteralConstants.VALIDATE_PREFIX };
 
     /**
      * Note that the {@link Facet}s registered are the generic ones from
@@ -54,19 +53,18 @@ public class ActionParameterValidationFacetViaMethodFactory extends MethodPrefix
 
         final Class<?> cls = processParameterContext.getCls();
         final Method actionMethod = processParameterContext.getMethod();
-        final int param = processParameterContext.getParamNum();
+        final int paramIndex = processParameterContext.getParamNum();
         final IdentifiedHolder facetHolder = processParameterContext.getFacetHolder();
 
         final String capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
         final Class<?>[] paramTypes = actionMethod.getParameterTypes();
         final MethodScope onClass = MethodScope.scopeFor(actionMethod);
 
-        final String validateName = MethodPrefixConstants.VALIDATE_PREFIX + param + capitalizedName;
-        final Method validateMethod = MethodFinderUtils.findMethod(
+        final String validateName = MethodLiteralConstants.VALIDATE_PREFIX + paramIndex + capitalizedName;
+        final Method validateMethod = MethodFinderUtils.findMethod_returningText(
                 cls, onClass,
                 validateName,
-                new Class<?>[]{String.class, TranslatableString.class},
-                new Class<?>[]{paramTypes[param]});
+                new Class<?>[]{paramTypes[paramIndex]});
         if (validateMethod == null) {
             return;
         }
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 f4cf754..5036e15 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
@@ -26,14 +26,14 @@ 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.facetapi.MethodRemover;
-import org.apache.isis.metamodel.facets.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.PropertyOrCollectionIdentifyingFacetFactoryAbstract;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 
 public class PropertyAccessorFacetViaAccessorFactory extends PropertyOrCollectionIdentifyingFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.GET_PREFIX, MethodPrefixConstants.IS_PREFIX };
+    private static final String[] PREFIXES = { MethodLiteralConstants.GET_PREFIX, MethodLiteralConstants.IS_PREFIX };
 
     public PropertyAccessorFacetViaAccessorFactory() {
         super(FeatureType.PROPERTIES_ONLY, PREFIXES);
@@ -64,10 +64,10 @@ public class PropertyAccessorFacetViaAccessorFactory extends PropertyOrCollectio
     @Override
     public boolean isPropertyOrCollectionAccessorCandidate(final Method method) {
         final String methodName = method.getName();
-        if (methodName.startsWith(MethodPrefixConstants.GET_PREFIX)) {
+        if (methodName.startsWith(MethodLiteralConstants.GET_PREFIX)) {
             return true;
         }
-        if (methodName.startsWith(MethodPrefixConstants.IS_PREFIX) && method.getReturnType() == boolean.class) {
+        if (methodName.startsWith(MethodLiteralConstants.IS_PREFIX) && method.getReturnType() == boolean.class) {
             return true;
         }
         return false;
@@ -93,8 +93,8 @@ public class PropertyAccessorFacetViaAccessorFactory extends PropertyOrCollectio
 
     @Override
     public void findAndRemovePropertyAccessors(final MethodRemover methodRemover, final List<Method> methodListToAppendTo) {
-        appendMatchingMethods(methodRemover, MethodPrefixConstants.IS_PREFIX, boolean.class, methodListToAppendTo);
-        appendMatchingMethods(methodRemover, MethodPrefixConstants.GET_PREFIX, Object.class, methodListToAppendTo);
+        appendMatchingMethods(methodRemover, MethodLiteralConstants.IS_PREFIX, boolean.class, methodListToAppendTo);
+        appendMatchingMethods(methodRemover, MethodLiteralConstants.GET_PREFIX, Object.class, methodListToAppendTo);
     }
 
     private static void appendMatchingMethods(final MethodRemover methodRemover, final String prefix, final Class<?> returnType, final List<Method> methodListToAppendTo) {
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 b84e3d1..eb513f7 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
@@ -27,12 +27,12 @@ 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.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
 public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.AUTO_COMPLETE_PREFIX };
+    private static final String[] PREFIXES = { MethodLiteralConstants.AUTO_COMPLETE_PREFIX };
 
 
     public PropertyAutoCompleteFacetMethodFactory() {
@@ -52,7 +52,7 @@ public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFac
 
         final Class<?> cls = processMethodContext.getCls();
         final Class<?> returnType = getMethod.getReturnType();
-        final Method autoCompleteMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.AUTO_COMPLETE_PREFIX + capitalizedName, (Class<?>)null, new Class[]{String.class});
+        final Method autoCompleteMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.AUTO_COMPLETE_PREFIX + capitalizedName, (Class<?>)null, new Class[]{String.class});
         if (autoCompleteMethod == null) {
             return;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
index 4284197..77b90a5 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
@@ -27,12 +27,12 @@ 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.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
 public class PropertyChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.CHOICES_PREFIX };
+    private static final String[] PREFIXES = { MethodLiteralConstants.CHOICES_PREFIX };
 
     public PropertyChoicesFacetViaMethodFactory() {
         super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -51,7 +51,7 @@ public class PropertyChoicesFacetViaMethodFactory extends MethodPrefixBasedFacet
 
         final Class<?> cls = processMethodContext.getCls();
         final Class<?> returnType = getMethod.getReturnType();
-        final Method choicesMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.CHOICES_PREFIX + capitalizedName, (Class<?>)null, NO_PARAMETERS_TYPES);
+        final Method choicesMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.CHOICES_PREFIX + capitalizedName, (Class<?>)null, NO_PARAMETERS_TYPES);
         if (choicesMethod == null) {
             return;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
index 8d17e4b..7f61109 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
@@ -27,12 +27,12 @@ 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.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
 public class PropertyDefaultFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.DEFAULT_PREFIX };
+    private static final String[] PREFIXES = { MethodLiteralConstants.DEFAULT_PREFIX };
 
 
     public PropertyDefaultFacetViaMethodFactory() {
@@ -52,7 +52,7 @@ public class PropertyDefaultFacetViaMethodFactory extends MethodPrefixBasedFacet
 
         final Class<?> cls = processMethodContext.getCls();
         final Class<?> returnType = getMethod.getReturnType();
-        final Method method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.DEFAULT_PREFIX + capitalizedName, returnType, NO_PARAMETERS_TYPES);
+        final Method method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.DEFAULT_PREFIX + capitalizedName, returnType, NO_PARAMETERS_TYPES);
         if (method == null) {
             return;
         }
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 a609293..5e4a9b6 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
@@ -27,13 +27,13 @@ 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.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacetViaModifyMethod;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
 public class PropertyModifyFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.MODIFY_PREFIX };
+    private static final String[] PREFIXES = { MethodLiteralConstants.MODIFY_PREFIX };
 
     public PropertyModifyFacetFactory() {
         super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -54,7 +54,7 @@ public class PropertyModifyFacetFactory extends MethodPrefixBasedFacetFactoryAbs
         final Class<?>[] paramTypes = new Class[] { returnType };
 
         final Class<?> cls = processMethodContext.getCls();
-        final Method modifyMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.MODIFY_PREFIX + capitalizedName, void.class, paramTypes);
+        final Method modifyMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.MODIFY_PREFIX + capitalizedName, void.class, paramTypes);
 
         if (modifyMethod == null) {
             return;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java
index ac5eaf5..a103808 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
@@ -27,7 +27,7 @@ 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.MethodPrefixConstants;
+import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 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;
@@ -37,7 +37,7 @@ import org.apache.isis.metamodel.methodutils.MethodScope;
 
 public class PropertySetAndClearFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.SET_PREFIX, MethodPrefixConstants.CLEAR_PREFIX };
+    private static final String[] PREFIXES = { MethodLiteralConstants.SET_PREFIX, MethodLiteralConstants.CLEAR_PREFIX };
 
     public PropertySetAndClearFacetFactory() {
         super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -66,7 +66,7 @@ public class PropertySetAndClearFacetFactory extends MethodPrefixBasedFacetFacto
         final Class<?> cls = processMethodContext.getCls();
         final Class<?> returnType = getMethod.getReturnType();
         final Class<?>[] paramTypes = new Class[] { returnType };
-        final Method setMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.SET_PREFIX + capitalizedName, void.class, paramTypes);
+        final Method setMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.SET_PREFIX + capitalizedName, void.class, paramTypes);
         processMethodContext.removeMethod(setMethod);
 
         final FacetHolder property = processMethodContext.getFacetHolder();
@@ -92,7 +92,7 @@ public class PropertySetAndClearFacetFactory extends MethodPrefixBasedFacetFacto
         final FacetHolder property = processMethodContext.getFacetHolder();
 
         final String capitalizedName = StringExtensions.asJavaBaseName(getMethod.getName());
-        final Method clearMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.CLEAR_PREFIX + capitalizedName, void.class, NO_PARAMETERS_TYPES);
+        final Method clearMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.CLEAR_PREFIX + capitalizedName, void.class, NO_PARAMETERS_TYPES);
 
         if (clearMethod == null) {
             return null;
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 fe8ac13..47938ec 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
@@ -21,7 +21,6 @@ package org.apache.isis.metamodel.facets.properties.validating.method;
 
 import java.lang.reflect.Method;
 
-import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.metamodel.commons.StringExtensions;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
@@ -29,12 +28,13 @@ 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.MethodPrefixBasedFacetFactoryAbstract;
-import org.apache.isis.metamodel.facets.MethodPrefixConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.VALIDATE_PREFIX;
+
 public class PropertyValidateFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract  {
 
-    private static final String[] PREFIXES = { MethodPrefixConstants.VALIDATE_PREFIX };
+    private static final String[] PREFIXES = { VALIDATE_PREFIX };
 
     public PropertyValidateFacetViaMethodFactory() {
         super(FeatureType.PROPERTIES_ONLY, OrphanValidation.VALIDATE, PREFIXES);
@@ -55,10 +55,9 @@ public class PropertyValidateFacetViaMethodFactory extends MethodPrefixBasedFace
         final Class<?>[] paramTypes = new Class[] { returnType };
 
         final Class<?> cls = processMethodContext.getCls();
-        final Method method = MethodFinderUtils.findMethod(
+        final Method method = MethodFinderUtils.findMethod_returningText(
                 cls, MethodScope.OBJECT,
-                MethodPrefixConstants.VALIDATE_PREFIX + capitalizedName,
-                new Class<?>[]{String.class, TranslatableString.class},
+                VALIDATE_PREFIX + capitalizedName,
                 paramTypes);
         if (method == null) {
             return;
diff --git a/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/internal/util/MethodPrefixFinder.java b/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/internal/util/MethodPrefixFinder.java
index e394179..51cf0c6 100644
--- a/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/internal/util/MethodPrefixFinder.java
+++ b/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/internal/util/MethodPrefixFinder.java
@@ -22,19 +22,19 @@ package org.apache.isis.wrapper.internal.util;
 import java.util.Arrays;
 import java.util.LinkedHashSet;
 
-import static org.apache.isis.metamodel.facets.MethodPrefixConstants.ADD_TO_PREFIX;
-import static org.apache.isis.metamodel.facets.MethodPrefixConstants.CHOICES_PREFIX;
-import static org.apache.isis.metamodel.facets.MethodPrefixConstants.CLEAR_PREFIX;
-import static org.apache.isis.metamodel.facets.MethodPrefixConstants.DEFAULT_PREFIX;
-import static org.apache.isis.metamodel.facets.MethodPrefixConstants.DISABLE_PREFIX;
-import static org.apache.isis.metamodel.facets.MethodPrefixConstants.GET_PREFIX;
-import static org.apache.isis.metamodel.facets.MethodPrefixConstants.HIDE_PREFIX;
-import static org.apache.isis.metamodel.facets.MethodPrefixConstants.MODIFY_PREFIX;
-import static org.apache.isis.metamodel.facets.MethodPrefixConstants.REMOVE_FROM_PREFIX;
-import static org.apache.isis.metamodel.facets.MethodPrefixConstants.SET_PREFIX;
-import static org.apache.isis.metamodel.facets.MethodPrefixConstants.VALIDATE_ADD_TO_PREFIX;
-import static org.apache.isis.metamodel.facets.MethodPrefixConstants.VALIDATE_PREFIX;
-import static org.apache.isis.metamodel.facets.MethodPrefixConstants.VALIDATE_REMOVE_FROM_PREFIX;
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.ADD_TO_PREFIX;
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.CHOICES_PREFIX;
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.CLEAR_PREFIX;
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.DEFAULT_PREFIX;
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.DISABLE_PREFIX;
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.GET_PREFIX;
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.HIDE_PREFIX;
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.MODIFY_PREFIX;
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.REMOVE_FROM_PREFIX;
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.SET_PREFIX;
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.VALIDATE_ADD_TO_PREFIX;
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.VALIDATE_PREFIX;
+import static org.apache.isis.metamodel.facets.MethodLiteralConstants.VALIDATE_REMOVE_FROM_PREFIX;
 
 @Deprecated //no longer used
 final class MethodPrefixFinder {
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 bb4eda3..5cc6835 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
@@ -87,11 +87,10 @@ class DomainModelTest_usingGoodDomain {
         System.out.println("!!! ---");
         
         val validateDomainModel = new ValidateDomainModel();
+        validateDomainModel.run(); // should not throw
         
-        assertThrows(DomainModelException.class, validateDomainModel::run);
-        assertTrue(validateDomainModel.anyMatchesContaining(
-                UnresolvableReferencedAction.class, 
-                "conflict for determining a strategy for retrieval of title"));
+        //ReservedPrefixedMember
+ 
         
     }