You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2023/03/03 12:14:34 UTC

[causeway] 01/02: CAUSEWAY-3366: allows PdfJsViewer to be annotated on mixin types

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

danhaywood pushed a commit to branch CAUSEWAY-3366
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 3680f4c5541b79b6e9f6d3412fd6ebdbf86d2a46
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Mar 3 12:02:41 2023 +0000

    CAUSEWAY-3366: allows PdfJsViewer to be annotated on mixin types
---
 .../services/metamodel/DomainMemberDefault.java    |   17 +-
 ...odel.java => CausewayModuleExtPdfjsApplib.java} |    2 +-
 .../pdfjs/applib/annotations/PdfJsViewer.java      |    2 +-
 extensions/vw/pdfjs/metamodel/.gitignore           |    2 +
 extensions/vw/pdfjs/metamodel/pom.xml              |    7 +
 .../metamodel/CausewayModuleExtPdfjsMetaModel.java |    4 +
 .../PdfJsViewerFacetFromAnnotationFactory.java     |   12 +-
 .../metamodel/PdfjsViewer_Abstract_IntegTest.java  |   82 ++
 ...hPdfJsViewer_IntegTest.dump_facets.approved.xml | 1109 ++++++++++++++++++++
 ...iewer_MixinDomainWithPdfJsViewer_IntegTest.java |   60 ++
 ..._MixinDomain_IntegTest.dump_facets.approved.xml | 1101 +++++++++++++++++++
 .../PdfjsViewer_MixinDomain_IntegTest.java         |   58 +
 ...hPdfjsViewer_IntegTest.dump_facets.approved.xml |  910 ++++++++++++++++
 ...Viewer_PropDomainWithPdfjsViewer_IntegTest.java |   59 ++
 ...r_PropDomain_IntegTest.dump_facets.approved.xml |  906 ++++++++++++++++
 .../PdfjsViewer_PropDomain_IntegTest.java          |   59 ++
 .../metamodel/PlatformTransactionManagerNoop.java  |   21 +
 .../pdfjs/metamodel/domains/mixin/MixinDomain.java |    9 +
 .../metamodel/domains/mixin/SomeViewModel.java     |    8 +
 .../metamodel/domains/mixin/SomeViewModel_pdf.java |   21 +
 .../pdfjs/metamodel/domains/prop/PropDomain.java   |    7 +
 .../metamodel/domains/prop/SomeViewModel.java      |   17 +
 .../domainmodel/MetaModelRegressionTest.java       |   70 +-
 .../integtestsupport/applib/ApprovalsOptions.java  |   93 ++
 24 files changed, 4557 insertions(+), 79 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/metamodel/DomainMemberDefault.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/metamodel/DomainMemberDefault.java
index faa221e415..461398d455 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/metamodel/DomainMemberDefault.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/metamodel/DomainMemberDefault.java
@@ -30,6 +30,7 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.causeway.applib.services.metamodel.DomainMember;
+import org.apache.causeway.applib.util.ObjectContracts;
 import org.apache.causeway.commons.internal.base._Strings;
 import org.apache.causeway.commons.internal.collections._Sets;
 import org.apache.causeway.commons.internal.exceptions._Exceptions;
@@ -246,7 +247,7 @@ public class DomainMemberDefault implements DomainMember {
 
     @Override
     public int compareTo(final DomainMember o) {
-        return comparator.compare(this, o);
+        return contract.compare(this, o);
     }
 
     // -- HELPER
@@ -291,11 +292,15 @@ public class DomainMemberDefault implements DomainMember {
                 .contains(name);
     }
 
-    private static final Comparator<DomainMember> comparator =
-            Comparator.comparing(DomainMember::getClassType)
-            .thenComparing(DomainMember::getClassName)
-            .thenComparing(DomainMember::getType, Comparator.reverseOrder()) // desc
-            .thenComparing(DomainMember::getMemberName);
+    private static final ObjectContracts.ObjectContract<DomainMember> contract	=
+            ObjectContracts.contract(DomainMember.class)
+                    .thenUse("classType", DomainMember::getClassType)
+                    .thenUse("type", DomainMember::getClassName, Comparator.reverseOrder())
+                    .thenUse("memberName", DomainMember::getMemberName)
+            ;
 
+    public String toString() {
+        return contract.toString(this);
+    }
 
 }
diff --git a/extensions/vw/pdfjs/applib/src/main/java/org/apache/causeway/extensions/pdfjs/applib/CausewayModuleExtPdfjsApplibModel.java b/extensions/vw/pdfjs/applib/src/main/java/org/apache/causeway/extensions/pdfjs/applib/CausewayModuleExtPdfjsApplib.java
similarity index 95%
rename from extensions/vw/pdfjs/applib/src/main/java/org/apache/causeway/extensions/pdfjs/applib/CausewayModuleExtPdfjsApplibModel.java
rename to extensions/vw/pdfjs/applib/src/main/java/org/apache/causeway/extensions/pdfjs/applib/CausewayModuleExtPdfjsApplib.java
index 47d68f3a9a..d9c9372507 100644
--- a/extensions/vw/pdfjs/applib/src/main/java/org/apache/causeway/extensions/pdfjs/applib/CausewayModuleExtPdfjsApplibModel.java
+++ b/extensions/vw/pdfjs/applib/src/main/java/org/apache/causeway/extensions/pdfjs/applib/CausewayModuleExtPdfjsApplib.java
@@ -27,5 +27,5 @@ import org.apache.causeway.extensions.pdfjs.applib.spi.PdfJsViewerAdvisor;
 @Import({
         PdfJsViewerAdvisor.Default.class
 })
-public class CausewayModuleExtPdfjsApplibModel {
+public class CausewayModuleExtPdfjsApplib {
 }
diff --git a/extensions/vw/pdfjs/applib/src/main/java/org/apache/causeway/extensions/pdfjs/applib/annotations/PdfJsViewer.java b/extensions/vw/pdfjs/applib/src/main/java/org/apache/causeway/extensions/pdfjs/applib/annotations/PdfJsViewer.java
index 28b0c4f711..f71a57bd5f 100644
--- a/extensions/vw/pdfjs/applib/src/main/java/org/apache/causeway/extensions/pdfjs/applib/annotations/PdfJsViewer.java
+++ b/extensions/vw/pdfjs/applib/src/main/java/org/apache/causeway/extensions/pdfjs/applib/annotations/PdfJsViewer.java
@@ -34,7 +34,7 @@ import org.apache.causeway.extensions.pdfjs.applib.config.Scale;
  * @since 2.0 {@index}
  */
 @Retention(RetentionPolicy.RUNTIME)
-@Target(value = {ElementType.METHOD, ElementType.FIELD})
+@Target(value = {ElementType.METHOD, ElementType.FIELD, ElementType.TYPE})
 public @interface PdfJsViewer {
 
     /** The page (number) to render,
diff --git a/extensions/vw/pdfjs/metamodel/.gitignore b/extensions/vw/pdfjs/metamodel/.gitignore
new file mode 100644
index 0000000000..f8fc22bfb7
--- /dev/null
+++ b/extensions/vw/pdfjs/metamodel/.gitignore
@@ -0,0 +1,2 @@
+*.approvals.*.bak
+*.received.*
diff --git a/extensions/vw/pdfjs/metamodel/pom.xml b/extensions/vw/pdfjs/metamodel/pom.xml
index 28c52b7524..ea82db30d2 100644
--- a/extensions/vw/pdfjs/metamodel/pom.xml
+++ b/extensions/vw/pdfjs/metamodel/pom.xml
@@ -46,6 +46,13 @@
             <artifactId>causeway-core-metamodel</artifactId>
         </dependency>
 
+        <!-- testing -->
+        <dependency>
+            <groupId>org.apache.causeway.testing</groupId>
+            <artifactId>causeway-testing-integtestsupport-applib</artifactId>
+            <scope>test</scope>
+        </dependency>
+
     </dependencies>
 
 </project>
diff --git a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/causeway/extensions/pdfjs/metamodel/CausewayModuleExtPdfjsMetaModel.java b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/causeway/extensions/pdfjs/metamodel/CausewayModuleExtPdfjsMetaModel.java
index 635a5e1682..d83a9f04ae 100644
--- a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/causeway/extensions/pdfjs/metamodel/CausewayModuleExtPdfjsMetaModel.java
+++ b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/causeway/extensions/pdfjs/metamodel/CausewayModuleExtPdfjsMetaModel.java
@@ -18,6 +18,7 @@
  */
 package org.apache.causeway.extensions.pdfjs.metamodel;
 
+import org.apache.causeway.extensions.pdfjs.applib.CausewayModuleExtPdfjsApplib;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 
@@ -25,6 +26,9 @@ import org.apache.causeway.extensions.pdfjs.metamodel.facet.PdfJsViewerFacetFrom
 
 @Configuration
 @Import({
+        // modules
+        CausewayModuleExtPdfjsApplib.class,
+
         // @Component's
         PdfJsViewerFacetFromAnnotationFactory.Register.class
 })
diff --git a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/causeway/extensions/pdfjs/metamodel/facet/PdfJsViewerFacetFromAnnotationFactory.java b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/causeway/extensions/pdfjs/metamodel/facet/PdfJsViewerFacetFromAnnotationFactory.java
index 2f02366d8e..fb94150e3f 100644
--- a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/causeway/extensions/pdfjs/metamodel/facet/PdfJsViewerFacetFromAnnotationFactory.java
+++ b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/causeway/extensions/pdfjs/metamodel/facet/PdfJsViewerFacetFromAnnotationFactory.java
@@ -20,6 +20,8 @@ package org.apache.causeway.extensions.pdfjs.metamodel.facet;
 
 import javax.inject.Inject;
 
+import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.core.metamodel.specloader.validator.MetaModelValidatorForAmbiguousMixinAnnotations;
 import org.springframework.stereotype.Component;
 
 import org.apache.causeway.core.metamodel.context.MetaModelContext;
@@ -56,9 +58,13 @@ extends FacetFactoryAbstract {
     @Override
     public void process(final ProcessMethodContext processMethodContext) {
 
-        val facetHoder = processMethodContext.getFacetHolder();
+        val facetHolder = processMethodContext.getFacetHolder();
 
-        val pdfjsViewerIfAny = processMethodContext.synthesizeOnMethod(PdfJsViewer.class);
+        val pdfjsViewerIfAny = processMethodContext
+                .synthesizeOnMethodOrMixinType(
+                    PdfJsViewer.class,
+                    () -> MetaModelValidatorForAmbiguousMixinAnnotations
+                            .addValidationFailure(processMethodContext.getFacetHolder(), PdfJsViewer.class));
 
         pdfjsViewerIfAny.ifPresent(
             pdfjsViewer -> {
@@ -67,7 +73,7 @@ extends FacetFactoryAbstract {
 
                     FacetUtil.addFacet(
                             PdfJsViewerFacetFromAnnotation
-                            .create(pdfjsViewer, facetHoder))
+                            .create(pdfjsViewer, facetHolder))
 
                 );
 
diff --git a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_Abstract_IntegTest.java b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_Abstract_IntegTest.java
new file mode 100644
index 0000000000..3fdb2f7e84
--- /dev/null
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_Abstract_IntegTest.java
@@ -0,0 +1,82 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.extensions.pdfjs.metamodel;
+
+import lombok.val;
+
+import java.util.Collections;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.apache.causeway.applib.services.jaxb.JaxbService;
+import org.apache.causeway.applib.services.metamodel.Config;
+import org.apache.causeway.applib.services.metamodel.DomainModel;
+import org.apache.causeway.applib.services.metamodel.MetaModelService;
+import org.apache.causeway.core.config.presets.CausewayPresets;
+import org.apache.causeway.core.runtimeservices.CausewayModuleCoreRuntimeServices;
+import org.apache.causeway.security.bypass.CausewayModuleSecurityBypass;
+import org.apache.causeway.testing.integtestsupport.applib.ApprovalsOptions;
+import org.apache.causeway.testing.integtestsupport.applib.CausewayIntegrationTestAbstract;
+import org.approvaltests.Approvals;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.SpringBootConfiguration;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Import;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.context.annotation.PropertySources;
+import org.springframework.transaction.PlatformTransactionManager;
+
+public abstract class PdfjsViewer_Abstract_IntegTest extends CausewayIntegrationTestAbstract {
+
+    public abstract Class<?> getDomainModuleClass();
+
+    @Import({
+            CausewayModuleCoreRuntimeServices.class,
+            CausewayModuleSecurityBypass.class,
+            CausewayModuleCoreRuntimeServices.class,
+    })
+    @PropertySources({
+            @PropertySource(CausewayPresets.UseLog4j2Test)
+    })
+    public static class AppManifestBase {
+
+        @Bean
+        @Singleton
+        public PlatformTransactionManager platformTransactionManager() {
+            return new PlatformTransactionManagerNoop();
+        }
+    }
+
+    void dump_facets() {
+        val metamodelDto = metaModelService.exportMetaModel(
+                Config.builder()
+                        .namespacePrefixes(Collections.singleton(getDomainModuleClass().getPackageName()))
+                        .ignoreMixins(false)
+                        .build());
+        val xml = jaxbService.toXml(metamodelDto);
+
+        Approvals.verifyXml(xml, ApprovalsOptions.xmlOptions());
+    }
+
+    @Inject MetaModelService metaModelService;
+    @Inject JaxbService jaxbService;
+
+}
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
new file mode 100644
index 0000000000..7d0e038c0c
--- /dev/null
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomainWithPdfJsViewer_IntegTest.dump_facets.approved.xml
@@ -0,0 +1,1109 @@
+<?xml version="1.0" encoding="UTF-8"?><mml:metamodelDto xmlns:mml="https://causeway.apache.org/schema/metamodel">
+  <mml:domainClassDto id="org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel">
+    <mml:facets>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+        <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel#)"/>
+        <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+        <mml:attr name="originalText" value="Some View Model"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="translated" value="Some View Model"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
+        <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel#)"/>
+        <mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
+        <mml:attr name="nounForms" value="SINGULAR"/>
+        <mml:attr name="originalText.SINGULAR" value="Optional[Some View Model]"/>
+        <mml:attr name="precedence" value="SYNTHESIZED"/>
+        <mml:attr name="translated.SINGULAR" value="Optional[Some View Model]"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+        <mml:attr name="bookmarkPolicy" value="NEVER"/>
+        <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+        <mml:attr name="precedence" value="FALLBACK"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="CreatedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectCreatedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="LoadedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectLoadedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="PersistedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectPersistedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="PersistingLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectPersistingEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="RemovingLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectRemovingEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="UpdatedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectUpdatedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="UpdatingLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectUpdatingEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecoratorFacetFromConfiguration">
+        <mml:attr name="facet" value="DomainObjectLayoutTableDecoratorFacetFromConfiguration"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.grid.GridFacetDefault">
+        <mml:attr name="facet" value="GridFacetDefault"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.hidden.HiddenTypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.hidden.HiddenTypeFacetFromAuthorization">
+        <mml:attr name="facet" value="HiddenTypeFacetFromAuthorization"/>
+        <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+        <mml:attr name="precedence" value="HIGH"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.immutable.ImmutableFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.domainobject.editing.ImmutableFacetForDomainObjectAnnotationAsConfigured">
+        <mml:attr name="facet" value="ImmutableFacetForDomainObjectAnnotationAsConfigured"/>
+        <mml:attr name="interactionAdvisors" value="DisablingOrEnabling"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="reason" value="Disabled"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+        <mml:attr name="facet" value="ObjectValidPropertiesFacetImpl"/>
+        <mml:attr name="interactionAdvisors" value="Validating"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.PagedFacetFromConfiguration">
+        <mml:attr name="facet" value="PagedFacetFromConfiguration"/>
+        <mml:attr name="precedence" value="INFERRED"/>
+        <mml:attr name="value" value="25"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.publish.entitychange.EntityChangePublishingFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.domainobject.entitychangepublishing.EntityChangePublishingFacetForDomainObjectAnnotationAsConfigured">
+        <mml:attr name="facet" value="EntityChangePublishingFacetForDomainObjectAnnotationAsConfigured"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.TitleFacetNone">
+        <mml:attr name="facet" value="TitleFacetNone"/>
+        <mml:attr name="precedence" value="FALLBACK"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.viewmodel.ViewModelFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.viewmodel.ViewModelFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="ViewModelFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="LOW"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacet" fqcn="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacetImpl">
+        <mml:attr name="facet" value="AuthorizationFacetImpl"/>
+        <mml:attr name="interactionAdvisors" value="HidingOrShowing, DisablingOrEnabling"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+    </mml:facets>
+    <mml:properties>
+      <mml:prop id="pdf" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetDefault">
+            <mml:attr name="facet" value="ActionDomainEventFacetDefault"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.events.domain.ActionDomainEvent.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromDefault">
+            <mml:attr name="declaringType" value="org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel_pdf"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.events.domain.ActionDomainEvent.Default"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromDefault"/>
+            <mml:attr name="intent.prop" value="EXECUTE"/>
+            <mml:attr name="methods" value="public org.apache.causeway.applib.value.Blob org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel_pdf.prop()"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="org.apache.causeway.applib.value.Blob"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ASSOCIATION"/>
+            <mml:attr name="facet" value="PropertyAnnotationFacetFactory.2"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacetFallback">
+            <mml:attr name="facet" value="ActionPositionFacetFallback"/>
+            <mml:attr name="position" value="BELOW"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacetFallback">
+            <mml:attr name="facet" value="RedirectFacetFallback"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="facet" value="PropertyAnnotationFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel_pdf#prop())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Pdf"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Pdf"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.disabled.DisabledFacetForContributee">
+            <mml:attr name="facet" value="DisabledFacetForContributee"/>
+            <mml:attr name="interactionAdvisors" value="DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="reason" value="Contributed property"/>
+            <mml:attr name="semantics" value="DISABLED"/>
+            <mml:attr name="where" value="ANYWHERE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.navigation.NavigationFacet" fqcn="org.apache.causeway.core.metamodel.postprocessors.members.navigation.NavigationFacetFromHiddenType">
+            <mml:attr name="facet" value="NavigationFacetFromHiddenType"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacet" fqcn="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacetImpl">
+            <mml:attr name="facet" value="AuthorizationFacetImpl"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.extensions.pdfjs.metamodel.facet.PdfJsViewerFacet" fqcn="org.apache.causeway.extensions.pdfjs.metamodel.facet.PdfJsViewerFacetFromAnnotation">
+            <mml:attr name="facet" value="PdfJsViewerFacetFromAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:type>org.apache.causeway.applib.value.Blob</mml:type>
+      </mml:prop>
+    </mml:properties>
+    <mml:collections/>
+    <mml:actions>
+      <mml:act id="downloadLayout" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.mixins.layout.Object_downloadLayout.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.applib.mixins.layout.Object_downloadLayout"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.mixins.layout.Object_downloadLayout.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public java.lang.Object org.apache.causeway.applib.mixins.layout.Object_downloadLayout.act(java.lang.String,org.apache.causeway.applib.services.layout.LayoutExportStyle,org.apache.causeway.applib.value.NamedWithMimeType$CommonMimeType)"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="java.lang.Object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL_DROPDOWN"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.layout.Object_downloadLayout#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Downloads the Xxx.layout... layout file effective/inferred for this object"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Downloads the Xxx.layout... layout file effective/inferred for this object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.layout.Object_downloadLayout#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Download Layout"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Download Layout"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-download"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="700.1"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>java.lang.Object</mml:returnType>
+        <mml:params>
+          <mml:param id="fileName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="mml:scalarParam">
+            <mml:facets>
+              <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.mixins.layout.Object_downloadLayout#act())"/>
+                <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
+                <mml:attr name="originalText" value="File name extension can be omitted."/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="translated" value="File name extension can be omitted."/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation">
+                <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.layout.Object_downloadLayout#act())"/>
+                <mml:attr name="facet" value="NamedFacetForParameterLayoutAnnotation"/>
+                <mml:attr name="originalText" value="File name"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="translated" value="File name"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                <mml:attr name="facet" value="LabelAtFacetFromLayoutConfiguration"/>
+                <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.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <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"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <mml:attr name="maxLength" value="2147483647"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.multiline.MultiLineFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MultiLineFacetNone">
+                <mml:attr name="facet" value="MultiLineFacetNone"/>
+                <mml:attr name="numberOfLines" value="1"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                <mml:attr name="facet" value="ActionParameterDefaultsFacetViaMethod"/>
+                <mml:attr name="intent.default0Act" value="DEFAULTS"/>
+                <mml:attr name="methods" value="public java.lang.String org.apache.causeway.applib.mixins.layout.Object_downloadLayout.default0Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacetFromConfiguration">
+                <mml:attr name="facet" value="ParameterDependentDefaultsFacetFromConfiguration"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="value" value="UPDATE_DEPENDENT"/>
+              </mml:facet>
+            </mml:facets>
+            <mml:type>java.lang.String</mml:type>
+          </mml:param>
+          <mml:param id="style" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="mml:scalarParam">
+            <mml:facets>
+              <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.mixins.layout.Object_downloadLayout#act())"/>
+                <mml:attr name="facet" value="NamedFacetForParameterUsingReflection"/>
+                <mml:attr name="originalText" value="Style"/>
+                <mml:attr name="precedence" value="LOW"/>
+                <mml:attr name="translated" value="Style"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                <mml:attr name="facet" value="LabelAtFacetFromLayoutConfiguration"/>
+                <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.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <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"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <mml:attr name="maxLength" value="2147483647"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.multiline.MultiLineFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MultiLineFacetNone">
+                <mml:attr name="facet" value="MultiLineFacetNone"/>
+                <mml:attr name="numberOfLines" value="1"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                <mml:attr name="facet" value="ActionParameterDefaultsFacetViaMethod"/>
+                <mml:attr name="intent.default1Act" value="DEFAULTS"/>
+                <mml:attr name="methods" value="public org.apache.causeway.applib.services.layout.LayoutExportStyle org.apache.causeway.applib.mixins.layout.Object_downloadLayout.default1Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacetFromConfiguration">
+                <mml:attr name="facet" value="ParameterDependentDefaultsFacetFromConfiguration"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="value" value="UPDATE_DEPENDENT"/>
+              </mml:facet>
+            </mml:facets>
+            <mml:type>org.apache.causeway.applib.services.layout.LayoutExportStyle</mml:type>
+          </mml:param>
+          <mml:param id="format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="mml:scalarParam">
+            <mml:facets>
+              <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.mixins.layout.Object_downloadLayout#act())"/>
+                <mml:attr name="facet" value="NamedFacetForParameterUsingReflection"/>
+                <mml:attr name="originalText" value="Format"/>
+                <mml:attr name="precedence" value="LOW"/>
+                <mml:attr name="translated" value="Format"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                <mml:attr name="facet" value="LabelAtFacetFromLayoutConfiguration"/>
+                <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.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <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"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <mml:attr name="maxLength" value="2147483647"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.multiline.MultiLineFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MultiLineFacetNone">
+                <mml:attr name="facet" value="MultiLineFacetNone"/>
+                <mml:attr name="numberOfLines" value="1"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </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="SET"/>
+                <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
+                <mml:attr name="intent.choices2Act" value="CHOICES_OR_AUTOCOMPLETE"/>
+                <mml:attr name="methods" value="public java.util.Set org.apache.causeway.applib.mixins.layout.Object_downloadLayout.choices2Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                <mml:attr name="facet" value="ActionParameterDefaultsFacetViaMethod"/>
+                <mml:attr name="intent.default2Act" value="DEFAULTS"/>
+                <mml:attr name="methods" value="public org.apache.causeway.applib.value.NamedWithMimeType$CommonMimeType org.apache.causeway.applib.mixins.layout.Object_downloadLayout.default2Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacetFromConfiguration">
+                <mml:attr name="facet" value="ParameterDependentDefaultsFacetFromConfiguration"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="value" value="UPDATE_DEPENDENT"/>
+              </mml:facet>
+            </mml:facets>
+            <mml:type>org.apache.causeway.applib.value.NamedWithMimeType$CommonMimeType</mml:type>
+          </mml:param>
+        </mml:params>
+      </mml:act>
+      <mml:act id="downloadMetamodelXml" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public java.lang.Object org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml.act(java.lang.String)"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="java.lang.Object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL_DROPDOWN"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Downloads a representation of the framework's internal metamodel for this object's domain class"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Downloads a representation of the framework's internal metamodel for this object's domain class"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Download Metamodel Xml"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Download Metamodel Xml"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-download"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="700.2"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>java.lang.Object</mml:returnType>
+        <mml:params>
+          <mml:param id="fileName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="mml:scalarParam">
+            <mml:facets>
+              <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.mixins.metamodel.Object_downloadMetamodelXml#act())"/>
+                <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
+                <mml:attr name="originalText" value="File name extension can be omitted."/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="translated" value="File name extension can be omitted."/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation">
+                <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml#act())"/>
+                <mml:attr name="facet" value="NamedFacetForParameterLayoutAnnotation"/>
+                <mml:attr name="originalText" value="File name"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="translated" value="File name"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                <mml:attr name="facet" value="LabelAtFacetFromLayoutConfiguration"/>
+                <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.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <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"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <mml:attr name="maxLength" value="2147483647"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.multiline.MultiLineFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MultiLineFacetNone">
+                <mml:attr name="facet" value="MultiLineFacetNone"/>
+                <mml:attr name="numberOfLines" value="1"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                <mml:attr name="facet" value="ActionParameterDefaultsFacetViaMethod"/>
+                <mml:attr name="intent.default0Act" value="DEFAULTS"/>
+                <mml:attr name="methods" value="public java.lang.String org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml.default0Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacetFromConfiguration">
+                <mml:attr name="facet" value="ParameterDependentDefaultsFacetFromConfiguration"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="value" value="UPDATE_DEPENDENT"/>
+              </mml:facet>
+            </mml:facets>
+            <mml:type>java.lang.String</mml:type>
+          </mml:param>
+        </mml:params>
+      </mml:act>
+      <mml:act id="inspectMetamodel" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel"/>
+            <mml:attr name="eventType" value="org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public java.lang.Object org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel.act()"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="java.lang.Object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL_DROPDOWN"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Open up a view of the metamodel of this object's domain class"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Open up a view of the metamodel of this object's domain class"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Inspect Metamodel"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Inspect Metamodel"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-sitemap"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="700.2.1"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>java.lang.Object</mml:returnType>
+        <mml:params/>
+      </mml:act>
+      <mml:act id="openRestApi" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.mixins.rest.Object_openRestApi.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.applib.mixins.rest.Object_openRestApi"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.mixins.rest.Object_openRestApi.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public org.apache.causeway.applib.value.LocalResourcePath org.apache.causeway.applib.mixins.rest.Object_openRestApi.act()"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="org.apache.causeway.applib.value.LocalResourcePath"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL_DROPDOWN"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.rest.Object_openRestApi#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Opens up a view of this object as represented in the (Restful Objects) REST API"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Opens up a view of this object as represented in the (Restful Objects) REST API"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.rest.Object_openRestApi#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Open Rest Api"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Open Rest Api"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-external-link-alt"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="750.1"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>org.apache.causeway.applib.value.LocalResourcePath</mml:returnType>
+        <mml:params/>
+      </mml:act>
+      <mml:act id="rebuildMetamodel" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public java.lang.Object org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel.act()"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="java.lang.Object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="IDEMPOTENT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Rebuilds the framework's internal metamodel of this object's domain class"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Rebuilds the framework's internal metamodel of this object's domain class"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Rebuild Metamodel"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Rebuild Metamodel"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-sync"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="800.1"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>java.lang.Object</mml:returnType>
+        <mml:params/>
+      </mml:act>
+    </mml:actions>
+  </mml:domainClassDto>
+  <mml:domainClassDto id="org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel_pdf">
+    <mml:facets>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+        <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel_pdf#)"/>
+        <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+        <mml:attr name="originalText" value="Some View Model_pdf"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="translated" value="Some View Model_pdf"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+        <mml:attr name="bookmarkPolicy" value="NEVER"/>
+        <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+        <mml:attr name="precedence" value="FALLBACK"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="CreatedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectCreatedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="LoadedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectLoadedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="PersistedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectPersistedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="PersistingLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectPersistingEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="RemovingLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectRemovingEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="UpdatedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectUpdatedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="UpdatingLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectUpdatingEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecoratorFacetFromConfiguration">
+        <mml:attr name="facet" value="DomainObjectLayoutTableDecoratorFacetFromConfiguration"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.grid.GridFacetDefault">
+        <mml:attr name="facet" value="GridFacetDefault"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.hidden.HiddenTypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.hidden.HiddenTypeFacetFromAuthorization">
+        <mml:attr name="facet" value="HiddenTypeFacetFromAuthorization"/>
+        <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+        <mml:attr name="precedence" value="HIGH"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.immutable.ImmutableFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.domainobject.editing.ImmutableFacetForDomainObjectAnnotationAsConfigured">
+        <mml:attr name="facet" value="ImmutableFacetForDomainObjectAnnotationAsConfigured"/>
+        <mml:attr name="interactionAdvisors" value="DisablingOrEnabling"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.mixin.MixinFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.mixin.MixinFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="MixinFacetForDomainObjectAnnotation"/>
+        <mml:attr name="holderType" value="org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel"/>
+        <mml:attr name="mixinType" value="org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel_pdf"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="prop"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+        <mml:attr name="facet" value="ObjectValidPropertiesFacetImpl"/>
+        <mml:attr name="interactionAdvisors" value="Validating"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.PagedFacetFromConfiguration">
+        <mml:attr name="facet" value="PagedFacetFromConfiguration"/>
+        <mml:attr name="precedence" value="INFERRED"/>
+        <mml:attr name="value" value="25"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.publish.entitychange.EntityChangePublishingFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.domainobject.entitychangepublishing.EntityChangePublishingFacetForDomainObjectAnnotationAsConfigured">
+        <mml:attr name="facet" value="EntityChangePublishingFacetForDomainObjectAnnotationAsConfigured"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.TitleFacetNone">
+        <mml:attr name="facet" value="TitleFacetNone"/>
+        <mml:attr name="precedence" value="FALLBACK"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacet" fqcn="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacetImpl">
+        <mml:attr name="facet" value="AuthorizationFacetImpl"/>
+        <mml:attr name="interactionAdvisors" value="HidingOrShowing, DisablingOrEnabling"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+    </mml:facets>
+    <mml:properties/>
+    <mml:collections/>
+    <mml:actions>
+      <mml:act id="prop" mixedIn="false">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetDefault">
+            <mml:attr name="facet" value="ActionDomainEventFacetDefault"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.events.domain.ActionDomainEvent.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromDefault">
+            <mml:attr name="declaringType" value="org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel_pdf"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.events.domain.ActionDomainEvent.Default"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromDefault"/>
+            <mml:attr name="intent.prop" value="EXECUTE"/>
+            <mml:attr name="methods" value="public org.apache.causeway.applib.value.Blob org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel_pdf.prop()"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="org.apache.causeway.applib.value.Blob"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ASSOCIATION"/>
+            <mml:attr name="facet" value="PropertyAnnotationFacetFactory.2"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacetFallback">
+            <mml:attr name="facet" value="ActionPositionFacetFallback"/>
+            <mml:attr name="position" value="BELOW"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacetFallback">
+            <mml:attr name="facet" value="RedirectFacetFallback"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="facet" value="PropertyAnnotationFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel_pdf#prop())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Pdf"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Pdf"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.disabled.DisabledFacetForContributee">
+            <mml:attr name="facet" value="DisabledFacetForContributee"/>
+            <mml:attr name="interactionAdvisors" value="DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="reason" value="Contributed property"/>
+            <mml:attr name="semantics" value="DISABLED"/>
+            <mml:attr name="where" value="ANYWHERE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.navigation.NavigationFacet" fqcn="org.apache.causeway.core.metamodel.postprocessors.members.navigation.NavigationFacetFromHiddenType">
+            <mml:attr name="facet" value="NavigationFacetFromHiddenType"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacet" fqcn="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacetImpl">
+            <mml:attr name="facet" value="AuthorizationFacetImpl"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.extensions.pdfjs.metamodel.facet.PdfJsViewerFacet" fqcn="org.apache.causeway.extensions.pdfjs.metamodel.facet.PdfJsViewerFacetFromAnnotation">
+            <mml:attr name="facet" value="PdfJsViewerFacetFromAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>org.apache.causeway.applib.value.Blob</mml:returnType>
+        <mml:params/>
+      </mml:act>
+    </mml:actions>
+  </mml:domainClassDto>
+</mml:metamodelDto>
\ No newline at end of file
diff --git a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomainWithPdfJsViewer_IntegTest.java b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomainWithPdfJsViewer_IntegTest.java
new file mode 100644
index 0000000000..30bfb3c40a
--- /dev/null
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomainWithPdfJsViewer_IntegTest.java
@@ -0,0 +1,60 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.extensions.pdfjs.metamodel;
+
+import org.apache.causeway.extensions.pdfjs.applib.spi.PdfJsViewerAdvisor;
+import org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.MixinDomain;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.SpringBootConfiguration;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Import;
+import org.springframework.test.context.ActiveProfiles;
+
+@SpringBootTest(
+        classes = {PdfjsViewer_MixinDomainWithPdfJsViewer_IntegTest.AppManifest.class},
+        properties = {
+                "causeway.core.meta-model.introspector.mode=FULL",
+        }
+)
+@ActiveProfiles("test")
+public class PdfjsViewer_MixinDomainWithPdfJsViewer_IntegTest extends PdfjsViewer_Abstract_IntegTest {
+
+    @SpringBootConfiguration
+    @EnableAutoConfiguration
+    @Import({
+            AppManifestBase.class,
+            MixinDomain.class,
+            CausewayModuleExtPdfjsMetaModel.class,
+    })
+    @ComponentScan(basePackageClasses = {MixinDomain.class})
+    public static class AppManifest {
+    }
+
+    @Override
+    public Class<?> getDomainModuleClass() {
+        return MixinDomain.class;
+    }
+
+    @Test
+    void dump_facets() {
+        super.dump_facets();
+    }
+}
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
new file mode 100644
index 0000000000..aa12d43e6c
--- /dev/null
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomain_IntegTest.dump_facets.approved.xml
@@ -0,0 +1,1101 @@
+<?xml version="1.0" encoding="UTF-8"?><mml:metamodelDto xmlns:mml="https://causeway.apache.org/schema/metamodel">
+  <mml:domainClassDto id="org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel">
+    <mml:facets>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+        <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel#)"/>
+        <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+        <mml:attr name="originalText" value="Some View Model"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="translated" value="Some View Model"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
+        <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel#)"/>
+        <mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
+        <mml:attr name="nounForms" value="SINGULAR"/>
+        <mml:attr name="originalText.SINGULAR" value="Optional[Some View Model]"/>
+        <mml:attr name="precedence" value="SYNTHESIZED"/>
+        <mml:attr name="translated.SINGULAR" value="Optional[Some View Model]"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+        <mml:attr name="bookmarkPolicy" value="NEVER"/>
+        <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+        <mml:attr name="precedence" value="FALLBACK"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="CreatedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectCreatedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="LoadedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectLoadedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="PersistedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectPersistedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="PersistingLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectPersistingEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="RemovingLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectRemovingEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="UpdatedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectUpdatedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="UpdatingLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectUpdatingEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecoratorFacetFromConfiguration">
+        <mml:attr name="facet" value="DomainObjectLayoutTableDecoratorFacetFromConfiguration"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.grid.GridFacetDefault">
+        <mml:attr name="facet" value="GridFacetDefault"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.hidden.HiddenTypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.hidden.HiddenTypeFacetFromAuthorization">
+        <mml:attr name="facet" value="HiddenTypeFacetFromAuthorization"/>
+        <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+        <mml:attr name="precedence" value="HIGH"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.immutable.ImmutableFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.domainobject.editing.ImmutableFacetForDomainObjectAnnotationAsConfigured">
+        <mml:attr name="facet" value="ImmutableFacetForDomainObjectAnnotationAsConfigured"/>
+        <mml:attr name="interactionAdvisors" value="DisablingOrEnabling"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="reason" value="Disabled"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+        <mml:attr name="facet" value="ObjectValidPropertiesFacetImpl"/>
+        <mml:attr name="interactionAdvisors" value="Validating"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.PagedFacetFromConfiguration">
+        <mml:attr name="facet" value="PagedFacetFromConfiguration"/>
+        <mml:attr name="precedence" value="INFERRED"/>
+        <mml:attr name="value" value="25"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.publish.entitychange.EntityChangePublishingFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.domainobject.entitychangepublishing.EntityChangePublishingFacetForDomainObjectAnnotationAsConfigured">
+        <mml:attr name="facet" value="EntityChangePublishingFacetForDomainObjectAnnotationAsConfigured"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.TitleFacetNone">
+        <mml:attr name="facet" value="TitleFacetNone"/>
+        <mml:attr name="precedence" value="FALLBACK"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.viewmodel.ViewModelFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.viewmodel.ViewModelFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="ViewModelFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="LOW"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacet" fqcn="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacetImpl">
+        <mml:attr name="facet" value="AuthorizationFacetImpl"/>
+        <mml:attr name="interactionAdvisors" value="HidingOrShowing, DisablingOrEnabling"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+    </mml:facets>
+    <mml:properties>
+      <mml:prop id="pdf" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetDefault">
+            <mml:attr name="facet" value="ActionDomainEventFacetDefault"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.events.domain.ActionDomainEvent.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromDefault">
+            <mml:attr name="declaringType" value="org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel_pdf"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.events.domain.ActionDomainEvent.Default"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromDefault"/>
+            <mml:attr name="intent.prop" value="EXECUTE"/>
+            <mml:attr name="methods" value="public org.apache.causeway.applib.value.Blob org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel_pdf.prop()"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="org.apache.causeway.applib.value.Blob"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ASSOCIATION"/>
+            <mml:attr name="facet" value="PropertyAnnotationFacetFactory.2"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacetFallback">
+            <mml:attr name="facet" value="ActionPositionFacetFallback"/>
+            <mml:attr name="position" value="BELOW"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacetFallback">
+            <mml:attr name="facet" value="RedirectFacetFallback"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="facet" value="PropertyAnnotationFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel_pdf#prop())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Pdf"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Pdf"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.disabled.DisabledFacetForContributee">
+            <mml:attr name="facet" value="DisabledFacetForContributee"/>
+            <mml:attr name="interactionAdvisors" value="DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="reason" value="Contributed property"/>
+            <mml:attr name="semantics" value="DISABLED"/>
+            <mml:attr name="where" value="ANYWHERE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.navigation.NavigationFacet" fqcn="org.apache.causeway.core.metamodel.postprocessors.members.navigation.NavigationFacetFromHiddenType">
+            <mml:attr name="facet" value="NavigationFacetFromHiddenType"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacet" fqcn="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacetImpl">
+            <mml:attr name="facet" value="AuthorizationFacetImpl"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:type>org.apache.causeway.applib.value.Blob</mml:type>
+      </mml:prop>
+    </mml:properties>
+    <mml:collections/>
+    <mml:actions>
+      <mml:act id="downloadLayout" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.mixins.layout.Object_downloadLayout.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.applib.mixins.layout.Object_downloadLayout"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.mixins.layout.Object_downloadLayout.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public java.lang.Object org.apache.causeway.applib.mixins.layout.Object_downloadLayout.act(java.lang.String,org.apache.causeway.applib.services.layout.LayoutExportStyle,org.apache.causeway.applib.value.NamedWithMimeType$CommonMimeType)"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="java.lang.Object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL_DROPDOWN"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.layout.Object_downloadLayout#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Downloads the Xxx.layout... layout file effective/inferred for this object"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Downloads the Xxx.layout... layout file effective/inferred for this object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.layout.Object_downloadLayout#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Download Layout"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Download Layout"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-download"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="700.1"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>java.lang.Object</mml:returnType>
+        <mml:params>
+          <mml:param id="fileName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="mml:scalarParam">
+            <mml:facets>
+              <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.mixins.layout.Object_downloadLayout#act())"/>
+                <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
+                <mml:attr name="originalText" value="File name extension can be omitted."/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="translated" value="File name extension can be omitted."/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation">
+                <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.layout.Object_downloadLayout#act())"/>
+                <mml:attr name="facet" value="NamedFacetForParameterLayoutAnnotation"/>
+                <mml:attr name="originalText" value="File name"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="translated" value="File name"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                <mml:attr name="facet" value="LabelAtFacetFromLayoutConfiguration"/>
+                <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.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <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"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <mml:attr name="maxLength" value="2147483647"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.multiline.MultiLineFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MultiLineFacetNone">
+                <mml:attr name="facet" value="MultiLineFacetNone"/>
+                <mml:attr name="numberOfLines" value="1"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                <mml:attr name="facet" value="ActionParameterDefaultsFacetViaMethod"/>
+                <mml:attr name="intent.default0Act" value="DEFAULTS"/>
+                <mml:attr name="methods" value="public java.lang.String org.apache.causeway.applib.mixins.layout.Object_downloadLayout.default0Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacetFromConfiguration">
+                <mml:attr name="facet" value="ParameterDependentDefaultsFacetFromConfiguration"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="value" value="UPDATE_DEPENDENT"/>
+              </mml:facet>
+            </mml:facets>
+            <mml:type>java.lang.String</mml:type>
+          </mml:param>
+          <mml:param id="style" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="mml:scalarParam">
+            <mml:facets>
+              <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.mixins.layout.Object_downloadLayout#act())"/>
+                <mml:attr name="facet" value="NamedFacetForParameterUsingReflection"/>
+                <mml:attr name="originalText" value="Style"/>
+                <mml:attr name="precedence" value="LOW"/>
+                <mml:attr name="translated" value="Style"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                <mml:attr name="facet" value="LabelAtFacetFromLayoutConfiguration"/>
+                <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.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <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"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <mml:attr name="maxLength" value="2147483647"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.multiline.MultiLineFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MultiLineFacetNone">
+                <mml:attr name="facet" value="MultiLineFacetNone"/>
+                <mml:attr name="numberOfLines" value="1"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                <mml:attr name="facet" value="ActionParameterDefaultsFacetViaMethod"/>
+                <mml:attr name="intent.default1Act" value="DEFAULTS"/>
+                <mml:attr name="methods" value="public org.apache.causeway.applib.services.layout.LayoutExportStyle org.apache.causeway.applib.mixins.layout.Object_downloadLayout.default1Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacetFromConfiguration">
+                <mml:attr name="facet" value="ParameterDependentDefaultsFacetFromConfiguration"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="value" value="UPDATE_DEPENDENT"/>
+              </mml:facet>
+            </mml:facets>
+            <mml:type>org.apache.causeway.applib.services.layout.LayoutExportStyle</mml:type>
+          </mml:param>
+          <mml:param id="format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="mml:scalarParam">
+            <mml:facets>
+              <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.mixins.layout.Object_downloadLayout#act())"/>
+                <mml:attr name="facet" value="NamedFacetForParameterUsingReflection"/>
+                <mml:attr name="originalText" value="Format"/>
+                <mml:attr name="precedence" value="LOW"/>
+                <mml:attr name="translated" value="Format"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                <mml:attr name="facet" value="LabelAtFacetFromLayoutConfiguration"/>
+                <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.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <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"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <mml:attr name="maxLength" value="2147483647"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.multiline.MultiLineFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MultiLineFacetNone">
+                <mml:attr name="facet" value="MultiLineFacetNone"/>
+                <mml:attr name="numberOfLines" value="1"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </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="SET"/>
+                <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
+                <mml:attr name="intent.choices2Act" value="CHOICES_OR_AUTOCOMPLETE"/>
+                <mml:attr name="methods" value="public java.util.Set org.apache.causeway.applib.mixins.layout.Object_downloadLayout.choices2Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                <mml:attr name="facet" value="ActionParameterDefaultsFacetViaMethod"/>
+                <mml:attr name="intent.default2Act" value="DEFAULTS"/>
+                <mml:attr name="methods" value="public org.apache.causeway.applib.value.NamedWithMimeType$CommonMimeType org.apache.causeway.applib.mixins.layout.Object_downloadLayout.default2Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacetFromConfiguration">
+                <mml:attr name="facet" value="ParameterDependentDefaultsFacetFromConfiguration"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="value" value="UPDATE_DEPENDENT"/>
+              </mml:facet>
+            </mml:facets>
+            <mml:type>org.apache.causeway.applib.value.NamedWithMimeType$CommonMimeType</mml:type>
+          </mml:param>
+        </mml:params>
+      </mml:act>
+      <mml:act id="downloadMetamodelXml" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public java.lang.Object org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml.act(java.lang.String)"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="java.lang.Object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL_DROPDOWN"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Downloads a representation of the framework's internal metamodel for this object's domain class"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Downloads a representation of the framework's internal metamodel for this object's domain class"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Download Metamodel Xml"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Download Metamodel Xml"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-download"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="700.2"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>java.lang.Object</mml:returnType>
+        <mml:params>
+          <mml:param id="fileName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="mml:scalarParam">
+            <mml:facets>
+              <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.mixins.metamodel.Object_downloadMetamodelXml#act())"/>
+                <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
+                <mml:attr name="originalText" value="File name extension can be omitted."/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="translated" value="File name extension can be omitted."/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation">
+                <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml#act())"/>
+                <mml:attr name="facet" value="NamedFacetForParameterLayoutAnnotation"/>
+                <mml:attr name="originalText" value="File name"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="translated" value="File name"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                <mml:attr name="facet" value="LabelAtFacetFromLayoutConfiguration"/>
+                <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.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <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"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <mml:attr name="maxLength" value="2147483647"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.multiline.MultiLineFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MultiLineFacetNone">
+                <mml:attr name="facet" value="MultiLineFacetNone"/>
+                <mml:attr name="numberOfLines" value="1"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                <mml:attr name="facet" value="ActionParameterDefaultsFacetViaMethod"/>
+                <mml:attr name="intent.default0Act" value="DEFAULTS"/>
+                <mml:attr name="methods" value="public java.lang.String org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml.default0Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacetFromConfiguration">
+                <mml:attr name="facet" value="ParameterDependentDefaultsFacetFromConfiguration"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="value" value="UPDATE_DEPENDENT"/>
+              </mml:facet>
+            </mml:facets>
+            <mml:type>java.lang.String</mml:type>
+          </mml:param>
+        </mml:params>
+      </mml:act>
+      <mml:act id="inspectMetamodel" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel"/>
+            <mml:attr name="eventType" value="org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public java.lang.Object org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel.act()"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="java.lang.Object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL_DROPDOWN"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Open up a view of the metamodel of this object's domain class"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Open up a view of the metamodel of this object's domain class"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Inspect Metamodel"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Inspect Metamodel"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-sitemap"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="700.2.1"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>java.lang.Object</mml:returnType>
+        <mml:params/>
+      </mml:act>
+      <mml:act id="openRestApi" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.mixins.rest.Object_openRestApi.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.applib.mixins.rest.Object_openRestApi"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.mixins.rest.Object_openRestApi.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public org.apache.causeway.applib.value.LocalResourcePath org.apache.causeway.applib.mixins.rest.Object_openRestApi.act()"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="org.apache.causeway.applib.value.LocalResourcePath"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL_DROPDOWN"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.rest.Object_openRestApi#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Opens up a view of this object as represented in the (Restful Objects) REST API"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Opens up a view of this object as represented in the (Restful Objects) REST API"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.rest.Object_openRestApi#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Open Rest Api"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Open Rest Api"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-external-link-alt"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="750.1"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>org.apache.causeway.applib.value.LocalResourcePath</mml:returnType>
+        <mml:params/>
+      </mml:act>
+      <mml:act id="rebuildMetamodel" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public java.lang.Object org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel.act()"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="java.lang.Object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="IDEMPOTENT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Rebuilds the framework's internal metamodel of this object's domain class"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Rebuilds the framework's internal metamodel of this object's domain class"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Rebuild Metamodel"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Rebuild Metamodel"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-sync"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="800.1"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>java.lang.Object</mml:returnType>
+        <mml:params/>
+      </mml:act>
+    </mml:actions>
+  </mml:domainClassDto>
+  <mml:domainClassDto id="org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel_pdf">
+    <mml:facets>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+        <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel_pdf#)"/>
+        <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+        <mml:attr name="originalText" value="Some View Model_pdf"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="translated" value="Some View Model_pdf"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+        <mml:attr name="bookmarkPolicy" value="NEVER"/>
+        <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+        <mml:attr name="precedence" value="FALLBACK"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="CreatedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectCreatedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="LoadedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectLoadedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="PersistedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectPersistedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="PersistingLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectPersistingEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="RemovingLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectRemovingEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="UpdatedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectUpdatedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="UpdatingLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectUpdatingEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecoratorFacetFromConfiguration">
+        <mml:attr name="facet" value="DomainObjectLayoutTableDecoratorFacetFromConfiguration"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.grid.GridFacetDefault">
+        <mml:attr name="facet" value="GridFacetDefault"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.hidden.HiddenTypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.hidden.HiddenTypeFacetFromAuthorization">
+        <mml:attr name="facet" value="HiddenTypeFacetFromAuthorization"/>
+        <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+        <mml:attr name="precedence" value="HIGH"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.immutable.ImmutableFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.domainobject.editing.ImmutableFacetForDomainObjectAnnotationAsConfigured">
+        <mml:attr name="facet" value="ImmutableFacetForDomainObjectAnnotationAsConfigured"/>
+        <mml:attr name="interactionAdvisors" value="DisablingOrEnabling"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.mixin.MixinFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.mixin.MixinFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="MixinFacetForDomainObjectAnnotation"/>
+        <mml:attr name="holderType" value="org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel"/>
+        <mml:attr name="mixinType" value="org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel_pdf"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="prop"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+        <mml:attr name="facet" value="ObjectValidPropertiesFacetImpl"/>
+        <mml:attr name="interactionAdvisors" value="Validating"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.PagedFacetFromConfiguration">
+        <mml:attr name="facet" value="PagedFacetFromConfiguration"/>
+        <mml:attr name="precedence" value="INFERRED"/>
+        <mml:attr name="value" value="25"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.publish.entitychange.EntityChangePublishingFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.domainobject.entitychangepublishing.EntityChangePublishingFacetForDomainObjectAnnotationAsConfigured">
+        <mml:attr name="facet" value="EntityChangePublishingFacetForDomainObjectAnnotationAsConfigured"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.TitleFacetNone">
+        <mml:attr name="facet" value="TitleFacetNone"/>
+        <mml:attr name="precedence" value="FALLBACK"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacet" fqcn="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacetImpl">
+        <mml:attr name="facet" value="AuthorizationFacetImpl"/>
+        <mml:attr name="interactionAdvisors" value="HidingOrShowing, DisablingOrEnabling"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+    </mml:facets>
+    <mml:properties/>
+    <mml:collections/>
+    <mml:actions>
+      <mml:act id="prop" mixedIn="false">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetDefault">
+            <mml:attr name="facet" value="ActionDomainEventFacetDefault"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.events.domain.ActionDomainEvent.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromDefault">
+            <mml:attr name="declaringType" value="org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel_pdf"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.events.domain.ActionDomainEvent.Default"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromDefault"/>
+            <mml:attr name="intent.prop" value="EXECUTE"/>
+            <mml:attr name="methods" value="public org.apache.causeway.applib.value.Blob org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel_pdf.prop()"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="org.apache.causeway.applib.value.Blob"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ASSOCIATION"/>
+            <mml:attr name="facet" value="PropertyAnnotationFacetFactory.2"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacetFallback">
+            <mml:attr name="facet" value="ActionPositionFacetFallback"/>
+            <mml:attr name="position" value="BELOW"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacetFallback">
+            <mml:attr name="facet" value="RedirectFacetFallback"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+            <mml:attr name="facet" value="PropertyAnnotationFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.SomeViewModel_pdf#prop())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Pdf"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Pdf"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.disabled.DisabledFacetForContributee">
+            <mml:attr name="facet" value="DisabledFacetForContributee"/>
+            <mml:attr name="interactionAdvisors" value="DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="reason" value="Contributed property"/>
+            <mml:attr name="semantics" value="DISABLED"/>
+            <mml:attr name="where" value="ANYWHERE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.navigation.NavigationFacet" fqcn="org.apache.causeway.core.metamodel.postprocessors.members.navigation.NavigationFacetFromHiddenType">
+            <mml:attr name="facet" value="NavigationFacetFromHiddenType"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacet" fqcn="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacetImpl">
+            <mml:attr name="facet" value="AuthorizationFacetImpl"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>org.apache.causeway.applib.value.Blob</mml:returnType>
+        <mml:params/>
+      </mml:act>
+    </mml:actions>
+  </mml:domainClassDto>
+</mml:metamodelDto>
\ No newline at end of file
diff --git a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomain_IntegTest.java b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomain_IntegTest.java
new file mode 100644
index 0000000000..ae3416f245
--- /dev/null
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_MixinDomain_IntegTest.java
@@ -0,0 +1,58 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.extensions.pdfjs.metamodel;
+
+import org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.MixinDomain;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.SpringBootConfiguration;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Import;
+import org.springframework.test.context.ActiveProfiles;
+
+@SpringBootTest(
+        classes = {PdfjsViewer_MixinDomain_IntegTest.AppManifest.class},
+        properties = {
+                "causeway.core.meta-model.introspector.mode=FULL",
+        }
+)
+@ActiveProfiles("test")
+public class PdfjsViewer_MixinDomain_IntegTest extends PdfjsViewer_Abstract_IntegTest {
+
+    @SpringBootConfiguration
+    @EnableAutoConfiguration
+    @Import({
+            AppManifestBase.class,
+            MixinDomain.class,
+    })
+    @ComponentScan(basePackageClasses = {MixinDomain.class})
+    public static class AppManifest {
+    }
+
+    @Override
+    public Class<?> getDomainModuleClass() {
+        return MixinDomain.class;
+    }
+
+    @Test
+    void dump_facets() {
+        super.dump_facets();
+    }
+}
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
new file mode 100644
index 0000000000..e9c1a4a701
--- /dev/null
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomainWithPdfjsViewer_IntegTest.dump_facets.approved.xml
@@ -0,0 +1,910 @@
+<?xml version="1.0" encoding="UTF-8"?><mml:metamodelDto xmlns:mml="https://causeway.apache.org/schema/metamodel">
+  <mml:domainClassDto id="org.apache.causeway.extensions.pdfjs.metamodel.domains.prop.SomeViewModel">
+    <mml:facets>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+        <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.extensions.pdfjs.metamodel.domains.prop.SomeViewModel#)"/>
+        <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+        <mml:attr name="originalText" value="Some View Model"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="translated" value="Some View Model"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
+        <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.extensions.pdfjs.metamodel.domains.prop.SomeViewModel#)"/>
+        <mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
+        <mml:attr name="nounForms" value="SINGULAR"/>
+        <mml:attr name="originalText.SINGULAR" value="Optional[Some View Model]"/>
+        <mml:attr name="precedence" value="SYNTHESIZED"/>
+        <mml:attr name="translated.SINGULAR" value="Optional[Some View Model]"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+        <mml:attr name="bookmarkPolicy" value="NEVER"/>
+        <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+        <mml:attr name="precedence" value="FALLBACK"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="CreatedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectCreatedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="LoadedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectLoadedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="PersistedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectPersistedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="PersistingLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectPersistingEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="RemovingLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectRemovingEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="UpdatedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectUpdatedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="UpdatingLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectUpdatingEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecoratorFacetFromConfiguration">
+        <mml:attr name="facet" value="DomainObjectLayoutTableDecoratorFacetFromConfiguration"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.grid.GridFacetDefault">
+        <mml:attr name="facet" value="GridFacetDefault"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.hidden.HiddenTypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.hidden.HiddenTypeFacetFromAuthorization">
+        <mml:attr name="facet" value="HiddenTypeFacetFromAuthorization"/>
+        <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+        <mml:attr name="precedence" value="HIGH"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.immutable.ImmutableFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.domainobject.editing.ImmutableFacetForDomainObjectAnnotationAsConfigured">
+        <mml:attr name="facet" value="ImmutableFacetForDomainObjectAnnotationAsConfigured"/>
+        <mml:attr name="interactionAdvisors" value="DisablingOrEnabling"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="reason" value="Disabled"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+        <mml:attr name="facet" value="ObjectValidPropertiesFacetImpl"/>
+        <mml:attr name="interactionAdvisors" value="Validating"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.PagedFacetFromConfiguration">
+        <mml:attr name="facet" value="PagedFacetFromConfiguration"/>
+        <mml:attr name="precedence" value="INFERRED"/>
+        <mml:attr name="value" value="25"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.publish.entitychange.EntityChangePublishingFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.domainobject.entitychangepublishing.EntityChangePublishingFacetForDomainObjectAnnotationAsConfigured">
+        <mml:attr name="facet" value="EntityChangePublishingFacetForDomainObjectAnnotationAsConfigured"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.TitleFacetNone">
+        <mml:attr name="facet" value="TitleFacetNone"/>
+        <mml:attr name="precedence" value="FALLBACK"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.viewmodel.ViewModelFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.viewmodel.ViewModelFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="ViewModelFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="LOW"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacet" fqcn="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacetImpl">
+        <mml:attr name="facet" value="AuthorizationFacetImpl"/>
+        <mml:attr name="interactionAdvisors" value="HidingOrShowing, DisablingOrEnabling"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+    </mml:facets>
+    <mml:properties>
+      <mml:prop id="pdf" mixedIn="false">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.NamedFacetFallbackFromMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.extensions.pdfjs.metamodel.domains.prop.SomeViewModel#pdf)"/>
+            <mml:attr name="facet" value="NamedFacetFallbackFromMemberName"/>
+            <mml:attr name="originalText" value="Pdf"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+            <mml:attr name="translated" value="Pdf"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.causeway.core.metamodel.facets.properties.disabled.inferred.DisabledFacetOnPropertyFromMissingSetter">
+            <mml:attr name="facet" value="DisabledFacetOnPropertyFromMissingSetter"/>
+            <mml:attr name="interactionAdvisors" value="DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="reason" value="Always disabled"/>
+            <mml:attr name="semantics" value="DISABLED"/>
+            <mml:attr name="where" value="ANYWHERE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.navigation.NavigationFacet" fqcn="org.apache.causeway.core.metamodel.postprocessors.members.navigation.NavigationFacetFromHiddenType">
+            <mml:attr name="facet" value="NavigationFacetFromHiddenType"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+            <mml:attr name="facet" value="LabelAtFacetFromLayoutConfiguration"/>
+            <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.objectvalue.mandatory.MandatoryFacetDefault">
+            <mml:attr name="facet" value="MandatoryFacetDefault"/>
+            <mml:attr name="interactionAdvisors" value="Validating"/>
+            <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"/>
+            <mml:attr name="interactionAdvisors" value="Validating"/>
+            <mml:attr name="maxLength" value="2147483647"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.multiline.MultiLineFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MultiLineFacetNone">
+            <mml:attr name="facet" value="MultiLineFacetNone"/>
+            <mml:attr name="numberOfLines" value="1"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet" fqcn="org.apache.causeway.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor">
+            <mml:attr name="declaringType" value="org.apache.causeway.extensions.pdfjs.metamodel.domains.prop.SomeViewModel"/>
+            <mml:attr name="facet" value="PropertyAccessorFacetViaAccessor"/>
+            <mml:attr name="intent.getPdf" value="ACCESSOR"/>
+            <mml:attr name="methods" value="public org.apache.causeway.applib.value.Blob org.apache.causeway.extensions.pdfjs.metamodel.domains.prop.SomeViewModel.getPdf()"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.propcoll.memserexcl.SnapshotExcludeFacet" fqcn="org.apache.causeway.core.metamodel.facets.properties.update.SnapshotExcludeFacetFromImmutableMember">
+            <mml:attr name="facet" value="SnapshotExcludeFacetFromImmutableMember"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.properties.property.modify.PropertyDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.properties.property.modify.PropertyDomainEventFacetDefault">
+            <mml:attr name="facet" value="PropertyDomainEventFacetDefault"/>
+            <mml:attr name="getterFacet" value="org.apache.causeway.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.events.domain.PropertyDomainEvent.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.properties.validating.PropertyValidateFacet" fqcn="org.apache.causeway.core.metamodel.facets.properties.validating.dflt.PropertyValidateFacetDefault">
+            <mml:attr name="facet" value="PropertyValidateFacetDefault"/>
+            <mml:attr name="interactionAdvisors" value="Validating"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacet" fqcn="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacetImpl">
+            <mml:attr name="facet" value="AuthorizationFacetImpl"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.extensions.pdfjs.metamodel.facet.PdfJsViewerFacet" fqcn="org.apache.causeway.extensions.pdfjs.metamodel.facet.PdfJsViewerFacetFromAnnotation">
+            <mml:attr name="facet" value="PdfJsViewerFacetFromAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:type>org.apache.causeway.applib.value.Blob</mml:type>
+      </mml:prop>
+    </mml:properties>
+    <mml:collections/>
+    <mml:actions>
+      <mml:act id="downloadLayout" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.mixins.layout.Object_downloadLayout.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.applib.mixins.layout.Object_downloadLayout"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.mixins.layout.Object_downloadLayout.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public java.lang.Object org.apache.causeway.applib.mixins.layout.Object_downloadLayout.act(java.lang.String,org.apache.causeway.applib.services.layout.LayoutExportStyle,org.apache.causeway.applib.value.NamedWithMimeType$CommonMimeType)"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="java.lang.Object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL_DROPDOWN"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.layout.Object_downloadLayout#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Downloads the Xxx.layout... layout file effective/inferred for this object"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Downloads the Xxx.layout... layout file effective/inferred for this object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.layout.Object_downloadLayout#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Download Layout"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Download Layout"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-download"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="700.1"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>java.lang.Object</mml:returnType>
+        <mml:params>
+          <mml:param id="fileName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="mml:scalarParam">
+            <mml:facets>
+              <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.mixins.layout.Object_downloadLayout#act())"/>
+                <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
+                <mml:attr name="originalText" value="File name extension can be omitted."/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="translated" value="File name extension can be omitted."/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation">
+                <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.layout.Object_downloadLayout#act())"/>
+                <mml:attr name="facet" value="NamedFacetForParameterLayoutAnnotation"/>
+                <mml:attr name="originalText" value="File name"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="translated" value="File name"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                <mml:attr name="facet" value="LabelAtFacetFromLayoutConfiguration"/>
+                <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.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <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"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <mml:attr name="maxLength" value="2147483647"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.multiline.MultiLineFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MultiLineFacetNone">
+                <mml:attr name="facet" value="MultiLineFacetNone"/>
+                <mml:attr name="numberOfLines" value="1"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                <mml:attr name="facet" value="ActionParameterDefaultsFacetViaMethod"/>
+                <mml:attr name="intent.default0Act" value="DEFAULTS"/>
+                <mml:attr name="methods" value="public java.lang.String org.apache.causeway.applib.mixins.layout.Object_downloadLayout.default0Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacetFromConfiguration">
+                <mml:attr name="facet" value="ParameterDependentDefaultsFacetFromConfiguration"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="value" value="UPDATE_DEPENDENT"/>
+              </mml:facet>
+            </mml:facets>
+            <mml:type>java.lang.String</mml:type>
+          </mml:param>
+          <mml:param id="style" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="mml:scalarParam">
+            <mml:facets>
+              <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.mixins.layout.Object_downloadLayout#act())"/>
+                <mml:attr name="facet" value="NamedFacetForParameterUsingReflection"/>
+                <mml:attr name="originalText" value="Style"/>
+                <mml:attr name="precedence" value="LOW"/>
+                <mml:attr name="translated" value="Style"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                <mml:attr name="facet" value="LabelAtFacetFromLayoutConfiguration"/>
+                <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.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <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"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <mml:attr name="maxLength" value="2147483647"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.multiline.MultiLineFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MultiLineFacetNone">
+                <mml:attr name="facet" value="MultiLineFacetNone"/>
+                <mml:attr name="numberOfLines" value="1"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                <mml:attr name="facet" value="ActionParameterDefaultsFacetViaMethod"/>
+                <mml:attr name="intent.default1Act" value="DEFAULTS"/>
+                <mml:attr name="methods" value="public org.apache.causeway.applib.services.layout.LayoutExportStyle org.apache.causeway.applib.mixins.layout.Object_downloadLayout.default1Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacetFromConfiguration">
+                <mml:attr name="facet" value="ParameterDependentDefaultsFacetFromConfiguration"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="value" value="UPDATE_DEPENDENT"/>
+              </mml:facet>
+            </mml:facets>
+            <mml:type>org.apache.causeway.applib.services.layout.LayoutExportStyle</mml:type>
+          </mml:param>
+          <mml:param id="format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="mml:scalarParam">
+            <mml:facets>
+              <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.mixins.layout.Object_downloadLayout#act())"/>
+                <mml:attr name="facet" value="NamedFacetForParameterUsingReflection"/>
+                <mml:attr name="originalText" value="Format"/>
+                <mml:attr name="precedence" value="LOW"/>
+                <mml:attr name="translated" value="Format"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                <mml:attr name="facet" value="LabelAtFacetFromLayoutConfiguration"/>
+                <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.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <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"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <mml:attr name="maxLength" value="2147483647"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.multiline.MultiLineFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MultiLineFacetNone">
+                <mml:attr name="facet" value="MultiLineFacetNone"/>
+                <mml:attr name="numberOfLines" value="1"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </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="SET"/>
+                <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
+                <mml:attr name="intent.choices2Act" value="CHOICES_OR_AUTOCOMPLETE"/>
+                <mml:attr name="methods" value="public java.util.Set org.apache.causeway.applib.mixins.layout.Object_downloadLayout.choices2Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                <mml:attr name="facet" value="ActionParameterDefaultsFacetViaMethod"/>
+                <mml:attr name="intent.default2Act" value="DEFAULTS"/>
+                <mml:attr name="methods" value="public org.apache.causeway.applib.value.NamedWithMimeType$CommonMimeType org.apache.causeway.applib.mixins.layout.Object_downloadLayout.default2Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacetFromConfiguration">
+                <mml:attr name="facet" value="ParameterDependentDefaultsFacetFromConfiguration"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="value" value="UPDATE_DEPENDENT"/>
+              </mml:facet>
+            </mml:facets>
+            <mml:type>org.apache.causeway.applib.value.NamedWithMimeType$CommonMimeType</mml:type>
+          </mml:param>
+        </mml:params>
+      </mml:act>
+      <mml:act id="downloadMetamodelXml" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public java.lang.Object org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml.act(java.lang.String)"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="java.lang.Object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL_DROPDOWN"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Downloads a representation of the framework's internal metamodel for this object's domain class"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Downloads a representation of the framework's internal metamodel for this object's domain class"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Download Metamodel Xml"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Download Metamodel Xml"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-download"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="700.2"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>java.lang.Object</mml:returnType>
+        <mml:params>
+          <mml:param id="fileName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="mml:scalarParam">
+            <mml:facets>
+              <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.mixins.metamodel.Object_downloadMetamodelXml#act())"/>
+                <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
+                <mml:attr name="originalText" value="File name extension can be omitted."/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="translated" value="File name extension can be omitted."/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation">
+                <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml#act())"/>
+                <mml:attr name="facet" value="NamedFacetForParameterLayoutAnnotation"/>
+                <mml:attr name="originalText" value="File name"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="translated" value="File name"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                <mml:attr name="facet" value="LabelAtFacetFromLayoutConfiguration"/>
+                <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.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <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"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <mml:attr name="maxLength" value="2147483647"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.multiline.MultiLineFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MultiLineFacetNone">
+                <mml:attr name="facet" value="MultiLineFacetNone"/>
+                <mml:attr name="numberOfLines" value="1"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                <mml:attr name="facet" value="ActionParameterDefaultsFacetViaMethod"/>
+                <mml:attr name="intent.default0Act" value="DEFAULTS"/>
+                <mml:attr name="methods" value="public java.lang.String org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml.default0Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacetFromConfiguration">
+                <mml:attr name="facet" value="ParameterDependentDefaultsFacetFromConfiguration"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="value" value="UPDATE_DEPENDENT"/>
+              </mml:facet>
+            </mml:facets>
+            <mml:type>java.lang.String</mml:type>
+          </mml:param>
+        </mml:params>
+      </mml:act>
+      <mml:act id="inspectMetamodel" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel"/>
+            <mml:attr name="eventType" value="org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public java.lang.Object org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel.act()"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="java.lang.Object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL_DROPDOWN"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Open up a view of the metamodel of this object's domain class"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Open up a view of the metamodel of this object's domain class"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Inspect Metamodel"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Inspect Metamodel"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-sitemap"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="700.2.1"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>java.lang.Object</mml:returnType>
+        <mml:params/>
+      </mml:act>
+      <mml:act id="openRestApi" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.mixins.rest.Object_openRestApi.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.applib.mixins.rest.Object_openRestApi"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.mixins.rest.Object_openRestApi.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public org.apache.causeway.applib.value.LocalResourcePath org.apache.causeway.applib.mixins.rest.Object_openRestApi.act()"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="org.apache.causeway.applib.value.LocalResourcePath"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL_DROPDOWN"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.rest.Object_openRestApi#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Opens up a view of this object as represented in the (Restful Objects) REST API"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Opens up a view of this object as represented in the (Restful Objects) REST API"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.rest.Object_openRestApi#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Open Rest Api"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Open Rest Api"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-external-link-alt"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="750.1"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>org.apache.causeway.applib.value.LocalResourcePath</mml:returnType>
+        <mml:params/>
+      </mml:act>
+      <mml:act id="rebuildMetamodel" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public java.lang.Object org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel.act()"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="java.lang.Object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="IDEMPOTENT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Rebuilds the framework's internal metamodel of this object's domain class"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Rebuilds the framework's internal metamodel of this object's domain class"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Rebuild Metamodel"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Rebuild Metamodel"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-sync"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="800.1"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>java.lang.Object</mml:returnType>
+        <mml:params/>
+      </mml:act>
+    </mml:actions>
+  </mml:domainClassDto>
+</mml:metamodelDto>
\ No newline at end of file
diff --git a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomainWithPdfjsViewer_IntegTest.java b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomainWithPdfjsViewer_IntegTest.java
new file mode 100644
index 0000000000..5fef167940
--- /dev/null
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomainWithPdfjsViewer_IntegTest.java
@@ -0,0 +1,59 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.extensions.pdfjs.metamodel;
+
+import org.apache.causeway.extensions.pdfjs.metamodel.domains.prop.PropDomain;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.SpringBootConfiguration;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Import;
+import org.springframework.test.context.ActiveProfiles;
+
+@SpringBootTest(
+        classes = {PdfjsViewer_PropDomainWithPdfjsViewer_IntegTest.AppManifest.class},
+        properties = {
+                "causeway.core.meta-model.introspector.mode=FULL",
+        }
+)
+@ActiveProfiles("test")
+public class PdfjsViewer_PropDomainWithPdfjsViewer_IntegTest extends PdfjsViewer_Abstract_IntegTest {
+
+    @SpringBootConfiguration
+    @EnableAutoConfiguration
+    @Import({
+            AppManifestBase.class,
+            PropDomain.class,
+            CausewayModuleExtPdfjsMetaModel.class,
+    })
+    @ComponentScan(basePackageClasses = {PropDomain.class})
+    public static class AppManifest { }
+
+    @Override
+    public Class<?> getDomainModuleClass() {
+        return PropDomain.class;
+    }
+
+    @Test
+    void dump_facets() {
+        super.dump_facets();
+    }
+
+}
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
new file mode 100644
index 0000000000..717c94217a
--- /dev/null
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomain_IntegTest.dump_facets.approved.xml
@@ -0,0 +1,906 @@
+<?xml version="1.0" encoding="UTF-8"?><mml:metamodelDto xmlns:mml="https://causeway.apache.org/schema/metamodel">
+  <mml:domainClassDto id="org.apache.causeway.extensions.pdfjs.metamodel.domains.prop.SomeViewModel">
+    <mml:facets>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+        <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.extensions.pdfjs.metamodel.domains.prop.SomeViewModel#)"/>
+        <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+        <mml:attr name="originalText" value="Some View Model"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="translated" value="Some View Model"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.ObjectNamedFacetSynthesized">
+        <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.extensions.pdfjs.metamodel.domains.prop.SomeViewModel#)"/>
+        <mml:attr name="facet" value="ObjectNamedFacetSynthesized"/>
+        <mml:attr name="nounForms" value="SINGULAR"/>
+        <mml:attr name="originalText.SINGULAR" value="Optional[Some View Model]"/>
+        <mml:attr name="precedence" value="SYNTHESIZED"/>
+        <mml:attr name="translated.SINGULAR" value="Optional[Some View Model]"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+        <mml:attr name="bookmarkPolicy" value="NEVER"/>
+        <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+        <mml:attr name="precedence" value="FALLBACK"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="CreatedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectCreatedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="LoadedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectLoadedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="PersistedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectPersistedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="PersistingLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectPersistingEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="RemovingLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectRemovingEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="UpdatedLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectUpdatedEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="UpdatingLifecycleEventFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.events.lifecycle.ObjectUpdatingEvent.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecoratorFacetFromConfiguration">
+        <mml:attr name="facet" value="DomainObjectLayoutTableDecoratorFacetFromConfiguration"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.grid.GridFacetDefault">
+        <mml:attr name="facet" value="GridFacetDefault"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.hidden.HiddenTypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.hidden.HiddenTypeFacetFromAuthorization">
+        <mml:attr name="facet" value="HiddenTypeFacetFromAuthorization"/>
+        <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+        <mml:attr name="precedence" value="HIGH"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.immutable.ImmutableFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.domainobject.editing.ImmutableFacetForDomainObjectAnnotationAsConfigured">
+        <mml:attr name="facet" value="ImmutableFacetForDomainObjectAnnotationAsConfigured"/>
+        <mml:attr name="interactionAdvisors" value="DisablingOrEnabling"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+        <mml:attr name="reason" value="Disabled"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+        <mml:attr name="facet" value="ObjectValidPropertiesFacetImpl"/>
+        <mml:attr name="interactionAdvisors" value="Validating"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.PagedFacetFromConfiguration">
+        <mml:attr name="facet" value="PagedFacetFromConfiguration"/>
+        <mml:attr name="precedence" value="INFERRED"/>
+        <mml:attr name="value" value="25"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.publish.entitychange.EntityChangePublishingFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.domainobject.entitychangepublishing.EntityChangePublishingFacetForDomainObjectAnnotationAsConfigured">
+        <mml:attr name="facet" value="EntityChangePublishingFacetForDomainObjectAnnotationAsConfigured"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.TitleFacetNone">
+        <mml:attr name="facet" value="TitleFacetNone"/>
+        <mml:attr name="precedence" value="FALLBACK"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.facets.object.viewmodel.ViewModelFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.viewmodel.ViewModelFacetForDomainObjectAnnotation">
+        <mml:attr name="facet" value="ViewModelFacetForDomainObjectAnnotation"/>
+        <mml:attr name="precedence" value="LOW"/>
+      </mml:facet>
+      <mml:facet id="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacet" fqcn="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacetImpl">
+        <mml:attr name="facet" value="AuthorizationFacetImpl"/>
+        <mml:attr name="interactionAdvisors" value="HidingOrShowing, DisablingOrEnabling"/>
+        <mml:attr name="precedence" value="DEFAULT"/>
+      </mml:facet>
+    </mml:facets>
+    <mml:properties>
+      <mml:prop id="pdf" mixedIn="false">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.NamedFacetFallbackFromMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.extensions.pdfjs.metamodel.domains.prop.SomeViewModel#pdf)"/>
+            <mml:attr name="facet" value="NamedFacetFallbackFromMemberName"/>
+            <mml:attr name="originalText" value="Pdf"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+            <mml:attr name="translated" value="Pdf"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.causeway.core.metamodel.facets.properties.disabled.inferred.DisabledFacetOnPropertyFromMissingSetter">
+            <mml:attr name="facet" value="DisabledFacetOnPropertyFromMissingSetter"/>
+            <mml:attr name="interactionAdvisors" value="DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="reason" value="Always disabled"/>
+            <mml:attr name="semantics" value="DISABLED"/>
+            <mml:attr name="where" value="ANYWHERE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.navigation.NavigationFacet" fqcn="org.apache.causeway.core.metamodel.postprocessors.members.navigation.NavigationFacetFromHiddenType">
+            <mml:attr name="facet" value="NavigationFacetFromHiddenType"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+            <mml:attr name="facet" value="LabelAtFacetFromLayoutConfiguration"/>
+            <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.objectvalue.mandatory.MandatoryFacetDefault">
+            <mml:attr name="facet" value="MandatoryFacetDefault"/>
+            <mml:attr name="interactionAdvisors" value="Validating"/>
+            <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"/>
+            <mml:attr name="interactionAdvisors" value="Validating"/>
+            <mml:attr name="maxLength" value="2147483647"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.multiline.MultiLineFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MultiLineFacetNone">
+            <mml:attr name="facet" value="MultiLineFacetNone"/>
+            <mml:attr name="numberOfLines" value="1"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet" fqcn="org.apache.causeway.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor">
+            <mml:attr name="declaringType" value="org.apache.causeway.extensions.pdfjs.metamodel.domains.prop.SomeViewModel"/>
+            <mml:attr name="facet" value="PropertyAccessorFacetViaAccessor"/>
+            <mml:attr name="intent.getPdf" value="ACCESSOR"/>
+            <mml:attr name="methods" value="public org.apache.causeway.applib.value.Blob org.apache.causeway.extensions.pdfjs.metamodel.domains.prop.SomeViewModel.getPdf()"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.propcoll.memserexcl.SnapshotExcludeFacet" fqcn="org.apache.causeway.core.metamodel.facets.properties.update.SnapshotExcludeFacetFromImmutableMember">
+            <mml:attr name="facet" value="SnapshotExcludeFacetFromImmutableMember"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.properties.property.modify.PropertyDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.properties.property.modify.PropertyDomainEventFacetDefault">
+            <mml:attr name="facet" value="PropertyDomainEventFacetDefault"/>
+            <mml:attr name="getterFacet" value="org.apache.causeway.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.events.domain.PropertyDomainEvent.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.properties.validating.PropertyValidateFacet" fqcn="org.apache.causeway.core.metamodel.facets.properties.validating.dflt.PropertyValidateFacetDefault">
+            <mml:attr name="facet" value="PropertyValidateFacetDefault"/>
+            <mml:attr name="interactionAdvisors" value="Validating"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacet" fqcn="org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorization.AuthorizationFacetImpl">
+            <mml:attr name="facet" value="AuthorizationFacetImpl"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:type>org.apache.causeway.applib.value.Blob</mml:type>
+      </mml:prop>
+    </mml:properties>
+    <mml:collections/>
+    <mml:actions>
+      <mml:act id="downloadLayout" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.mixins.layout.Object_downloadLayout.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.applib.mixins.layout.Object_downloadLayout"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.mixins.layout.Object_downloadLayout.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public java.lang.Object org.apache.causeway.applib.mixins.layout.Object_downloadLayout.act(java.lang.String,org.apache.causeway.applib.services.layout.LayoutExportStyle,org.apache.causeway.applib.value.NamedWithMimeType$CommonMimeType)"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="java.lang.Object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL_DROPDOWN"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.layout.Object_downloadLayout#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Downloads the Xxx.layout... layout file effective/inferred for this object"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Downloads the Xxx.layout... layout file effective/inferred for this object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.layout.Object_downloadLayout#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Download Layout"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Download Layout"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-download"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="700.1"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>java.lang.Object</mml:returnType>
+        <mml:params>
+          <mml:param id="fileName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="mml:scalarParam">
+            <mml:facets>
+              <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.mixins.layout.Object_downloadLayout#act())"/>
+                <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
+                <mml:attr name="originalText" value="File name extension can be omitted."/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="translated" value="File name extension can be omitted."/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation">
+                <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.layout.Object_downloadLayout#act())"/>
+                <mml:attr name="facet" value="NamedFacetForParameterLayoutAnnotation"/>
+                <mml:attr name="originalText" value="File name"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="translated" value="File name"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                <mml:attr name="facet" value="LabelAtFacetFromLayoutConfiguration"/>
+                <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.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <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"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <mml:attr name="maxLength" value="2147483647"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.multiline.MultiLineFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MultiLineFacetNone">
+                <mml:attr name="facet" value="MultiLineFacetNone"/>
+                <mml:attr name="numberOfLines" value="1"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                <mml:attr name="facet" value="ActionParameterDefaultsFacetViaMethod"/>
+                <mml:attr name="intent.default0Act" value="DEFAULTS"/>
+                <mml:attr name="methods" value="public java.lang.String org.apache.causeway.applib.mixins.layout.Object_downloadLayout.default0Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacetFromConfiguration">
+                <mml:attr name="facet" value="ParameterDependentDefaultsFacetFromConfiguration"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="value" value="UPDATE_DEPENDENT"/>
+              </mml:facet>
+            </mml:facets>
+            <mml:type>java.lang.String</mml:type>
+          </mml:param>
+          <mml:param id="style" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="mml:scalarParam">
+            <mml:facets>
+              <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.mixins.layout.Object_downloadLayout#act())"/>
+                <mml:attr name="facet" value="NamedFacetForParameterUsingReflection"/>
+                <mml:attr name="originalText" value="Style"/>
+                <mml:attr name="precedence" value="LOW"/>
+                <mml:attr name="translated" value="Style"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                <mml:attr name="facet" value="LabelAtFacetFromLayoutConfiguration"/>
+                <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.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <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"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <mml:attr name="maxLength" value="2147483647"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.multiline.MultiLineFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MultiLineFacetNone">
+                <mml:attr name="facet" value="MultiLineFacetNone"/>
+                <mml:attr name="numberOfLines" value="1"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                <mml:attr name="facet" value="ActionParameterDefaultsFacetViaMethod"/>
+                <mml:attr name="intent.default1Act" value="DEFAULTS"/>
+                <mml:attr name="methods" value="public org.apache.causeway.applib.services.layout.LayoutExportStyle org.apache.causeway.applib.mixins.layout.Object_downloadLayout.default1Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacetFromConfiguration">
+                <mml:attr name="facet" value="ParameterDependentDefaultsFacetFromConfiguration"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="value" value="UPDATE_DEPENDENT"/>
+              </mml:facet>
+            </mml:facets>
+            <mml:type>org.apache.causeway.applib.services.layout.LayoutExportStyle</mml:type>
+          </mml:param>
+          <mml:param id="format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="mml:scalarParam">
+            <mml:facets>
+              <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.mixins.layout.Object_downloadLayout#act())"/>
+                <mml:attr name="facet" value="NamedFacetForParameterUsingReflection"/>
+                <mml:attr name="originalText" value="Format"/>
+                <mml:attr name="precedence" value="LOW"/>
+                <mml:attr name="translated" value="Format"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                <mml:attr name="facet" value="LabelAtFacetFromLayoutConfiguration"/>
+                <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.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <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"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <mml:attr name="maxLength" value="2147483647"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.multiline.MultiLineFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MultiLineFacetNone">
+                <mml:attr name="facet" value="MultiLineFacetNone"/>
+                <mml:attr name="numberOfLines" value="1"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </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="SET"/>
+                <mml:attr name="facet" value="ActionParameterChoicesFacetViaMethod"/>
+                <mml:attr name="intent.choices2Act" value="CHOICES_OR_AUTOCOMPLETE"/>
+                <mml:attr name="methods" value="public java.util.Set org.apache.causeway.applib.mixins.layout.Object_downloadLayout.choices2Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                <mml:attr name="facet" value="ActionParameterDefaultsFacetViaMethod"/>
+                <mml:attr name="intent.default2Act" value="DEFAULTS"/>
+                <mml:attr name="methods" value="public org.apache.causeway.applib.value.NamedWithMimeType$CommonMimeType org.apache.causeway.applib.mixins.layout.Object_downloadLayout.default2Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacetFromConfiguration">
+                <mml:attr name="facet" value="ParameterDependentDefaultsFacetFromConfiguration"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="value" value="UPDATE_DEPENDENT"/>
+              </mml:facet>
+            </mml:facets>
+            <mml:type>org.apache.causeway.applib.value.NamedWithMimeType$CommonMimeType</mml:type>
+          </mml:param>
+        </mml:params>
+      </mml:act>
+      <mml:act id="downloadMetamodelXml" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public java.lang.Object org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml.act(java.lang.String)"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="java.lang.Object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL_DROPDOWN"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Downloads a representation of the framework's internal metamodel for this object's domain class"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Downloads a representation of the framework's internal metamodel for this object's domain class"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Download Metamodel Xml"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Download Metamodel Xml"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-download"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="700.2"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>java.lang.Object</mml:returnType>
+        <mml:params>
+          <mml:param id="fileName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="mml:scalarParam">
+            <mml:facets>
+              <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.mixins.metamodel.Object_downloadMetamodelXml#act())"/>
+                <mml:attr name="facet" value="ParamDescribedFacetForParameterLayoutAnnotation"/>
+                <mml:attr name="originalText" value="File name extension can be omitted."/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="translated" value="File name extension can be omitted."/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.ParamNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation">
+                <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml#act())"/>
+                <mml:attr name="facet" value="NamedFacetForParameterLayoutAnnotation"/>
+                <mml:attr name="originalText" value="File name"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="translated" value="File name"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                <mml:attr name="facet" value="LabelAtFacetFromLayoutConfiguration"/>
+                <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.objectvalue.mandatory.MandatoryFacetDefault">
+                <mml:attr name="facet" value="MandatoryFacetDefault"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <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"/>
+                <mml:attr name="interactionAdvisors" value="Validating"/>
+                <mml:attr name="maxLength" value="2147483647"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.objectvalue.multiline.MultiLineFacet" fqcn="org.apache.causeway.core.metamodel.facets.fallback.MultiLineFacetNone">
+                <mml:attr name="facet" value="MultiLineFacetNone"/>
+                <mml:attr name="numberOfLines" value="1"/>
+                <mml:attr name="precedence" value="FALLBACK"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                <mml:attr name="facet" value="ActionParameterDefaultsFacetViaMethod"/>
+                <mml:attr name="intent.default0Act" value="DEFAULTS"/>
+                <mml:attr name="methods" value="public java.lang.String org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml.default0Act()"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+              </mml:facet>
+              <mml:facet id="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacet" fqcn="org.apache.causeway.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacetFromConfiguration">
+                <mml:attr name="facet" value="ParameterDependentDefaultsFacetFromConfiguration"/>
+                <mml:attr name="precedence" value="DEFAULT"/>
+                <mml:attr name="value" value="UPDATE_DEPENDENT"/>
+              </mml:facet>
+            </mml:facets>
+            <mml:type>java.lang.String</mml:type>
+          </mml:param>
+        </mml:params>
+      </mml:act>
+      <mml:act id="inspectMetamodel" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel"/>
+            <mml:attr name="eventType" value="org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public java.lang.Object org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel.act()"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="java.lang.Object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL_DROPDOWN"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Open up a view of the metamodel of this object's domain class"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Open up a view of the metamodel of this object's domain class"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.core.metamodel.inspect.Object_inspectMetamodel#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Inspect Metamodel"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Inspect Metamodel"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-sitemap"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="700.2.1"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>java.lang.Object</mml:returnType>
+        <mml:params/>
+      </mml:act>
+      <mml:act id="openRestApi" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.mixins.rest.Object_openRestApi.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.applib.mixins.rest.Object_openRestApi"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.mixins.rest.Object_openRestApi.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public org.apache.causeway.applib.value.LocalResourcePath org.apache.causeway.applib.mixins.rest.Object_openRestApi.act()"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="org.apache.causeway.applib.value.LocalResourcePath"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL_DROPDOWN"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="SAFE"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.rest.Object_openRestApi#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Opens up a view of this object as represented in the (Restful Objects) REST API"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Opens up a view of this object as represented in the (Restful Objects) REST API"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.rest.Object_openRestApi#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Open Rest Api"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Open Rest Api"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-external-link-alt"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="750.1"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>org.apache.causeway.applib.value.LocalResourcePath</mml:returnType>
+        <mml:params/>
+      </mml:act>
+      <mml:act id="rebuildMetamodel" mixedIn="true">
+        <mml:facets>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionExplicitFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionDomainEventFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="Validating, HidingOrShowing, DisablingOrEnabling"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel.ActionDomainEvent"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+            <mml:attr name="declaringType" value="org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel"/>
+            <mml:attr name="eventType" value="org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel.ActionDomainEvent"/>
+            <mml:attr name="facet" value="ActionInvocationFacetForDomainEventFromActionAnnotation"/>
+            <mml:attr name="intent.act" value="EXECUTE"/>
+            <mml:attr name="methods" value="public java.lang.Object org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel.act()"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="returnType" value="java.lang.Object"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet">
+            <mml:attr name="contributing" value="AS_ACTION"/>
+            <mml:attr name="facet" value="ContributingFacetFromMixinFacetFactory.1"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+            <mml:attr name="facet" value="ActionPositionFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="PANEL"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+            <mml:attr name="deploymentType" value="PRODUCTION"/>
+            <mml:attr name="facet" value="PrototypeFacetForActionAnnotation"/>
+            <mml:attr name="interactionAdvisors" value="HidingOrShowing"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="RedirectFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="redirect" value="AS_CONFIGURED"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+            <mml:attr name="facet" value="ActionSemanticsFacetForActionAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="IDEMPOTENT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.described.MemberDescribedFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.MemberDescribedFacetForActionLayoutAnnotation">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel#act())"/>
+            <mml:attr name="facet" value="MemberDescribedFacetForActionLayoutAnnotation"/>
+            <mml:attr name="originalText" value="Rebuilds the framework's internal metamodel of this object's domain class"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Rebuilds the framework's internal metamodel of this object's domain class"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacet" fqcn="org.apache.causeway.core.metamodel.facets.all.named.MemberNamedFacetForStaticMemberName">
+            <mml:attr name="context" value="TranslationContext(name=org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel#act())"/>
+            <mml:attr name="facet" value="MemberNamedFacetForStaticMemberName"/>
+            <mml:attr name="originalText" value="Rebuild Metamodel"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="translated" value="Rebuild Metamodel"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.DefaultViewFacetAsConfigured">
+            <mml:attr name="facet" value="DefaultViewFacetAsConfigured"/>
+            <mml:attr name="precedence" value="LOW"/>
+            <mml:attr name="value" value="table"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacet" fqcn="org.apache.causeway.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecoratorFacetFromConfiguration">
+            <mml:attr name="facet" value="CollectionLayoutTableDecoratorFacetFromConfiguration"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="value" value="org.apache.causeway.applib.annotation.TableDecorator.Default"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.causeway.core.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+            <mml:attr name="classes" value="fa fa-fw fa-sync"/>
+            <mml:attr name="facet" value="CssClassFaFacetForActionLayoutAnnotation"/>
+            <mml:attr name="position" value="LEFT"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutGroupFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="groupId" value="metadata"/>
+            <mml:attr name="groupName" value="Metadata"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacet" fqcn="org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation">
+            <mml:attr name="facet" value="LayoutOrderFacetFromActionLayoutAnnotation"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="sequence" value="800.1"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy" value="NEVER"/>
+            <mml:attr name="facet" value="BookmarkPolicyFacetFallback"/>
+            <mml:attr name="precedence" value="FALLBACK"/>
+          </mml:facet>
+          <mml:facet id="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+            <mml:attr name="facet" value="PromptStyleFacetAsConfigured"/>
+            <mml:attr name="precedence" value="DEFAULT"/>
+            <mml:attr name="promptStyle" value="INLINE"/>
+          </mml:facet>
+        </mml:facets>
+        <mml:returnType>java.lang.Object</mml:returnType>
+        <mml:params/>
+      </mml:act>
+    </mml:actions>
+  </mml:domainClassDto>
+</mml:metamodelDto>
\ No newline at end of file
diff --git a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomain_IntegTest.java b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomain_IntegTest.java
new file mode 100644
index 0000000000..591213bfd8
--- /dev/null
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PdfjsViewer_PropDomain_IntegTest.java
@@ -0,0 +1,59 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.extensions.pdfjs.metamodel;
+
+import org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin.MixinDomain;
+import org.apache.causeway.extensions.pdfjs.metamodel.domains.prop.PropDomain;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.SpringBootConfiguration;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Import;
+import org.springframework.test.context.ActiveProfiles;
+
+@SpringBootTest(
+        classes = {PdfjsViewer_PropDomain_IntegTest.AppManifest.class},
+        properties = {
+                "causeway.core.meta-model.introspector.mode=FULL",
+        }
+)
+@ActiveProfiles("test")
+public class PdfjsViewer_PropDomain_IntegTest extends PdfjsViewer_Abstract_IntegTest {
+
+    @SpringBootConfiguration
+    @EnableAutoConfiguration
+    @Import({
+            AppManifestBase.class,
+            PropDomain.class,
+    })
+    @ComponentScan(basePackageClasses = {PropDomain.class})
+    public static class AppManifest { }
+
+    @Override
+    public Class<?> getDomainModuleClass() {
+        return PropDomain.class;
+    }
+
+    @Test
+    void dump_facets() {
+        super.dump_facets();
+    }
+
+}
diff --git a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PlatformTransactionManagerNoop.java b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PlatformTransactionManagerNoop.java
new file mode 100644
index 0000000000..d0bad8d2de
--- /dev/null
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/PlatformTransactionManagerNoop.java
@@ -0,0 +1,21 @@
+package org.apache.causeway.extensions.pdfjs.metamodel;
+
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.TransactionDefinition;
+import org.springframework.transaction.TransactionException;
+import org.springframework.transaction.TransactionStatus;
+
+class PlatformTransactionManagerNoop implements PlatformTransactionManager {
+    @Override
+    public void rollback(final TransactionStatus status) throws TransactionException {
+    }
+
+    @Override
+    public TransactionStatus getTransaction(final TransactionDefinition definition) throws TransactionException {
+        return null;
+    }
+
+    @Override
+    public void commit(final TransactionStatus status) throws TransactionException {
+    }
+}
diff --git a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/domains/mixin/MixinDomain.java b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/domains/mixin/MixinDomain.java
new file mode 100644
index 0000000000..9b2393dfe5
--- /dev/null
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/domains/mixin/MixinDomain.java
@@ -0,0 +1,9 @@
+package org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin;
+
+import org.apache.causeway.applib.annotation.DomainObject;
+import org.apache.causeway.applib.annotation.Nature;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MixinDomain {
+}
diff --git a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/domains/mixin/SomeViewModel.java b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/domains/mixin/SomeViewModel.java
new file mode 100644
index 0000000000..1872dcba26
--- /dev/null
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/domains/mixin/SomeViewModel.java
@@ -0,0 +1,8 @@
+package org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin;
+
+import org.apache.causeway.applib.annotation.DomainObject;
+import org.apache.causeway.applib.annotation.Nature;
+
+@DomainObject(nature = Nature.VIEW_MODEL)
+public class SomeViewModel {
+}
diff --git a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/domains/mixin/SomeViewModel_pdf.java b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/domains/mixin/SomeViewModel_pdf.java
new file mode 100644
index 0000000000..4609d901f9
--- /dev/null
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/domains/mixin/SomeViewModel_pdf.java
@@ -0,0 +1,21 @@
+package org.apache.causeway.extensions.pdfjs.metamodel.domains.mixin;
+
+import lombok.RequiredArgsConstructor;
+
+import org.apache.causeway.applib.annotation.DomainObject;
+import org.apache.causeway.applib.annotation.Nature;
+import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.value.Blob;
+import org.apache.causeway.extensions.pdfjs.applib.annotations.PdfJsViewer;
+
+@Property
+@PdfJsViewer
+@RequiredArgsConstructor
+public class SomeViewModel_pdf {
+
+    private final SomeViewModel someViewModel;
+
+    public Blob prop() {
+        return null;
+    }
+}
diff --git a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/domains/prop/PropDomain.java b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/domains/prop/PropDomain.java
new file mode 100644
index 0000000000..9cc82435cc
--- /dev/null
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/domains/prop/PropDomain.java
@@ -0,0 +1,7 @@
+package org.apache.causeway.extensions.pdfjs.metamodel.domains.prop;
+
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class PropDomain {
+}
diff --git a/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/domains/prop/SomeViewModel.java b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/domains/prop/SomeViewModel.java
new file mode 100644
index 0000000000..b7d14e350a
--- /dev/null
+++ b/extensions/vw/pdfjs/metamodel/src/test/java/org/apache/causeway/extensions/pdfjs/metamodel/domains/prop/SomeViewModel.java
@@ -0,0 +1,17 @@
+package org.apache.causeway.extensions.pdfjs.metamodel.domains.prop;
+
+import org.apache.causeway.applib.annotation.DomainObject;
+import org.apache.causeway.applib.annotation.Nature;
+import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.value.Blob;
+import org.apache.causeway.extensions.pdfjs.applib.annotations.PdfJsViewer;
+
+@DomainObject(nature = Nature.VIEW_MODEL)
+public class SomeViewModel {
+
+    @Property
+    @PdfJsViewer
+    public Blob getPdf() {
+        return null;
+    }
+}
diff --git a/regressiontests/stable-domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/MetaModelRegressionTest.java b/regressiontests/stable-domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/MetaModelRegressionTest.java
index 6ac3c6e8e8..5b243c0481 100644
--- a/regressiontests/stable-domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/MetaModelRegressionTest.java
+++ b/regressiontests/stable-domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/MetaModelRegressionTest.java
@@ -20,12 +20,11 @@ package org.apache.causeway.testdomain.domainmodel;
 
 import java.nio.charset.StandardCharsets;
 import java.util.List;
-import java.util.stream.Collectors;
 
 import javax.inject.Inject;
 
+import org.apache.causeway.testing.integtestsupport.applib.ApprovalsOptions;
 import org.approvaltests.Approvals;
-import org.approvaltests.core.Options;
 import org.approvaltests.reporters.DiffReporter;
 import org.approvaltests.reporters.UseReporter;
 import org.junit.jupiter.api.BeforeEach;
@@ -39,17 +38,11 @@ import org.apache.causeway.applib.services.factory.FactoryService;
 import org.apache.causeway.applib.services.metamodel.MetaModelServiceMenu;
 import org.apache.causeway.applib.services.metamodel.MetaModelServiceMenu.ExportFormat;
 import org.apache.causeway.applib.value.Clob;
-import org.apache.causeway.commons.internal.base._Strings;
-import org.apache.causeway.commons.internal.base._Strings.KeyValuePair;
-import org.apache.causeway.commons.internal.base._Text;
-import org.apache.causeway.commons.internal.collections._Lists;
-import org.apache.causeway.commons.internal.collections._Maps;
 import org.apache.causeway.core.config.presets.CausewayPresets;
 import org.apache.causeway.testdomain.conf.Configuration_headless;
 import org.apache.causeway.testdomain.model.good.Configuration_usingValidDomain;
 
 import lombok.SneakyThrows;
-import lombok.val;
 
 @SpringBootTest(
         classes = {
@@ -90,72 +83,13 @@ class MetaModelRegressionTest {
         final String xml = metaModelClob
                 .asString();
 
-        Approvals.verify(xml, options());
+        Approvals.verify(xml, ApprovalsOptions.xmlOptions());
     }
 
     // -- HELPER
 
-    private Options options() {
-        return new Options()
-                .withScrubber(this::scrub)
-                .forFile()
-                .withExtension(".xml");
-    }
-
     private List<String> namespaces() {
         return List.of("org.apache.causeway.testdomain.model.good");
     }
 
-    private String scrub(final String input) {
-        return _Text.streamLines(input)
-                .map(this::scrubLine)
-                .filter(line->!_Strings.nullToEmpty(line).isBlank()) // ignore blank lines, just in case
-                .collect(Collectors.joining("\n")); // UNIX line ending convention
-    }
-
-    /**
-     * As the XML spec states, order of attributes has no semantic significance and hence is not
-     * guaranteed to be always the same, like in
-     * <pre>
-     * {@code <mml:param xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="mml:scalarParam" id="style">}
-     * </pre>
-     * So we have to scrub those for consistent comparison.
-     * @param line
-     * @return canonical form of the line
-     */
-    private String scrubLine(final String line) {
-
-        val magicPrefix = "<mml:param ";
-        val magicSuffix = ">";
-        int p = line.indexOf(magicPrefix);
-        if(p<0) {
-            return line;
-        }
-        p += magicPrefix.length(); // pointer at end of "...<mml:param "
-        int q = line.lastIndexOf(magicSuffix); // pointer at start of "... >"
-
-        val chunks = _Lists.<String>newArrayList();
-        chunks.add(line.substring(0, p-1)); // first chunk "...<mml:param"
-
-        // ordered attributes
-        val attrs = _Maps.<String, KeyValuePair>newTreeMap();
-        _Strings.splitThenStream(line.substring(p, q), " ")
-        .map(attrLiteral->
-            _Strings.parseKeyValuePair(attrLiteral, '=')
-                    .orElseGet(()->_Strings.pair(attrLiteral, null))
-        )
-        .forEach(attr->attrs.put(attr.getKey(), attr));
-
-        // collect all chunks
-        attrs.values()
-        .forEach(attr->chunks.add(
-            attr.getValue()!=null
-                ? " " + attr.getKey() + "=" + attr.getValue()
-                : " " + attr.getKey()));
-        chunks.add(magicSuffix);
-
-        // reassemble line
-        return chunks.stream().collect(Collectors.joining());
-    }
-
 }
diff --git a/testing/integtestsupport/applib/src/main/java/org/apache/causeway/testing/integtestsupport/applib/ApprovalsOptions.java b/testing/integtestsupport/applib/src/main/java/org/apache/causeway/testing/integtestsupport/applib/ApprovalsOptions.java
new file mode 100644
index 0000000000..55ae33effa
--- /dev/null
+++ b/testing/integtestsupport/applib/src/main/java/org/apache/causeway/testing/integtestsupport/applib/ApprovalsOptions.java
@@ -0,0 +1,93 @@
+package org.apache.causeway.testing.integtestsupport.applib;
+
+import lombok.SneakyThrows;
+import lombok.experimental.UtilityClass;
+import lombok.val;
+
+import java.util.stream.Collectors;
+
+import org.apache.causeway.commons.internal.base._Strings;
+import org.apache.causeway.commons.internal.base._Text;
+import org.apache.causeway.commons.internal.collections._Lists;
+import org.apache.causeway.commons.internal.collections._Maps;
+import org.approvaltests.core.Options;
+import org.approvaltests.core.Scrubber;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+@UtilityClass
+public class ApprovalsOptions {
+
+    public static Options xmlOptions() {
+        return new Options()
+                .withScrubber(ApprovalsOptions::scrub)
+                .forFile()
+                .withExtension(".xml");
+    }
+
+    private String scrub(final String input) {
+        return _Text.streamLines(input)
+                .map(ApprovalsOptions::scrubLine)
+                .filter(line->!_Strings.nullToEmpty(line).isBlank()) // ignore blank lines, just in case
+                .collect(Collectors.joining("\n")); // UNIX line ending convention
+    }
+
+
+    /**
+     * As the XML spec states, order of attributes has no semantic significance and hence is not
+     * guaranteed to be always the same, like in
+     * <pre>
+     * {@code <mml:param xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="mml:scalarParam" id="style">}
+     * </pre>
+     * So we have to scrub those for consistent comparison.
+     * @param line
+     * @return canonical form of the line
+     */
+    private String scrubLine(final String line) {
+
+        val magicPrefix = "<mml:param ";
+        val magicSuffix = ">";
+        int p = line.indexOf(magicPrefix);
+        if(p<0) {
+            return line;
+        }
+        p += magicPrefix.length(); // pointer at end of "...<mml:param "
+        int q = line.lastIndexOf(magicSuffix); // pointer at start of "... >"
+
+        val chunks = _Lists.<String>newArrayList();
+        chunks.add(line.substring(0, p-1)); // first chunk "...<mml:param"
+
+        // ordered attributes
+        val attrs = _Maps.<String, _Strings.KeyValuePair>newTreeMap();
+        _Strings.splitThenStream(line.substring(p, q), " ")
+                .map(attrLiteral->
+                        _Strings.parseKeyValuePair(attrLiteral, '=')
+                                .orElseGet(()->_Strings.pair(attrLiteral, null))
+                )
+                .forEach(attr->attrs.put(attr.getKey(), attr));
+
+        // collect all chunks
+        attrs.values()
+                .forEach(attr->chunks.add(
+                        attr.getValue()!=null
+                                ? " " + attr.getKey() + "=" + attr.getValue()
+                                : " " + attr.getKey()));
+        chunks.add(magicSuffix);
+
+        // reassemble line
+        return chunks.stream().collect(Collectors.joining());
+    }
+
+    private ObjectMapper objectMapper = new ObjectMapper();
+
+    public Options gqlOptions() {
+        return new Options().withScrubber(new Scrubber() {
+            @SneakyThrows
+            @Override
+            public String scrub(final String s) {
+                return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(objectMapper.readTree(s));
+            }
+        }).forFile().withExtension(".gql");
+    }
+
+}