You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2026/05/12 07:25:47 UTC

(causeway) branch 3997-col.order.patch updated: CAUSEWAY-3997: refining MetaModelService; no wildcard support for Object_patchColumnOrder

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

andi-huber pushed a commit to branch 3997-col.order.patch
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/3997-col.order.patch by this push:
     new 401dcccd226 CAUSEWAY-3997: refining MetaModelService; no wildcard support for Object_patchColumnOrder
401dcccd226 is described below

commit 401dcccd226fcf34844a343a07d6a2fcae0798a5
Author: andi-huber <ah...@apache.org>
AuthorDate: Tue May 12 09:25:38 2026 +0200

    CAUSEWAY-3997: refining MetaModelService; no wildcard support for
    Object_patchColumnOrder
---
 .../columnorder/Object_patchColumnOrder.java       |  46 +++-
 .../services/metamodel/MetaModelService.java       |  39 +--
 .../metamodel/MetaModelServiceDefault.java         |  85 +++---
 ...hPdfJsViewer_IntegTest.dump_facets.approved.xml |  12 +-
 ..._MixinDomain_IntegTest.dump_facets.approved.xml |  12 +-
 ...hPdfjsViewer_IntegTest.dump_facets.approved.xml |  12 +-
 ...r_PropDomain_IntegTest.dump_facets.approved.xml |  12 +-
 .../MetaModelRegressionTest.verify.approved.xml    | 300 +++++----------------
 8 files changed, 179 insertions(+), 339 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/causeway/applib/services/columnorder/Object_patchColumnOrder.java b/api/applib/src/main/java/org/apache/causeway/applib/services/columnorder/Object_patchColumnOrder.java
index 2d52fbf8228..52acfdd243c 100644
--- a/api/applib/src/main/java/org/apache/causeway/applib/services/columnorder/Object_patchColumnOrder.java
+++ b/api/applib/src/main/java/org/apache/causeway/applib/services/columnorder/Object_patchColumnOrder.java
@@ -24,6 +24,8 @@
 
 import jakarta.inject.Inject;
 
+import org.jspecify.annotations.Nullable;
+
 import org.apache.causeway.applib.Identifier;
 import org.apache.causeway.applib.annotation.Action;
 import org.apache.causeway.applib.annotation.ActionLayout;
@@ -31,7 +33,6 @@
 import org.apache.causeway.applib.annotation.Introspection;
 import org.apache.causeway.applib.annotation.MemberSupport;
 import org.apache.causeway.applib.annotation.Nature;
-import org.apache.causeway.applib.annotation.Optionality;
 import org.apache.causeway.applib.annotation.Parameter;
 import org.apache.causeway.applib.annotation.ParameterLayout;
 import org.apache.causeway.applib.annotation.PrecedingParamsPolicy;
@@ -42,6 +43,8 @@
 import org.apache.causeway.applib.services.appfeat.ApplicationFeatureId;
 import org.apache.causeway.applib.services.appfeat.ApplicationFeatureRepository;
 import org.apache.causeway.applib.services.metamodel.MetaModelService;
+import org.apache.causeway.applib.services.metamodel.MetaModelService.AssociationsLookup;
+import org.apache.causeway.commons.internal.exceptions._Exceptions;
 
 import lombok.RequiredArgsConstructor;
 
@@ -80,15 +83,15 @@ public static class ActionDomainEvent
 
     @MemberSupport public Object act(
 
-            @Parameter(optionality = Optionality.OPTIONAL)
+            @Parameter
             @ParameterLayout(describedAs = "The 'Feature', for which the patch is to be applied (in-memory), "
                     + "that is, "
                     + "either for a one-to-many relation (a PARENTED Collection), "
-                    + "or a domain-type (a STANDALONE Collection). "
+                    + "or a domain-type (applies to all STANDALONE Collections of that element-type). "
                     + "The Feature either represents a particular one-to-many relation of this domain-type or "
                     + "represents the domain-type itself or one of the domain-type's super types. "
-                    + "If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard). "
-                    + "Wildcard patches have least priority.")
+                    + "The Apache Causeway Programming Model also supports {parent-type, element-type} scoped "
+                    + "column order definitions, which are not covered by patching yet.")
     		final ApplicationFeatureId featureId,
 
     		@Parameter(precedingParamsPolicy = PrecedingParamsPolicy.RESET)
@@ -110,21 +113,40 @@ public static class ActionDomainEvent
             .toList();
     }
 
-    @MemberSupport public String defaultColumnDefinition(final ApplicationFeatureId collectionId) {
-        var memberId = applicationFeatureRepository.asIdentifier(collectionId)
-                .orElse(null); // not found or none selected (yet)
+    @MemberSupport public String defaultColumnDefinition(final @Nullable ApplicationFeatureId appFeatureId) {
+        if(appFeatureId==null)
+            return "# no feature selected";
+
+        var featureId = applicationFeatureRepository.asIdentifier(appFeatureId)
+                .orElseThrow(); // not found -> unexpected
+
+        if(featureId.type().isCollection())
+            return listing(
+                metaModelService.parentedAssociationsForColumnRendering(mixee, featureId, AssociationsLookup.AVAILABLE),
+                metaModelService.parentedAssociationsForColumnRendering(mixee, featureId, AssociationsLookup.ENABLED));
+
+        if(featureId.type().isClass())
+            return listing(
+                metaModelService.standaloneAssociationsForColumnRendering(featureId.logicalType(), AssociationsLookup.AVAILABLE),
+                metaModelService.standaloneAssociationsForColumnRendering(featureId.logicalType(), AssociationsLookup.ENABLED));
+
+        throw _Exceptions.illegalArgument("unsupported feature type %s", featureId.type());
+    }
+
+    // -- HELPER
 
+    private String listing(final Stream<Identifier> availableIds, final Stream<Identifier> enabledIds) {
         // all column candidates
-        var available = metaModelService.streamAvailableAssociationsForColumnRendering(mixee.getClass(), memberId)
+        var available = availableIds
                 .map(Identifier::memberLogicalName)
                 .collect(Collectors.joining("\n"));
 
-        // all columns currently configured
-        var enabled = metaModelService.streamEnabledAssociationsForColumnRendering(mixee.getClass(), memberId, mixee)
+        // all columns currently rendered
+        var enabled = enabledIds
                 .map(Identifier::memberLogicalName)
                 .collect(Collectors.joining("\n"));
 
-        // TODO flesh out using Listing
+        // TODO flesh out using Listing?
         return "# available\n"
             + available
             + "\n\n# enabled\n"
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/services/metamodel/MetaModelService.java b/api/applib/src/main/java/org/apache/causeway/applib/services/metamodel/MetaModelService.java
index 943d521f776..08663a889f7 100644
--- a/api/applib/src/main/java/org/apache/causeway/applib/services/metamodel/MetaModelService.java
+++ b/api/applib/src/main/java/org/apache/causeway/applib/services/metamodel/MetaModelService.java
@@ -209,36 +209,39 @@ enum Mode {
     Stream<Identifier> streamTypeHierarchy(@Nullable Class<?> domainType);
 
     /**
-     * Stream of {@link Identifier} representing the <i>Columns</i> of given domainType and <i>Member</i> of interest.
+     * Parameter to lookup associations for column rendering.
      *
-     * <p> Where columns returned are those that are in principle available. Also those are returned in no particular order.
+     * @since 4.0
+     */
+    public enum AssociationsLookup {
+        AVAILABLE,
+        ENABLED
+    }
+
+    /**
+     * Stream of {@link Identifier} representing the <i>Columns</i> for specified PARENTED collection.
+     *
+     * <p> Columns returned are those that are either in principle AVAILABLE or currently ENABLED, based on given {@link AssociationsLookup}.
      *
-     * <p> If domainType is null returns an empty {@link Stream}.
+     * <p> The availability lookup returns {@link Identifier}(s) in no particular order,
+     * whereas the enablement lookup returns them in same order as rendered.
      *
-     * <p> Otherwise, if memberIdentifier is null returns <i>Columns</i> for the standalone table of element-type == domainType.
+     * <p> If parentDomainObject is null returns an empty {@link Stream}.
      *
-     * <p>FIXME distinction between PARENTED and STANDALONE could be more explicit (separate methods)
-     * <p>FIXME column-order-txt feature supports identifier wildcards, which could be reflected by leaving the memberId empty here
      * @since 4.0
      */
-    Stream<Identifier> streamAvailableAssociationsForColumnRendering(@Nullable Class<?> domainType, @Nullable Identifier memberIdentifier);
+    Stream<Identifier> parentedAssociationsForColumnRendering(Object parentDomainObject, Identifier collectionId, AssociationsLookup lookup);
 
     /**
-     * Stream of {@link Identifier} representing the <i>Columns</i> of given domainType and <i>Member</i> of interest.
-     *
-     * <p> Where columns returned are those that are currently visible. Also those are returned in same order as rendered.
+     * Stream of {@link Identifier} representing the <i>Columns</i> for specified STANDALONE collection.
      *
-     * <p> If domainType is null returns an empty {@link Stream}.
+     * <p> Columns returned are those that are either in principle AVAILABLE or currently ENABLED, based on given {@link AssociationsLookup}.
      *
-     * <p> Otherwise, if memberIdentifier is null returns <i>Columns</i> for the standalone table of element-type == domainType.
+     * <p> The availability lookup returns {@link Identifier}(s) in no particular order,
+     * whereas the enablement lookup returns them in same order as rendered.
      *
-     * <p>FIXME distinction between PARENTED and STANDALONE could be more explicit (separate methods)
-     * <p>FIXME column-order-txt feature supports identifier wildcards, which could be reflected by leaving the memberId empty here
      * @since 4.0
      */
-    Stream<Identifier> streamEnabledAssociationsForColumnRendering(
-            @Nullable Class<?> domainType,
-            @Nullable Identifier memberIdentifier,
-            @Nullable Object domainObject);
+    Stream<Identifier> standaloneAssociationsForColumnRendering(LogicalType logicalType, AssociationsLookup lookup);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/metamodel/MetaModelServiceDefault.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/metamodel/MetaModelServiceDefault.java
index 5158eed0cb1..e538d826e73 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/metamodel/MetaModelServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/metamodel/MetaModelServiceDefault.java
@@ -24,7 +24,6 @@
 import java.util.Set;
 import java.util.TreeSet;
 import java.util.function.BiPredicate;
-import java.util.function.UnaryOperator;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -53,13 +52,13 @@
 import org.apache.causeway.applib.services.metamodel.MetaModelService;
 import org.apache.causeway.applib.services.metamodel.objgraph.ObjectGraph;
 import org.apache.causeway.commons.collections.Can;
-import org.apache.causeway.commons.functional.Either;
 import org.apache.causeway.commons.internal.base._Strings;
 import org.apache.causeway.commons.internal.collections._Lists;
 import org.apache.causeway.commons.internal.exceptions._Exceptions;
 import org.apache.causeway.core.metamodel.CausewayModuleCoreMetamodel;
-import org.apache.causeway.core.metamodel.context.MetaModelContext;
 import org.apache.causeway.core.metamodel.facets.members.publish.command.CommandPublishingFacet;
+import org.apache.causeway.core.metamodel.object.ManagedObject;
+import org.apache.causeway.core.metamodel.object.ManagedObjects;
 import org.apache.causeway.core.metamodel.services.metamodel.MetaModelAnnotator.ExporterConfig;
 import org.apache.causeway.core.metamodel.spec.ActionScope;
 import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
@@ -303,65 +302,61 @@ public Stream<Identifier> streamTypeHierarchy(@Nullable final Class<?> domainTyp
             .specForType(domainType)
             .stream()
             .flatMap(ObjectSpecification::streamTypeHierarchyAndInterfaces)
-            .filter(spec->spec.getCorrespondingClass().equals(Object.class))
+            .filter(spec->!spec.getCorrespondingClass().equals(Object.class))
             .map(ObjectSpecification::getFeatureIdentifier);
     }
 
     @Override
-    public Stream<Identifier> streamAvailableAssociationsForColumnRendering(
-            @Nullable final Class<?> domainType,
-            @Nullable final Identifier memberIdentifier) {
+    public Stream<Identifier> parentedAssociationsForColumnRendering(
+            final Object parentDomainObject,
+            final Identifier collectionId,
+            final AssociationsLookup lookup) {
 
-        var elementType = lookupColumnHolder(domainType, memberIdentifier)
-                .map(either->either.fold(OneToManyAssociation::getElementType, UnaryOperator.identity()))
-                .orElse(null);
-
-        if(elementType==null)
+        if(parentDomainObject==null
+                || collectionId==null)
             return Stream.empty();
 
-        return elementType.streamAssociations(MixedIn.INCLUDED)
-            .map(ObjectAssociation::getFeatureIdentifier);
-    }
-
-    @Override
-    public Stream<Identifier> streamEnabledAssociationsForColumnRendering(
-            @Nullable final Class<?> domainType,
-            @Nullable final Identifier memberIdentifier,
-            @Nullable final Object domainObject) {
-
-        var elementType = lookupColumnHolder(domainType, memberIdentifier)
-                .map(either->either.fold(OneToManyAssociation::getElementType, UnaryOperator.identity()))
-                .orElse(null);
+        var parentMo = ManagedObject.adaptSingular(specificationLoader(), parentDomainObject);
+        if(ManagedObjects.isNullOrUnspecifiedOrEmpty(parentMo))
+            return Stream.empty();
 
+        var elementType = parentMo.objSpec().getCollection(collectionId.memberLogicalName())
+            .map(OneToManyAssociation::getElementType)
+            .orElse(null);
         if(elementType==null)
             return Stream.empty();
 
-        var mo = MetaModelContext.instanceElseFail()
-            .getObjectManager()
-            .adapt(domainObject);
-
-        return elementType.streamAssociationsForColumnRendering(memberIdentifier, mo)
-            .map(ObjectAssociation::getFeatureIdentifier);
+        return switch (lookup) {
+            case AVAILABLE -> elementType
+                .streamAssociations(MixedIn.INCLUDED)
+                .map(ObjectAssociation::getFeatureIdentifier);
+            case ENABLED -> parentMo.objSpec()
+                .streamAssociationsForColumnRendering(collectionId, parentMo)
+                .map(ObjectAssociation::getFeatureIdentifier);
+        };
     }
 
-    // -- HELPER
-
-    private Optional<Either<OneToManyAssociation, ObjectSpecification>> lookupColumnHolder(
-            @Nullable final Class<?> domainType,
-            @Nullable final Identifier memberIdentifier) {
+    @Override
+    public Stream<Identifier> standaloneAssociationsForColumnRendering(
+            final LogicalType logicalType,
+            final AssociationsLookup lookup) {
 
-        var domObjSpec = specificationLoader()
-                .specForType(domainType)
+        var elementType = specificationLoader()
+                .specForLogicalType(logicalType)
                 .orElse(null);
 
-        if(domObjSpec == null)
-            return Optional.empty();
-
-        if(memberIdentifier == null)
-            return Optional.of(Either.right(domObjSpec));
+        if(elementType == null)
+            return Stream.empty();
 
-        return domObjSpec.getCollection(memberIdentifier.memberLogicalName())
-            .map(Either::left);
+        return switch (lookup) {
+            case AVAILABLE -> elementType
+                .streamAssociations(MixedIn.INCLUDED)
+                .map(ObjectAssociation::getFeatureIdentifier);
+            case ENABLED -> elementType
+                //TODO room  for API improvement
+                .streamAssociationsForColumnRendering(null, null)
+                .map(ObjectAssociation::getFeatureIdentifier);
+        };
     }
 
 }
diff --git a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomainWithPdfJsViewer_IntegTest.dump_facets.approved.xml b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomainWithPdfJsViewer_IntegTest.dump_facets.approved.xml
index d076d082842..60bd015b252 100644
--- a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomainWithPdfJsViewer_IntegTest.dump_facets.approved.xml
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomainWithPdfJsViewer_IntegTest.dump_facets.approved.xml
@@ -1141,9 +1141,9 @@
               <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard). Wildcard pa [...]
+                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports {parent-type, [...]
                 <mml:attr name="precedence" value="DEFAULT"/>
-                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard). Wildcard patc [...]
+                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports {parent-type, e [...]
               </mml:facet>
               <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -1157,11 +1157,11 @@
                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                 <mml:attr name="precedence" value="LOW"/>
               </mml:facet>
-              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
                 <mml:attr name="interactionAdvisors" value="Validating"/>
-                <mml:attr name="precedence" value="DEFAULT"/>
-                <mml:attr name="semantics" value="OPTIONAL"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+                <mml:attr name="semantics" value="REQUIRED"/>
               </mml:facet>
               <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MaxLengthFacetUnlimited">
                 <mml:attr name="facet" value="MaxLengthFacetUnlimited"/>
diff --git a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomain_IntegTest.dump_facets.approved.xml b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomain_IntegTest.dump_facets.approved.xml
index 6a6c8081842..cfa8406b634 100644
--- a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomain_IntegTest.dump_facets.approved.xml
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomain_IntegTest.dump_facets.approved.xml
@@ -1134,9 +1134,9 @@
               <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard). Wildcard pa [...]
+                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports {parent-type, [...]
                 <mml:attr name="precedence" value="DEFAULT"/>
-                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard). Wildcard patc [...]
+                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports {parent-type, e [...]
               </mml:facet>
               <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -1150,11 +1150,11 @@
                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                 <mml:attr name="precedence" value="LOW"/>
               </mml:facet>
-              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
                 <mml:attr name="interactionAdvisors" value="Validating"/>
-                <mml:attr name="precedence" value="DEFAULT"/>
-                <mml:attr name="semantics" value="OPTIONAL"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+                <mml:attr name="semantics" value="REQUIRED"/>
               </mml:facet>
               <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MaxLengthFacetUnlimited">
                 <mml:attr name="facet" value="MaxLengthFacetUnlimited"/>
diff --git a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomainWithPdfjsViewer_IntegTest.dump_facets.approved.xml b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomainWithPdfjsViewer_IntegTest.dump_facets.approved.xml
index ca386fe7fab..bee5da58f66 100644
--- a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomainWithPdfjsViewer_IntegTest.dump_facets.approved.xml
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomainWithPdfjsViewer_IntegTest.dump_facets.approved.xml
@@ -1130,9 +1130,9 @@
               <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard). Wildcard pa [...]
+                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports {parent-type, [...]
                 <mml:attr name="precedence" value="DEFAULT"/>
-                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard). Wildcard patc [...]
+                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports {parent-type, e [...]
               </mml:facet>
               <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -1146,11 +1146,11 @@
                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                 <mml:attr name="precedence" value="LOW"/>
               </mml:facet>
-              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
                 <mml:attr name="interactionAdvisors" value="Validating"/>
-                <mml:attr name="precedence" value="DEFAULT"/>
-                <mml:attr name="semantics" value="OPTIONAL"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+                <mml:attr name="semantics" value="REQUIRED"/>
               </mml:facet>
               <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MaxLengthFacetUnlimited">
                 <mml:attr name="facet" value="MaxLengthFacetUnlimited"/>
diff --git a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomain_IntegTest.dump_facets.approved.xml b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomain_IntegTest.dump_facets.approved.xml
index a7325dc7e69..b52df45b557 100644
--- a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomain_IntegTest.dump_facets.approved.xml
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomain_IntegTest.dump_facets.approved.xml
@@ -1123,9 +1123,9 @@
               <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard). Wildcard pa [...]
+                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports {parent-type, [...]
                 <mml:attr name="precedence" value="DEFAULT"/>
-                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard). Wildcard patc [...]
+                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports {parent-type, e [...]
               </mml:facet>
               <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -1139,11 +1139,11 @@
                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                 <mml:attr name="precedence" value="LOW"/>
               </mml:facet>
-              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
                 <mml:attr name="interactionAdvisors" value="Validating"/>
-                <mml:attr name="precedence" value="DEFAULT"/>
-                <mml:attr name="semantics" value="OPTIONAL"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+                <mml:attr name="semantics" value="REQUIRED"/>
               </mml:facet>
               <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MaxLengthFacetUnlimited">
                 <mml:attr name="facet" value="MaxLengthFacetUnlimited"/>
diff --git a/regressiontests/domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/MetaModelRegressionTest.verify.approved.xml b/regressiontests/domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/MetaModelRegressionTest.verify.approved.xml
index 7592b451f15..2b67dedfcbb 100644
--- a/regressiontests/domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/MetaModelRegressionTest.verify.approved.xml
+++ b/regressiontests/domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/MetaModelRegressionTest.verify.approved.xml
@@ -993,9 +993,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -1009,12 +1009,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -2215,9 +2209,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -2231,12 +2225,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -3682,9 +3670,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -3698,12 +3686,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -4976,9 +4958,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -4992,12 +4974,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -6258,9 +6234,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -6274,12 +6250,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -7853,9 +7823,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -7869,12 +7839,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -9586,9 +9550,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -9602,12 +9566,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -11511,9 +11469,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -11527,12 +11485,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -12919,9 +12871,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -12935,12 +12887,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -14311,9 +14257,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -14327,12 +14273,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -15725,9 +15665,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -15741,12 +15681,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -17164,9 +17098,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -17180,12 +17114,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -18666,9 +18594,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -18682,12 +18610,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -20328,9 +20250,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -20344,12 +20266,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -21919,9 +21835,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -21935,12 +21851,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -23221,9 +23131,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -23237,12 +23147,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -24523,9 +24427,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -24539,12 +24443,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -28641,9 +28539,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -28657,12 +28555,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -30074,9 +29966,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -30090,12 +29982,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -31739,9 +31625,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -31755,12 +31641,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -33408,9 +33288,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -33424,12 +33304,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -38799,9 +38673,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -38815,12 +38689,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -41722,9 +41590,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -41738,12 +41606,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -43019,9 +42881,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -43035,12 +42897,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -44405,9 +44261,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -44421,12 +44277,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -46129,9 +45979,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -46145,12 +45995,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -47775,9 +47619,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -47791,12 +47635,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -49421,9 +49259,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -49437,12 +49275,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -51113,9 +50945,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -51129,12 +50961,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
@@ -52571,9 +52397,9 @@
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.ParamDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.ParamDescribedFacetForParameterLayoutAnnotation">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
                                 <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
-                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildca [...]
+                                <mml:attr name="originalText" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also suppor [...]
                                 <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (a STANDALONE Collection). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. If 'none', patches all one-to-many relations of this domain-type (acting as a wildcard [...]
+                                <mml:attr name="translated" value="The 'Feature', for which the patch is to be applied (in-memory), that is, either for a one-to-many relation (a PARENTED Collection), or a domain-type (applies to all STANDALONE Collections of that element-type). The Feature either represents a particular one-to-many relation of this domain-type or represents the domain-type itself or one of the domain-type's super types. The Apache Causeway Programming Model also supports [...]
                             </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.name.NamedFacetForParameterUsingReflection">
                                 <mml:attr name="context" value="TranslationContext[name=org.apache.causeway.applib.services.columnorder.Object_patchColumnOrder#act()]"/>
@@ -52587,12 +52413,6 @@
                                 <mml:attr name="labelPosition" value="NOT_SPECIFIED"/>
                                 <mml:attr name="precedence" value="LOW"/>
                             </mml:facet>
-                            <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation.Optional">
-                                <mml:attr name="facet" value="MandatoryFacetForParameterAnnotation.Optional"/>
-                                <mml:attr name="interactionAdvisors" value="Validating"/>
-                                <mml:attr name="precedence" value="DEFAULT"/>
-                                <mml:attr name="semantics" value="OPTIONAL"/>
-                            </mml:facet>
                             <mml:facet id="org.apache.causeway.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethod">
                                 <mml:attr name="choicesType" value="LIST"/>
                                 <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>