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 2021/09/07 06:00:20 UTC

[isis] branch master updated: ISIS-2774: move MethodLiteralConstants to 'config'

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 9fde50c  ISIS-2774: move MethodLiteralConstants to 'config'
9fde50c is described below

commit 9fde50c380c737a556ecd921950b9c776efbdf50
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Sep 7 08:00:13 2021 +0200

    ISIS-2774: move MethodLiteralConstants to 'config'
    
    also rename to ProgrammingModelConstants
    
    remove deprecation marker on ObjectContracts (was a mistake)
---
 .../apache/isis/applib/util/ObjectContracts.java   |   2 -
 .../isis/commons/internal/base/_Strings.java       |  39 ++++++++
 .../config/beans/IsisBeanTypeClassifierImpl.java   |  10 +-
 .../progmodel/ProgrammingModelConstants.java}      | 110 ++++++++++++++++-----
 .../isis/core/metamodel/commons/ClassUtil.java     |   1 +
 .../isis/core/metamodel/commons/MethodUtil.java    |   9 +-
 .../core/metamodel/commons/StringExtensions.java   |  64 +++---------
 .../isis/core/metamodel/facets/FacetFactory.java   |   8 +-
 .../ActionDefaultsFacetViaMethodFactory.java       |   4 +-
 .../ActionValidationFacetViaMethodFactory.java     |   4 +-
 .../CollectionAccessorFacetViaAccessorFactory.java |   6 +-
 .../DescribedAsFacetForMemberViaMethodFactory.java |   4 +-
 .../DisableForContextFacetViaMethodFactory.java    |   4 +-
 .../HideForContextFacetViaMethodFactory.java       |   4 +-
 .../NamedFacetForMemberViaMethodFactory.java       |   4 +-
 .../object/callbacks/CallbackFacetFactory.java     |   2 +-
 .../object/support/ObjectSupportFacetFactory.java  |   4 +-
 .../method/ValidateObjectFacetMethodFactory.java   |   4 +-
 ...ParameterAutoCompleteFacetViaMethodFactory.java |   4 +-
 .../method/ActionChoicesFacetViaMethodFactory.java |   4 +-
 ...ctionParameterChoicesFacetViaMethodFactory.java |   4 +-
 ...tionParameterDefaultsFacetViaMethodFactory.java |   4 +-
 ...tionParameterDisabledFacetViaMethodFactory.java |   4 +-
 ...ActionParameterHiddenFacetViaMethodFactory.java |   4 +-
 ...onParameterValidationFacetViaMethodFactory.java |   4 +-
 .../PropertyAccessorFacetViaAccessorFactory.java   |  25 +----
 .../PropertyAutoCompleteFacetMethodFactory.java    |   4 +-
 .../PropertyChoicesFacetViaMethodFactory.java      |   4 +-
 .../PropertyDefaultFacetViaMethodFactory.java      |   4 +-
 .../update/PropertySetterFacetFactory.java         |   6 +-
 .../PropertyValidateFacetViaMethodFactory.java     |   4 +-
 .../metamodel/methods/MethodFinderOptions.java     |   7 +-
 .../core/metamodel/methods/MethodFinderUtils.java  |   2 +-
 .../MethodPrefixBasedFacetFactoryAbstract.java     |   5 +-
 .../specloader/specimpl/FacetedMethodsBuilder.java |   7 +-
 .../specimpl/_MixedInMemberNamingStrategy.java     |   3 +-
 .../callback/CallbackFacetFactoryTestAbstract.java |   4 +-
 .../callback/CreatedCallbackFacetFactoryTest.java  |   2 +-
 .../callback/LoadedCallbackFacetFactoryTest.java   |   2 +-
 .../PersistedCallbackFacetFactoryTest.java         |   2 +-
 .../PersistingCallbackFacetFactoryTest.java        |   2 +-
 .../callback/RemovingCallbackFacetFactoryTest.java |   2 +-
 .../callback/UpdatedCallbackFacetFactoryTest.java  |   2 +-
 .../callback/UpdatingCallbackFacetFactoryTest.java |   2 +-
 .../ObjectDisabledMethodFacetFactoryTest.java      |   2 +-
 .../hidden/ObjectHiddenMethodFacetFactoryTest.java |   2 +-
 .../cssclass/CssClassFacetMethodFactoryTest.java   |   2 +-
 .../ident/icon/IconFacetMethodFactoryTest.java     |   2 +-
 .../ident/layout/LayoutFacetFactoryTest.java       |   2 +-
 .../title/TitleFacetViaMethodsFactoryTest.java     |   2 +-
 .../ObjectSupportFacetFactoryTestAbstract.java     |   4 +-
 .../specimpl/MixedInMemberNamingStrategyTest.java  |  14 +--
 .../commandlog/model/command/CommandModel.java     |  20 ++--
 53 files changed, 251 insertions(+), 199 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/isis/applib/util/ObjectContracts.java b/api/applib/src/main/java/org/apache/isis/applib/util/ObjectContracts.java
index e579372..88d4297 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/util/ObjectContracts.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/ObjectContracts.java
@@ -29,10 +29,8 @@ import lombok.extern.log4j.Log4j2;
 
 /**
  * Provides fluent composition for Objects' equals, hashCode and toString.
- * @deprecated heavily relies on reflection, there are probably better alternatives, eg. lombok
  * @since 1.x revised for 2.0 {@index}
  */
-@Deprecated(forRemoval = true, since = "2.0.0-M7")
 @Log4j2
 public final class ObjectContracts {
 
diff --git a/commons/src/main/java/org/apache/isis/commons/internal/base/_Strings.java b/commons/src/main/java/org/apache/isis/commons/internal/base/_Strings.java
index ab8951c..547d4a8 100644
--- a/commons/src/main/java/org/apache/isis/commons/internal/base/_Strings.java
+++ b/commons/src/main/java/org/apache/isis/commons/internal/base/_Strings.java
@@ -35,6 +35,7 @@ import java.util.function.Consumer;
 import java.util.function.Predicate;
 import java.util.function.UnaryOperator;
 import java.util.regex.Pattern;
+import java.util.stream.Collector;
 import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
 
@@ -685,6 +686,29 @@ public final class _Strings {
         return suffix(fileName, prefix(fileExtension, "."));
     }
 
+    /**
+     * A prefix is defined
+     * as the first set of lower-case letters and the name is characters from,
+     * and including, the first upper case letter. If no upper case letter is
+     * found then an empty string is returned.
+     * <p>
+     * Calling this method with the following Java names will produce these
+     * results:
+     * <pre>
+     * getCarRegistration  -&gt; CarRegistration
+     * CityMayor           -&gt; CityMayor
+     * isReady             -&gt; Ready
+     * </pre>
+     */
+    public static final String asPrefixDropped(final @Nullable String name) {
+        return isNotEmpty(name)
+                ? _Strings
+                    .streamCharacters(name)
+                    .dropWhile(c->c != '_' && Character.isLowerCase(c))
+                    .collect(_Strings.joiningCharacters())
+                : name;
+    }
+
     // -- SHORTCUTS
 
     /**
@@ -717,5 +741,20 @@ public final class _Strings {
         return _Strings.convert(str, _Bytes.asUrlBase64, StandardCharsets.UTF_8);
     }
 
+    // -- CHARACTER PROCESSING
+
+    public static Stream<Character> streamCharacters(final @Nullable String str) {
+        return isNotEmpty(str)
+                ? str.codePoints().mapToObj(c -> (char) c)
+                : Stream.empty();
+    }
+
+    public static Collector<Character, StringBuilder, String> joiningCharacters() {
+        return Collector.of(
+                StringBuilder::new,
+                StringBuilder::append,
+                StringBuilder::append,
+                StringBuilder::toString);
+    }
 
 }
diff --git a/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeClassifierImpl.java b/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeClassifierImpl.java
index b7eea0a..3adea2b 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeClassifierImpl.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeClassifierImpl.java
@@ -23,7 +23,6 @@ import java.lang.reflect.Modifier;
 import java.util.Collection;
 import java.util.Locale;
 
-import javax.enterprise.inject.Vetoed;
 import javax.persistence.Entity;
 import javax.persistence.Table;
 
@@ -33,10 +32,10 @@ import org.springframework.stereotype.Component;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.services.metamodel.BeanSort;
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.TypeVetoMarker;
 
 import static org.apache.isis.commons.internal.reflection._Annotations.findNearestAnnotation;
 
@@ -84,9 +83,10 @@ implements IsisBeanTypeClassifier {
 
         // handle vetoing ...
 
-        if(findNearestAnnotation(type, Vetoed.class).isPresent()
-                || findNearestAnnotation(type, Programmatic.class).isPresent()) {
-            return BeanClassification.selfManaged(BeanSort.VETOED); // reject
+        for(TypeVetoMarker vetoMarker : TypeVetoMarker.values()) {
+            if(findNearestAnnotation(type, vetoMarker.getAnnotationType()).isPresent()) {
+                return BeanClassification.selfManaged(BeanSort.VETOED); // reject
+            }
         }
 
         val profiles = Can.ofArray(findNearestAnnotation(type, Profile.class)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodLiteralConstants.java b/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java
similarity index 66%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodLiteralConstants.java
rename to core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java
index 6e08458..42ec9e6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodLiteralConstants.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java
@@ -16,34 +16,98 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.core.metamodel.methods;
+package org.apache.isis.core.config.progmodel;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Array;
 import java.lang.reflect.Member;
 import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
 import java.util.Collection;
 import java.util.function.IntFunction;
+import java.util.function.Predicate;
+
+import javax.enterprise.inject.Vetoed;
 
 import org.springframework.lang.Nullable;
+import org.springframework.util.ClassUtils;
 
+import org.apache.isis.applib.annotation.Domain;
 import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.ObjectLifecycle;
 import org.apache.isis.applib.annotation.ObjectSupport;
 import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.metamodel.commons.StringExtensions;
+import org.apache.isis.commons.internal.base._Strings;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
+import lombok.val;
+
+public final class ProgrammingModelConstants {
+
+    // -- TYPE VETO MARKERS (EXLUDE FROM DOMAIN)
 
-public final class MethodLiteralConstants {
+    @Getter
+    @RequiredArgsConstructor
+    public enum TypeVetoMarker {
+        DOMAIN_EXLCUDE(Domain.Exclude.class),
+        VETO(Vetoed.class);
+        private final Class<? extends Annotation> annotationType;
+    }
 
     // -- ACCESSORS
 
-    public static final String GET_PREFIX = "get";
-    public static final String IS_PREFIX = "is";
-    public static final String SET_PREFIX = "set";
+    @Getter
+    @RequiredArgsConstructor
+    public enum AccessorPrefix {
+        GET("get"),
+        IS("is"),
+        SET("set");
+        private final String prefix;
+
+        public String prefix(final @Nullable String input) {
+            return input!=null
+                    ? prefix + input
+                    : prefix;
+        }
+
+        public boolean isPrefixOf(final @Nullable String input) {
+            return input!=null
+                    ? input.startsWith(prefix)
+                    : false;
+        }
+
+        public static boolean isCandidateGetterName(final @Nullable String name) {
+            return GET.isPrefixOf(name)
+                    || IS.isPrefixOf(name);
+        }
+
+        public static boolean isBooleanGetter(final Method method) {
+            return IS.isPrefixOf(method.getName())
+                    && method.getParameterCount() == 0
+                    && !Modifier.isStatic(method.getModifiers())
+                    && (method.getReturnType() == boolean.class
+                        || method.getReturnType() == Boolean.class);
+        }
+
+        public static boolean isNonBooleanGetter(final Method method, final Predicate<Class<?>> typeFilter) {
+            return GET.isPrefixOf(method.getName())
+                    && method.getParameterCount() == 0
+                    && !Modifier.isStatic(method.getModifiers())
+                    && typeFilter.test(method.getReturnType());
+        }
+
+        public static boolean isNonBooleanGetter(final Method method, final Class<?> expectedType) {
+            return isNonBooleanGetter(method, type->
+                expectedType.isAssignableFrom(ClassUtils.resolvePrimitiveIfNecessary(type)));
+        }
+
+        public static boolean isGetter(final Method method) {
+            return isBooleanGetter(method)
+                    || isNonBooleanGetter(method, type->type != void.class);
+        }
+    }
 
     // -- LIFECYCLE CALLBACKS
 
@@ -126,7 +190,8 @@ public final class MethodLiteralConstants {
 
     // -- CONFLICTING MARKER ANNOTATIONS
 
-    @RequiredArgsConstructor @Getter
+    @Getter
+    @RequiredArgsConstructor
     public static enum ConflictingAnnotations {
         OBJECT_SUPPORT(Can.of(ObjectLifecycle.class, MemberSupport.class)),
         OBJECT_LIFECYCLE(Can.of(ObjectSupport.class, MemberSupport.class)),
@@ -161,20 +226,20 @@ public final class MethodLiteralConstants {
 
     public static final Can<SupportingMethodNameProviderForAction> NAMING_ACTIONS = Can.of(
             (final Method actionMethod, final String prefix, final boolean isMixin)->
-                prefix + StringExtensions.asCapitalizedName(actionMethod.getName()),
+                prefix + _Strings.capitalize(actionMethod.getName()),
             (final Method actionMethod, final String prefix, final boolean isMixin)->
                 isMixin
-                    // prefix only notation is restricted to mixins
+                    // prefix-only notation is restricted to mixins
                     ? prefix
                     : null
             );
     public static final Can<SupportingMethodNameProviderForParameter> NAMING_PARAMETERS = Can.of(
             (final Method actionMethod, final String prefix, final boolean isMixin, final int paramNum)->
-                prefix + paramNum + StringExtensions.asCapitalizedName(actionMethod.getName()),
+                prefix + paramNum + _Strings.capitalize(actionMethod.getName()),
             (final Method actionMethod, final String prefix, final boolean isMixin, final int paramNum)->
                 isMixin
-                    // no action name reference notation is restricted to mixins
-                    ? prefix + StringExtensions.asCapitalizedName(actionMethod.getParameters()[paramNum].getName())
+                    // no-action-name-reference notation is restricted to mixins
+                    ? prefix + _Strings.capitalize(actionMethod.getParameters()[paramNum].getName())
                     : null
             );
     public static final Can<SupportingMethodNameProviderForPropertyAndCollection> NAMING_PROPERTIES_AND_COLLECTIONS = Can.of(
@@ -182,7 +247,7 @@ public final class MethodLiteralConstants {
                 prefix + getCapitalizedMemberName(member),
             (final Member member, final String prefix, final boolean isMixin)->
                 isMixin
-                    // prefix only notation is restricted to mixins
+                    // prefix-only notation is restricted to mixins
                     ? prefix
                     : null
             );
@@ -191,20 +256,19 @@ public final class MethodLiteralConstants {
 
     private static String getCapitalizedMemberName(final Member member) {
         if(member instanceof Method) {
-            final Method method = (Method)member;
-            if(method.getParameterCount()>0) {
+            val method = (Method)member;
+            val methodName = method.getName();
+            if(method.getParameterCount()>0
+                    || method.getReturnType().equals(void.class)
+                    || !AccessorPrefix.isCandidateGetterName(methodName)) {
                 // definitely an action not a getter
-                return StringExtensions.asCapitalizedName(method.getName());
+                return _Strings.capitalize(methodName);
             }
-            // either a no-arg action or a getter
-            final String capitalizedName =
-                    StringExtensions.asJavaBaseNameStripAccessorPrefixIfRequired(member.getName());
-            return  capitalizedName;
+            // must be a getter
+            return _Strings.capitalize(_Strings.asPrefixDropped(methodName));
         }
         // must be a field then
-        final String capitalizedName =
-                StringExtensions.asCapitalizedName(member.getName());
-        return capitalizedName;
+        return _Strings.capitalize(member.getName());
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/ClassUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/ClassUtil.java
index aa726d0..69a745d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/ClassUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/ClassUtil.java
@@ -66,6 +66,7 @@ public final class ClassUtil {
                     double.class, 0.0,
                     char.class, (char)0
                     );
+    //XXX supposedly use Spring's ClassUtils instead
     static final Map<Class<?>, Class<?>> wrapperClasses =
             MapUtil.asMap(
                     // TODO: there is a better way of doing this in 1.6 using TypeMirror
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/MethodUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/MethodUtil.java
index 36999f1..9fe241a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/MethodUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/MethodUtil.java
@@ -26,7 +26,7 @@ import java.util.function.Predicate;
 
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.collections._Collections;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 
 import lombok.val;
 import lombok.experimental.UtilityClass;
@@ -192,10 +192,13 @@ public class MethodUtil {
 
         }
 
-        public static Predicate<Method> getter(final Class<?> returnType) {
-            return prefixed(MethodLiteralConstants.GET_PREFIX, returnType, CanBeVoid.FALSE, 0);
+        public static Predicate<Method> booleanGetter() {
+            return ProgrammingModelConstants.AccessorPrefix::isBooleanGetter;
         }
 
+        public static Predicate<Method> nonBooleanGetter(final Class<?> returnType) {
+            return method->ProgrammingModelConstants.AccessorPrefix.isNonBooleanGetter(method, returnType);
+        }
 
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/StringExtensions.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/StringExtensions.java
index 9ed5ad5..f1292f3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/StringExtensions.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/StringExtensions.java
@@ -29,6 +29,8 @@ import org.apache.isis.applib.util.Enums;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.resources._Resources;
 
+import lombok.val;
+
 public final class StringExtensions {
 
     private StringExtensions() {}
@@ -42,7 +44,7 @@ public final class StringExtensions {
      * between the words, where each word starts with a capital letter. E.g.,
      * "NextAvailableDate" is returned as "Next Available Date".
      */
-    public static String asNaturalName2(String name) {
+    public static String asNaturalName2(final String name) {
         return _Strings.asNaturalName2.apply(name);
     }
 
@@ -118,7 +120,7 @@ public final class StringExtensions {
         return b.toString();
     }
 
-    public static String asLowerDashed(String extendee) {
+    public static String asLowerDashed(final String extendee) {
         return _Strings.asLowerDashed.apply(extendee);
     }
 
@@ -251,11 +253,11 @@ public final class StringExtensions {
                         : extendee;
     }
 
-    public static String enumTitle(String enumName) {
+    public static String enumTitle(final String enumName) {
         return Enums.getFriendlyNameOf(enumName);
     }
 
-    public static String enumDeTitle(String enumFriendlyName) {
+    public static String enumDeTitle(final String enumFriendlyName) {
         return Enums.getEnumNameFromFriendly(enumFriendlyName);
     }
 
@@ -295,7 +297,7 @@ public final class StringExtensions {
 
     /**
      * Returns the name of a Java entity without any prefix. A prefix is defined
-     * as the first set of lowercase letters and the name is characters from,
+     * as the first set of lower-case letters and the name is characters from,
      * and including, the first upper case letter. If no upper case letter is
      * found then an empty string is returned.
      *
@@ -304,59 +306,17 @@ public final class StringExtensions {
      * results:
      *
      * <pre>
-     *                     getCarRegistration        -&gt; CarRegistration
-     *                     CityMayor -&gt; CityMayor
-     *                     isReady -&gt; Ready
+     * getCarRegistration -&gt; CarRegistration
+     * CityMayor          -&gt; CityMayor
+     * isReady            -&gt; Ready
      * </pre>
      *
      */
     public static String asJavaBaseName(final String javaName) {
-        int pos = 0;
-
-        // find first upper case character
-        final int len = javaName.length();
-
-        while ((pos < len) && (javaName.charAt(pos) != '_') && Character.isLowerCase(javaName.charAt(pos))) {
-            pos++;
-        }
-
-        if (pos >= len) {
-            return "";
-        }
-
-        if (javaName.charAt(pos) == '_') {
-            pos++;
-        }
-
-        if (pos >= len) {
-            return "";
-        }
-
-        final String baseName = javaName.substring(pos);
-        final char firstChar = baseName.charAt(0);
-
-        if (Character.isLowerCase(firstChar)) {
-            return Character.toUpperCase(firstChar) + baseName.substring(1);
-        } else {
-            return baseName;
-        }
-    }
-
-    public static String asJavaBaseNameStripAccessorPrefixIfRequired(final String javaNameExtendee) {
-        if (javaNameExtendee.startsWith("is") || javaNameExtendee.startsWith("get")) {
-            return asJavaBaseName(javaNameExtendee);
-        } else {
-            return StringExtensions.asCapitalizedName(javaNameExtendee);
-        }
+        val baseName = _Strings.asPrefixDropped(javaName);
+        return _Strings.capitalize(baseName);
     }
 
-    public static String asCapitalizedName(final String extendee) {
-
-        return Character.toUpperCase(extendee.charAt(0)) +
-                extendee.substring(1);
-    }
-
-
     public static String asPluralName(final String extendee) {
         String pluralName;
         if (extendee.endsWith("y")) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java
index 17676a6..2053403 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java
@@ -32,11 +32,11 @@ import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.collections.ImmutableEnumSet;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.commons.internal.reflection._Annotations;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.MethodRemover;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 
 import lombok.Getter;
@@ -322,7 +322,7 @@ public interface FacetFactory {
                 final String prefix) {
             val actionMethod = getMethod();
             val isMixin = isMixinMain();
-            return MethodLiteralConstants.NAMING_ACTIONS
+            return ProgrammingModelConstants.NAMING_ACTIONS
                     .map(naming->naming.getActionSupportingMethodName(actionMethod, prefix, isMixin));
         }
 
@@ -330,7 +330,7 @@ public interface FacetFactory {
                 final String prefix) {
             val actionMethod = getMethod();
             val isMixin = isMixinMain();
-            return MethodLiteralConstants.NAMING_PARAMETERS
+            return ProgrammingModelConstants.NAMING_PARAMETERS
                     .map(naming->naming.providerForParam(actionMethod, prefix, isMixin));
         }
 
@@ -338,7 +338,7 @@ public interface FacetFactory {
                 final String prefix) {
             val getterMethod = getMethod();
             val isMixin = isMixinMain();
-            return MethodLiteralConstants.NAMING_PROPERTIES_AND_COLLECTIONS
+            return ProgrammingModelConstants.NAMING_PROPERTIES_AND_COLLECTIONS
                     .map(naming->naming.getMemberSupportingMethodName(getterMethod, prefix, isMixin));
         }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethodFactory.java
index ce1cac3..8c23a80 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/defaults/method/ActionDefaultsFacetViaMethodFactory.java
@@ -24,12 +24,12 @@ import java.util.List;
 import javax.inject.Inject;
 
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.methods.MethodFinder;
 import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 import lombok.val;
@@ -39,7 +39,7 @@ import lombok.val;
  */
 public class ActionDefaultsFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String PREFIX = MethodLiteralConstants.DEFAULT_PREFIX;
+    private static final String PREFIX = ProgrammingModelConstants.DEFAULT_PREFIX;
 
     @Inject
     public ActionDefaultsFacetViaMethodFactory(final MetaModelContext mmc) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java
index 9b283c9..4b4a97f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java
@@ -25,13 +25,13 @@ import javax.inject.Inject;
 import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
 import org.apache.isis.applib.services.i18n.TranslationContext;
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.ActionSupport;
 import org.apache.isis.core.metamodel.facets.ActionSupport.SearchAlgorithm;
 import org.apache.isis.core.metamodel.facets.actions.validate.ActionValidationFacet;
 import org.apache.isis.core.metamodel.facets.param.validate.method.ActionParameterValidationFacetViaMethod;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 import lombok.val;
@@ -42,7 +42,7 @@ import lombok.val;
 public class ActionValidationFacetViaMethodFactory
 extends MethodPrefixBasedFacetFactoryAbstract  {
 
-    private static final String PREFIX = MethodLiteralConstants.VALIDATE_PREFIX;
+    private static final String PREFIX = ProgrammingModelConstants.VALIDATE_PREFIX;
 
     @Inject
     public ActionValidationFacetViaMethodFactory(final MetaModelContext mmc) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
index 7aaf320..ae30fd6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
@@ -25,13 +25,13 @@ import java.util.List;
 import javax.inject.Inject;
 
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.commons.MethodUtil;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.MethodRemover;
 import org.apache.isis.core.metamodel.facets.PropertyOrCollectionIdentifyingFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.collparam.semantics.CollectionSemanticsFacetDefault;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 
 import lombok.val;
 
@@ -74,7 +74,7 @@ extends PropertyOrCollectionIdentifyingFacetFactoryAbstract {
 
     @Override
     public boolean isPropertyOrCollectionGetterCandidate(final Method method) {
-        return method.getName().startsWith(MethodLiteralConstants.GET_PREFIX);
+        return ProgrammingModelConstants.AccessorPrefix.GET.isPrefixOf(method.getName());
     }
 
     @Override
@@ -101,7 +101,7 @@ extends PropertyOrCollectionIdentifyingFacetFactoryAbstract {
             final List<Method> methodListToAppendTo) {
 
         methodRemover.removeMethods(
-                MethodUtil.Predicates.getter(Collection.class),
+                MethodUtil.Predicates.nonBooleanGetter(Collection.class),
                 methodListToAppendTo::add
                 );
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/described/method/DescribedAsFacetForMemberViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/described/method/DescribedAsFacetForMemberViaMethodFactory.java
index bc56b87..f68aceb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/described/method/DescribedAsFacetForMemberViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/described/method/DescribedAsFacetForMemberViaMethodFactory.java
@@ -21,12 +21,12 @@ package org.apache.isis.core.metamodel.facets.members.described.method;
 import javax.inject.Inject;
 
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.methods.MethodFinder;
 import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 import lombok.val;
@@ -34,7 +34,7 @@ import lombok.val;
 public class DescribedAsFacetForMemberViaMethodFactory
 extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String PREFIX = MethodLiteralConstants.DESCRIBED_PREFIX;
+    private static final String PREFIX = ProgrammingModelConstants.DESCRIBED_PREFIX;
 
     @Inject
     public DescribedAsFacetForMemberViaMethodFactory(final MetaModelContext mmc) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethodFactory.java
index a72b75b..31ded65 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/method/DisableForContextFacetViaMethodFactory.java
@@ -24,11 +24,11 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.services.i18n.TranslationContext;
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.methods.MethodFinder;
 import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 import lombok.val;
@@ -36,7 +36,7 @@ import lombok.val;
 public class DisableForContextFacetViaMethodFactory
 extends MethodPrefixBasedFacetFactoryAbstract  {
 
-    private static final String PREFIX = MethodLiteralConstants.DISABLE_PREFIX;
+    private static final String PREFIX = ProgrammingModelConstants.DISABLE_PREFIX;
 
     @Inject
     public DisableForContextFacetViaMethodFactory(final MetaModelContext mmc) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java
index 25bffe6..7858715 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/method/HideForContextFacetViaMethodFactory.java
@@ -23,13 +23,13 @@ import java.lang.reflect.Method;
 import javax.inject.Inject;
 
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.methods.MethodFinder;
 import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 import lombok.val;
@@ -37,7 +37,7 @@ import lombok.val;
 public class HideForContextFacetViaMethodFactory
 extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String PREFIX = MethodLiteralConstants.HIDE_PREFIX;
+    private static final String PREFIX = ProgrammingModelConstants.HIDE_PREFIX;
 
     @Inject
     public HideForContextFacetViaMethodFactory(final MetaModelContext mmc) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/method/NamedFacetForMemberViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/method/NamedFacetForMemberViaMethodFactory.java
index 77513c4..6dd91f8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/method/NamedFacetForMemberViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/method/NamedFacetForMemberViaMethodFactory.java
@@ -21,12 +21,12 @@ package org.apache.isis.core.metamodel.facets.members.named.method;
 import javax.inject.Inject;
 
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.methods.MethodFinder;
 import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 import lombok.val;
@@ -34,7 +34,7 @@ import lombok.val;
 public class NamedFacetForMemberViaMethodFactory
 extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String PREFIX = MethodLiteralConstants.NAMED_PREFIX;
+    private static final String PREFIX = ProgrammingModelConstants.NAMED_PREFIX;
 
     @Inject
     public NamedFacetForMemberViaMethodFactory(final MetaModelContext mmc) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CallbackFacetFactory.java
index 4f2f0fb..a57337b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CallbackFacetFactory.java
@@ -25,12 +25,12 @@ import java.util.stream.Stream;
 import javax.inject.Inject;
 
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.CallbackMethod;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
 import org.apache.isis.core.metamodel.methods.MethodFinderUtils;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.CallbackMethod;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 import lombok.val;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/support/ObjectSupportFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/support/ObjectSupportFacetFactory.java
index dd18319..45d402d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/support/ObjectSupportFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/support/ObjectSupportFacetFactory.java
@@ -26,6 +26,7 @@ import java.util.stream.Stream;
 import javax.inject.Inject;
 
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ObjectSupportMethod;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -44,12 +45,11 @@ import org.apache.isis.core.metamodel.facets.object.title.methods.TitleFacetInfe
 import org.apache.isis.core.metamodel.facets.object.title.methods.TitleFacetViaTitleMethod;
 import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
 import org.apache.isis.core.metamodel.methods.MethodFinderUtils;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.ObjectSupportMethod;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
 
-import static org.apache.isis.core.metamodel.methods.MethodLiteralConstants.TO_STRING;
+import static org.apache.isis.core.config.progmodel.ProgrammingModelConstants.TO_STRING;
 
 import lombok.val;
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
index 4d06f2d..96fdea8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/validateobject/method/ValidateObjectFacetMethodFactory.java
@@ -24,13 +24,13 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.services.i18n.TranslationContext;
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
 import org.apache.isis.core.metamodel.methods.MethodFinderUtils;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 import lombok.val;
@@ -38,7 +38,7 @@ import lombok.val;
 public class ValidateObjectFacetMethodFactory
 extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String PREFIX = MethodLiteralConstants.VALIDATE_PREFIX;
+    private static final String PREFIX = ProgrammingModelConstants.VALIDATE_PREFIX;
 
     @Inject
     public ValidateObjectFacetMethodFactory(final MetaModelContext mmc) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
index d924651..4c8f2d6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
@@ -24,13 +24,13 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.ParameterSupport;
 import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
 import org.apache.isis.core.metamodel.facets.ParameterSupport.SearchAlgorithm;
 import org.apache.isis.core.metamodel.facets.param.autocomplete.ActionParameterAutoCompleteFacet;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 import lombok.val;
@@ -38,7 +38,7 @@ import lombok.val;
 public class ActionParameterAutoCompleteFacetViaMethodFactory
 extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String PREFIX = MethodLiteralConstants.AUTO_COMPLETE_PREFIX;
+    private static final String PREFIX = ProgrammingModelConstants.AUTO_COMPLETE_PREFIX;
 
     @Inject
     public ActionParameterAutoCompleteFacetViaMethodFactory(final MetaModelContext mmc) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
index 33683fe..1cc8ef9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethodFactory.java
@@ -24,12 +24,12 @@ import java.util.Collection;
 import javax.inject.Inject;
 
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.methods.MethodFinder;
 import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 import lombok.val;
@@ -37,7 +37,7 @@ import lombok.val;
 public class ActionChoicesFacetViaMethodFactory
 extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String PREFIX = MethodLiteralConstants.CHOICES_PREFIX;
+    private static final String PREFIX = ProgrammingModelConstants.CHOICES_PREFIX;
 
     @Inject
     public ActionChoicesFacetViaMethodFactory(final MetaModelContext mmc) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
index 446132f..3cf48d5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
@@ -24,13 +24,13 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.ParameterSupport;
 import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
 import org.apache.isis.core.metamodel.facets.ParameterSupport.SearchAlgorithm;
 import org.apache.isis.core.metamodel.facets.param.choices.ActionChoicesFacet;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 import lombok.val;
@@ -38,7 +38,7 @@ import lombok.val;
 public class ActionParameterChoicesFacetViaMethodFactory
 extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String PREFIX = MethodLiteralConstants.CHOICES_PREFIX;
+    private static final String PREFIX = ProgrammingModelConstants.CHOICES_PREFIX;
 
     @Inject
     public ActionParameterChoicesFacetViaMethodFactory(final MetaModelContext mmc) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
index cbb50e8..7c9476b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
@@ -24,6 +24,7 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -31,7 +32,6 @@ import org.apache.isis.core.metamodel.facets.ParameterSupport;
 import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
 import org.apache.isis.core.metamodel.facets.ParameterSupport.SearchAlgorithm;
 import org.apache.isis.core.metamodel.facets.actions.defaults.ActionDefaultsFacet;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 import lombok.val;
@@ -41,7 +41,7 @@ import lombok.val;
  */
 public class ActionParameterDefaultsFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String PREFIX = MethodLiteralConstants.DEFAULT_PREFIX;
+    private static final String PREFIX = ProgrammingModelConstants.DEFAULT_PREFIX;
 
     @Inject
     public ActionParameterDefaultsFacetViaMethodFactory(final MetaModelContext mmc) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
index c69d459..a64d5fe 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
@@ -25,13 +25,13 @@ import javax.inject.Inject;
 import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
 import org.apache.isis.applib.services.i18n.TranslationContext;
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.ParameterSupport;
 import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
 import org.apache.isis.core.metamodel.facets.ParameterSupport.SearchAlgorithm;
 import org.apache.isis.core.metamodel.facets.param.disable.ActionParameterDisabledFacet;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 import lombok.val;
@@ -42,7 +42,7 @@ import lombok.val;
 public class ActionParameterDisabledFacetViaMethodFactory
 extends MethodPrefixBasedFacetFactoryAbstract  {
 
-    private static final String PREFIX = MethodLiteralConstants.DISABLE_PREFIX;
+    private static final String PREFIX = ProgrammingModelConstants.DISABLE_PREFIX;
 
     @Inject
     public ActionParameterDisabledFacetViaMethodFactory(final MetaModelContext mmc) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
index c6ba917..e90eea9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
@@ -24,13 +24,13 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.ParameterSupport;
 import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
 import org.apache.isis.core.metamodel.facets.ParameterSupport.SearchAlgorithm;
 import org.apache.isis.core.metamodel.facets.param.hide.ActionParameterHiddenFacet;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 import lombok.val;
@@ -41,7 +41,7 @@ import lombok.val;
 public class ActionParameterHiddenFacetViaMethodFactory
 extends MethodPrefixBasedFacetFactoryAbstract  {
 
-    private static final String PREFIX = MethodLiteralConstants.HIDE_PREFIX;
+    private static final String PREFIX = ProgrammingModelConstants.HIDE_PREFIX;
 
     @Inject
     public ActionParameterHiddenFacetViaMethodFactory(final MetaModelContext mmc) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethodFactory.java
index 57a663f..eb2fe94 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethodFactory.java
@@ -25,13 +25,13 @@ import javax.inject.Inject;
 import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
 import org.apache.isis.applib.services.i18n.TranslationContext;
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.ParameterSupport;
 import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
 import org.apache.isis.core.metamodel.facets.ParameterSupport.SearchAlgorithm;
 import org.apache.isis.core.metamodel.facets.param.validate.ActionParameterValidationFacet;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 import lombok.val;
@@ -40,7 +40,7 @@ import lombok.val;
  * Sets up {@link ActionParameterValidationFacet}. */
 public class ActionParameterValidationFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract  {
 
-    private static final String PREFIX = MethodLiteralConstants.VALIDATE_PREFIX;
+    private static final String PREFIX = ProgrammingModelConstants.VALIDATE_PREFIX;
 
     @Inject
     public ActionParameterValidationFacetViaMethodFactory(final MetaModelContext mmc) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
index c9da156..3a25bbd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
@@ -24,7 +24,7 @@ import java.util.List;
 import javax.inject.Inject;
 
 import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.metamodel.commons.CanBeVoid;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.commons.MethodUtil;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -32,11 +32,8 @@ import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.MethodRemover;
 import org.apache.isis.core.metamodel.facets.PropertyOrCollectionIdentifyingFacetFactoryAbstract;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
-import lombok.val;
-
 public class PropertyAccessorFacetViaAccessorFactory
 extends PropertyOrCollectionIdentifyingFacetFactoryAbstract {
 
@@ -70,16 +67,7 @@ extends PropertyOrCollectionIdentifyingFacetFactoryAbstract {
 
     @Override
     public boolean isPropertyOrCollectionGetterCandidate(final Method method) {
-        final String methodName = method.getName();
-        if (methodName.startsWith(MethodLiteralConstants.GET_PREFIX)
-                && method.getReturnType() != void.class) {
-            return true;
-        }
-        if (methodName.startsWith(MethodLiteralConstants.IS_PREFIX)
-                && method.getReturnType() == boolean.class) {
-            return true;
-        }
-        return false;
+        return ProgrammingModelConstants.AccessorPrefix.isGetter(method);
     }
 
     /**
@@ -101,13 +89,8 @@ extends PropertyOrCollectionIdentifyingFacetFactoryAbstract {
 
     @Override
     public void findAndRemovePropertyAccessors(final MethodRemover methodRemover, final List<Method> 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) {
-        val filter = MethodUtil.Predicates.prefixed(prefix, returnType, CanBeVoid.FALSE, 0);
-        methodRemover.removeMethods(filter, methodListToAppendTo::add);
+        methodRemover.removeMethods(MethodUtil.Predicates.booleanGetter(), methodListToAppendTo::add);
+        methodRemover.removeMethods(MethodUtil.Predicates.nonBooleanGetter(Object.class), methodListToAppendTo::add);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
index 124a358..4b2b371 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
@@ -21,13 +21,13 @@ package org.apache.isis.core.metamodel.facets.properties.autocomplete.method;
 import javax.inject.Inject;
 
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.methods.MethodFinder;
 import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 import lombok.val;
@@ -35,7 +35,7 @@ import lombok.val;
 public class PropertyAutoCompleteFacetMethodFactory
 extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String PREFIX = MethodLiteralConstants.AUTO_COMPLETE_PREFIX;
+    private static final String PREFIX = ProgrammingModelConstants.AUTO_COMPLETE_PREFIX;
 
     @Inject
     public PropertyAutoCompleteFacetMethodFactory(final MetaModelContext mmc) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
index 24270f0..a196c8b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
@@ -21,20 +21,20 @@ package org.apache.isis.core.metamodel.facets.properties.choices.method;
 import javax.inject.Inject;
 
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.methods.MethodFinder;
 import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 import lombok.val;
 
 public class PropertyChoicesFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String PREFIX = MethodLiteralConstants.CHOICES_PREFIX;
+    private static final String PREFIX = ProgrammingModelConstants.CHOICES_PREFIX;
 
     @Inject
     public PropertyChoicesFacetViaMethodFactory(final MetaModelContext mmc) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
index 3a1a158..cab1894 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
@@ -21,20 +21,20 @@ package org.apache.isis.core.metamodel.facets.properties.defaults.method;
 import javax.inject.Inject;
 
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.methods.MethodFinder;
 import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 import lombok.val;
 
 public class PropertyDefaultFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private static final String PREFIX = MethodLiteralConstants.DEFAULT_PREFIX;
+    private static final String PREFIX = ProgrammingModelConstants.DEFAULT_PREFIX;
 
     @Inject
     public PropertyDefaultFacetViaMethodFactory(final MetaModelContext mmc) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertySetterFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertySetterFacetFactory.java
index 95eaa7e..af75732 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertySetterFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertySetterFacetFactory.java
@@ -23,6 +23,7 @@ import java.lang.reflect.Method;
 import javax.inject.Inject;
 
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.commons.StringExtensions;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -33,7 +34,6 @@ import org.apache.isis.core.metamodel.facets.properties.update.init.PropertyInit
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod;
 import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
 import org.apache.isis.core.metamodel.methods.MethodFinderUtils;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 public class PropertySetterFacetFactory
@@ -73,7 +73,9 @@ extends MethodPrefixBasedFacetFactoryAbstract {
                 .findMethod(
                         MethodFinderOptions
                         .accessor(processMethodContext.getIntrospectionPolicy()),
-                        cls, MethodLiteralConstants.SET_PREFIX + capitalizedName, void.class, paramTypes);
+                        cls,
+                        ProgrammingModelConstants.AccessorPrefix.SET.prefix(capitalizedName),
+                        void.class, paramTypes);
         processMethodContext.removeMethod(setterMethod);
 
         final FacetHolder property = processMethodContext.getFacetHolder();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethodFactory.java
index 754ad1f..b8a1bdb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/method/PropertyValidateFacetViaMethodFactory.java
@@ -22,11 +22,11 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.services.i18n.TranslationContext;
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.methods.MethodFinder;
 import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
 import lombok.val;
@@ -34,7 +34,7 @@ import lombok.val;
 public class PropertyValidateFacetViaMethodFactory
 extends MethodPrefixBasedFacetFactoryAbstract  {
 
-    private static final String PREFIX = MethodLiteralConstants.VALIDATE_PREFIX;
+    private static final String PREFIX = ProgrammingModelConstants.VALIDATE_PREFIX;
 
     @Inject
     public PropertyValidateFacetViaMethodFactory(final MetaModelContext mmc) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinderOptions.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinderOptions.java
index 656ff50..80011ab 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinderOptions.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinderOptions.java
@@ -29,6 +29,7 @@ import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.functions._Predicates;
 import org.apache.isis.commons.internal.reflection._Annotations;
 import org.apache.isis.commons.internal.reflection._Reflect;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 
 import lombok.NonNull;
 import lombok.Value;
@@ -61,7 +62,7 @@ public class MethodFinderOptions {
         return havingAnnotationIfEnforcedByPolicyOrAccessibility(
                 memberIntrospectionPolicy,
                 Domain.Include.class,
-                MethodLiteralConstants.ConflictingAnnotations.OBJECT_SUPPORT.getProhibits());
+                ProgrammingModelConstants.ConflictingAnnotations.OBJECT_SUPPORT.getProhibits());
     }
 
     public static MethodFinderOptions livecycleCallback(
@@ -69,7 +70,7 @@ public class MethodFinderOptions {
         return havingAnnotationIfEnforcedByPolicyOrAccessibility(
                 memberIntrospectionPolicy,
                 Domain.Include.class,
-                MethodLiteralConstants.ConflictingAnnotations.OBJECT_LIFECYCLE.getProhibits());
+                ProgrammingModelConstants.ConflictingAnnotations.OBJECT_LIFECYCLE.getProhibits());
     }
 
     public static MethodFinderOptions memberSupport(
@@ -77,7 +78,7 @@ public class MethodFinderOptions {
         return havingAnnotationIfEnforcedByPolicyOrAccessibility(
                 memberIntrospectionPolicy,
                 Domain.Include.class,
-                MethodLiteralConstants.ConflictingAnnotations.MEMBER_SUPPORT.getProhibits());
+                ProgrammingModelConstants.ConflictingAnnotations.MEMBER_SUPPORT.getProhibits());
     }
 
     private final @NonNull EncapsulationPolicy encapsulationPolicy;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinderUtils.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinderUtils.java
index 24577ed..f09b862 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinderUtils.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinderUtils.java
@@ -28,9 +28,9 @@ import java.util.stream.Stream;
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.reflection._ClassCache;
 import org.apache.isis.commons.internal.reflection._Reflect;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ReturnTypeCategory;
 import org.apache.isis.core.metamodel.commons.MethodUtil;
 import org.apache.isis.core.metamodel.facetapi.MethodRemover;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.ReturnTypeCategory;
 
 import static org.apache.isis.commons.internal.reflection._Reflect.Filter.paramSignatureMatch;
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodPrefixBasedFacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodPrefixBasedFacetFactoryAbstract.java
index 8dee594..55ae272 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodPrefixBasedFacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodPrefixBasedFacetFactoryAbstract.java
@@ -20,6 +20,7 @@ package org.apache.isis.core.metamodel.methods;
 
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.collections.ImmutableEnumSet;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
@@ -113,8 +114,8 @@ implements MethodPrefixBasedFacetFactory {
                             val explanation =
                                     objectAction.getParameterCount() > 0
                                             && noParamsOnly
-                                            && (MethodLiteralConstants.HIDE_PREFIX.equals(prefix)
-                                                    || MethodLiteralConstants.DISABLE_PREFIX.equals(prefix))
+                                            && (ProgrammingModelConstants.HIDE_PREFIX.equals(prefix)
+                                                    || ProgrammingModelConstants.DISABLE_PREFIX.equals(prefix))
                                             ? " (such methods must have no parameters, '"
                                                 + "isis.core.meta-model.validator.no-params-only"
                                                 + "' config property)"
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
index 1239711..88d248c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
@@ -54,7 +54,6 @@ import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
 import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 import org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutorRegistry;
 import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
 import org.apache.isis.core.metamodel.specloader.typeextract.TypeExtractor;
@@ -239,10 +238,8 @@ implements HasMetaModelContext {
         val propertyAccessors = _Lists.<Method>newArrayList();
         getFacetProcessor().findAndRemovePropertyAccessors(methodRemover, propertyAccessors);
 
-        findAndRemovePrefixedNonVoidMethods(
-                MethodLiteralConstants.GET_PREFIX, Object.class, 0, propertyAccessors::add);
-        findAndRemovePrefixedNonVoidMethods(
-                MethodLiteralConstants.IS_PREFIX, Boolean.class, 0, propertyAccessors::add);
+        methodRemover.removeMethods(MethodUtil.Predicates.nonBooleanGetter(Object.class), propertyAccessors::add);
+        methodRemover.removeMethods(MethodUtil.Predicates.booleanGetter(), propertyAccessors::add);
 
         createPropertyFacetedMethodsFromAccessors(propertyAccessors, onNewField);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/_MixedInMemberNamingStrategy.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/_MixedInMemberNamingStrategy.java
index 5f42983..8fd8d05 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/_MixedInMemberNamingStrategy.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/_MixedInMemberNamingStrategy.java
@@ -20,6 +20,7 @@ package org.apache.isis.core.metamodel.specloader.specimpl;
 
 import java.util.Objects;
 
+import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.core.metamodel.commons.StringExtensions;
 
 import lombok.experimental.UtilityClass;
@@ -32,7 +33,7 @@ class _MixedInMemberNamingStrategy {
      *              for mixin main methods
      */
     String determineNameFrom(final ObjectActionDefault mixinActionAsRegular) {
-        return StringExtensions.asCapitalizedName(suffix(mixinActionAsRegular));
+        return _Strings.capitalize(suffix(mixinActionAsRegular));
     }
 
     /**
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/CallbackFacetFactoryTestAbstract.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/CallbackFacetFactoryTestAbstract.java
index 1708ee3..fd1be84 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/CallbackFacetFactoryTestAbstract.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/CallbackFacetFactoryTestAbstract.java
@@ -2,12 +2,12 @@ package org.apache.isis.core.metamodel.facets.object.callback;
 
 import org.junit.jupiter.api.Assertions;
 
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.FacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacetFactory;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 
 import lombok.val;
 
@@ -33,7 +33,7 @@ extends AbstractFacetFactoryTest {
             final int expectedCallbackCount,
             final FacetFactory facetFactory,
             final Class<?> type,
-            final MethodLiteralConstants.CallbackMethod callbackMethod,
+            final ProgrammingModelConstants.CallbackMethod callbackMethod,
             final Class<? extends ImperativeFacet> facetType) {
 
         // when
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/CreatedCallbackFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/CreatedCallbackFacetFactoryTest.java
index c3cfc43..dbb1fb9 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/CreatedCallbackFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/CreatedCallbackFacetFactoryTest.java
@@ -18,8 +18,8 @@
  */
 package org.apache.isis.core.metamodel.facets.object.callback;
 
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.CallbackMethod;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedCallbackFacet;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.CallbackMethod;
 
 public class CreatedCallbackFacetFactoryTest
 extends CallbackFacetFactoryTestAbstract {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/LoadedCallbackFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/LoadedCallbackFacetFactoryTest.java
index 0059c78..865c60d 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/LoadedCallbackFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/LoadedCallbackFacetFactoryTest.java
@@ -18,8 +18,8 @@
  */
 package org.apache.isis.core.metamodel.facets.object.callback;
 
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.CallbackMethod;
 import org.apache.isis.core.metamodel.facets.object.callbacks.LoadedCallbackFacet;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.CallbackMethod;
 
 public class LoadedCallbackFacetFactoryTest
 extends CallbackFacetFactoryTestAbstract {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/PersistedCallbackFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/PersistedCallbackFacetFactoryTest.java
index ed96990..0a64056 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/PersistedCallbackFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/PersistedCallbackFacetFactoryTest.java
@@ -18,8 +18,8 @@
  */
 package org.apache.isis.core.metamodel.facets.object.callback;
 
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.CallbackMethod;
 import org.apache.isis.core.metamodel.facets.object.callbacks.PersistedCallbackFacet;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.CallbackMethod;
 
 public class PersistedCallbackFacetFactoryTest
 extends CallbackFacetFactoryTestAbstract {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/PersistingCallbackFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/PersistingCallbackFacetFactoryTest.java
index b414a46..a77d0c0 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/PersistingCallbackFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/PersistingCallbackFacetFactoryTest.java
@@ -18,8 +18,8 @@
  */
 package org.apache.isis.core.metamodel.facets.object.callback;
 
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.CallbackMethod;
 import org.apache.isis.core.metamodel.facets.object.callbacks.PersistingCallbackFacet;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.CallbackMethod;
 
 public class PersistingCallbackFacetFactoryTest
 extends CallbackFacetFactoryTestAbstract {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/RemovingCallbackFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/RemovingCallbackFacetFactoryTest.java
index e761662..111e89a 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/RemovingCallbackFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/RemovingCallbackFacetFactoryTest.java
@@ -18,8 +18,8 @@
  */
 package org.apache.isis.core.metamodel.facets.object.callback;
 
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.CallbackMethod;
 import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingCallbackFacet;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.CallbackMethod;
 
 public class RemovingCallbackFacetFactoryTest
 extends CallbackFacetFactoryTestAbstract {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/UpdatedCallbackFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/UpdatedCallbackFacetFactoryTest.java
index 51101bb..8fd76ee 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/UpdatedCallbackFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/UpdatedCallbackFacetFactoryTest.java
@@ -18,8 +18,8 @@
  */
 package org.apache.isis.core.metamodel.facets.object.callback;
 
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.CallbackMethod;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedCallbackFacet;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.CallbackMethod;
 
 public class UpdatedCallbackFacetFactoryTest
 extends CallbackFacetFactoryTestAbstract {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/UpdatingCallbackFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/UpdatingCallbackFacetFactoryTest.java
index 442b2fa..bc98d62 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/UpdatingCallbackFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/UpdatingCallbackFacetFactoryTest.java
@@ -18,8 +18,8 @@
  */
 package org.apache.isis.core.metamodel.facets.object.callback;
 
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.CallbackMethod;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingCallbackFacet;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.CallbackMethod;
 
 public class UpdatingCallbackFacetFactoryTest
 extends CallbackFacetFactoryTestAbstract {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/disabled/ObjectDisabledMethodFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/disabled/ObjectDisabledMethodFacetFactoryTest.java
index ce6f79c..5151273 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/disabled/ObjectDisabledMethodFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/disabled/ObjectDisabledMethodFacetFactoryTest.java
@@ -18,8 +18,8 @@
  */
 package org.apache.isis.core.metamodel.facets.object.disabled;
 
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ObjectSupportMethod;
 import org.apache.isis.core.metamodel.facets.object.support.ObjectSupportFacetFactoryTestAbstract;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.ObjectSupportMethod;
 
 public class ObjectDisabledMethodFacetFactoryTest
 extends ObjectSupportFacetFactoryTestAbstract {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/hidden/ObjectHiddenMethodFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/hidden/ObjectHiddenMethodFacetFactoryTest.java
index c1fce50..ad82f76 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/hidden/ObjectHiddenMethodFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/hidden/ObjectHiddenMethodFacetFactoryTest.java
@@ -18,8 +18,8 @@
  */
 package org.apache.isis.core.metamodel.facets.object.hidden;
 
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ObjectSupportMethod;
 import org.apache.isis.core.metamodel.facets.object.support.ObjectSupportFacetFactoryTestAbstract;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.ObjectSupportMethod;
 
 public class ObjectHiddenMethodFacetFactoryTest
 extends ObjectSupportFacetFactoryTestAbstract {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/cssclass/CssClassFacetMethodFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/cssclass/CssClassFacetMethodFactoryTest.java
index f62a477..fa71c52 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/cssclass/CssClassFacetMethodFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/cssclass/CssClassFacetMethodFactoryTest.java
@@ -18,9 +18,9 @@
  */
 package org.apache.isis.core.metamodel.facets.object.ident.cssclass;
 
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ObjectSupportMethod;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
 import org.apache.isis.core.metamodel.facets.object.support.ObjectSupportFacetFactoryTestAbstract;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.ObjectSupportMethod;
 
 public class CssClassFacetMethodFactoryTest
 extends ObjectSupportFacetFactoryTestAbstract {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/icon/IconFacetMethodFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/icon/IconFacetMethodFactoryTest.java
index 711f9e3..032e2ce 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/icon/IconFacetMethodFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/icon/IconFacetMethodFactoryTest.java
@@ -18,9 +18,9 @@
  */
 package org.apache.isis.core.metamodel.facets.object.ident.icon;
 
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ObjectSupportMethod;
 import org.apache.isis.core.metamodel.facets.object.icon.IconFacet;
 import org.apache.isis.core.metamodel.facets.object.support.ObjectSupportFacetFactoryTestAbstract;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.ObjectSupportMethod;
 
 public class IconFacetMethodFactoryTest
 extends ObjectSupportFacetFactoryTestAbstract {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/layout/LayoutFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/layout/LayoutFacetFactoryTest.java
index 8820ac2..969d21a 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/layout/LayoutFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/layout/LayoutFacetFactoryTest.java
@@ -18,9 +18,9 @@
  */
 package org.apache.isis.core.metamodel.facets.object.ident.layout;
 
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ObjectSupportMethod;
 import org.apache.isis.core.metamodel.facets.object.layout.LayoutFacet;
 import org.apache.isis.core.metamodel.facets.object.support.ObjectSupportFacetFactoryTestAbstract;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.ObjectSupportMethod;
 
 public class LayoutFacetFactoryTest
 extends ObjectSupportFacetFactoryTestAbstract {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleFacetViaMethodsFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleFacetViaMethodsFactoryTest.java
index a49ba5e..b733918 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleFacetViaMethodsFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleFacetViaMethodsFactoryTest.java
@@ -21,12 +21,12 @@ package org.apache.isis.core.metamodel.facets.object.ident.title;
 import java.lang.reflect.Method;
 
 import org.apache.isis.commons.internal._Constants;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ObjectSupportMethod;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
 import org.apache.isis.core.metamodel.facets.object.support.ObjectSupportFacetFactoryTestAbstract;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
 import org.apache.isis.core.metamodel.facets.object.title.methods.TitleFacetInferredFromToStringMethod;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.ObjectSupportMethod;
 
 public class TitleFacetViaMethodsFactoryTest
 extends ObjectSupportFacetFactoryTestAbstract {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/support/ObjectSupportFacetFactoryTestAbstract.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/support/ObjectSupportFacetFactoryTestAbstract.java
index f438632..df5529c 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/support/ObjectSupportFacetFactoryTestAbstract.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/support/ObjectSupportFacetFactoryTestAbstract.java
@@ -20,12 +20,12 @@ package org.apache.isis.core.metamodel.facets.object.support;
 
 import org.junit.jupiter.api.Assertions;
 
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.FacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 
 import lombok.val;
 
@@ -50,7 +50,7 @@ extends AbstractFacetFactoryTest {
             final int expectedSupportMethodCount,
             final FacetFactory facetFactory,
             final Class<?> type,
-            final MethodLiteralConstants.ObjectSupportMethod supportMethodEnum,
+            final ProgrammingModelConstants.ObjectSupportMethod supportMethodEnum,
             final Class<? extends Facet> facetType) {
 
         // when
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/MixedInMemberNamingStrategyTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/MixedInMemberNamingStrategyTest.java
index 503f84e..c6dc166 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/MixedInMemberNamingStrategyTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/MixedInMemberNamingStrategyTest.java
@@ -20,12 +20,12 @@ package org.apache.isis.core.metamodel.specloader.specimpl;
 
 import org.junit.jupiter.api.Test;
 
-import org.apache.isis.core.metamodel.commons.StringExtensions;
-
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
+import org.apache.isis.commons.internal.base._Strings;
+
 class MixedInMemberNamingStrategyTest {
 
     @Test
@@ -44,31 +44,31 @@ class MixedInMemberNamingStrategyTest {
 
     @Test
     void exactly_underscore() throws Exception {
-        final String s = StringExtensions.asCapitalizedName(_MixedInMemberNamingStrategy.deriveMemberNameFrom("_"));
+        final String s = _Strings.capitalize(_MixedInMemberNamingStrategy.deriveMemberNameFrom("_"));
         assertThat(s, is("_"));
     }
 
     @Test
     void ends_with_underscore() throws Exception {
-        final String s = StringExtensions.asCapitalizedName(_MixedInMemberNamingStrategy.deriveMemberNameFrom("abc_"));
+        final String s = _Strings.capitalize(_MixedInMemberNamingStrategy.deriveMemberNameFrom("abc_"));
         assertThat(s, is("Abc_"));
     }
 
     @Test
     void has_no_underscore() throws Exception {
-        final String s = StringExtensions.asCapitalizedName(_MixedInMemberNamingStrategy.deriveMemberNameFrom("defghij"));
+        final String s = _Strings.capitalize(_MixedInMemberNamingStrategy.deriveMemberNameFrom("defghij"));
         assertThat(s, is("Defghij"));
     }
 
     @Test
     void contains_one_underscore() throws Exception {
-        final String s = StringExtensions.asCapitalizedName(_MixedInMemberNamingStrategy.deriveMemberNameFrom("abc_def"));
+        final String s = _Strings.capitalize(_MixedInMemberNamingStrategy.deriveMemberNameFrom("abc_def"));
         assertThat(s, is("Def"));
     }
 
     @Test
     void contains_more_than_one_underscore() throws Exception {
-        final String s = StringExtensions.asCapitalizedName(_MixedInMemberNamingStrategy.deriveMemberNameFrom("abc_def_ghi"));
+        final String s = _Strings.capitalize(_MixedInMemberNamingStrategy.deriveMemberNameFrom("abc_def_ghi"));
         assertThat(s, is("Ghi"));
     }
 
diff --git a/extensions/core/command-log/applib/src/main/java/org/apache/isis/extensions/commandlog/model/command/CommandModel.java b/extensions/core/command-log/applib/src/main/java/org/apache/isis/extensions/commandlog/model/command/CommandModel.java
index daad926..225b2f3 100644
--- a/extensions/core/command-log/applib/src/main/java/org/apache/isis/extensions/commandlog/model/command/CommandModel.java
+++ b/extensions/core/command-log/applib/src/main/java/org/apache/isis/extensions/commandlog/model/command/CommandModel.java
@@ -25,6 +25,7 @@ import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.command.CommandOutcomeHandler;
 import org.apache.isis.applib.services.commanddto.HasCommandDto;
 import org.apache.isis.applib.util.ObjectContracts;
+import org.apache.isis.applib.util.ToString;
 import org.apache.isis.extensions.commandlog.model.IsisModuleExtCommandLogApplib;
 
 public interface CommandModel
@@ -66,16 +67,17 @@ extends
 
     void setReplayState(ReplayState excluded);
 
+    static final ToString<CommandModel> stringifier = ObjectContracts
+        .toString("interactionId", CommandModel::getInteractionId)
+        .thenToString("username", CommandModel::getUsername)
+        .thenToString("timestamp", CommandModel::getTimestamp)
+        .thenToString("target", CommandModel::getTarget)
+        .thenToString("logicalMemberIdentifier", CommandModel::getLogicalMemberIdentifier)
+        .thenToStringOmitIfAbsent("startedAt", CommandModel::getStartedAt)
+        .thenToStringOmitIfAbsent("completedAt", CommandModel::getCompletedAt);
+
     default String toFriendlyString() {
-        return ObjectContracts
-                .toString("interactionId", CommandModel::getInteractionId)
-                .thenToString("username", CommandModel::getUsername)
-                .thenToString("timestamp", CommandModel::getTimestamp)
-                .thenToString("target", CommandModel::getTarget)
-                .thenToString("logicalMemberIdentifier", CommandModel::getLogicalMemberIdentifier)
-                .thenToStringOmitIfAbsent("startedAt", CommandModel::getStartedAt)
-                .thenToStringOmitIfAbsent("completedAt", CommandModel::getCompletedAt)
-                .toString(this);
+        return stringifier.toString(this);
     }
 
     @Override