You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2021/03/06 17:44:04 UTC

[isis] 02/02: ISIS-2444: updates refguide docs once more

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

danhaywood pushed a commit to branch ISIS-2444
in repository https://gitbox.apache.org/repos/asf/isis.git

commit cde3f44aa9cbf2ea40a3f3ac0137f2e33966f6f7
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sat Mar 6 17:42:47 2021 +0000

    ISIS-2444: updates refguide docs once more
---
 .../pages/what-is-apache-isis/screencasts.adoc     |   2 +-
 .../modules/_overview/pages/about.adoc             | 283 +++++++--------------
 .../hooks/ActionLayout_029-redirect.adoc           |   2 +-
 .../hooks/DomainObjectLayout_023-cssClassFa.adoc   |   2 +-
 .../hooks/DomainObjectLayout_027-ui-events.adoc    |  10 +-
 .../hooks/DomainService_021-objectType.adoc        |   2 +-
 .../applib/pages/index/graph/SimpleEdge.adoc       |   2 -
 .../JavaSqlXMLGregorianCalendarMarshalling.adoc    |   1 -
 .../pages/index/mixins/dto/Dto_downloadXml.adoc    |  10 +-
 .../pages/index/mixins/dto/Dto_downloadXsd.adoc    |  28 +-
 .../mixins/layout/Object_downloadLayoutXml.adoc    |  31 ++-
 .../hooks/Object_downloadLayoutXml_see-also.adoc   |   2 +
 .../metamodel/Object_downloadMetamodelXml.adoc     |  22 +-
 .../mixins/metamodel/Object_objectIdentifier.adoc  |   4 +
 .../index/mixins/metamodel/Object_objectType.adoc  |   4 +
 .../Object_rebuildMetamodel.adoc                   |   2 -
 .../hooks/Object_rebuildMetamodel_see-also.adoc    |   0
 .../{layout => rest}/Object_openRestApi.adoc       |   4 -
 .../hooks/Object_openRestApi_see-also.adoc         |   0
 .../DomainChangeRecord_openTargetObject.adoc       |   7 -
 .../index/services/appfeat/ApplicationFeature.adoc |  81 ++++++
 .../services/appfeat/ApplicationFeatureId.adoc     |   3 -
 .../appfeat/ApplicationFeatureRepository.adoc      |   9 +-
 .../conmap/ContentMappingServiceForCommandDto.adoc |   4 -
 .../ContentMappingServiceForCommandsDto.adoc       |   2 -
 .../index/services/exceprecog/Recognition.adoc     |  30 ---
 .../index/services/grid/GridLoaderService.adoc     |   2 +-
 .../index/services/iactn/ExecutionContext.adoc     |  40 ---
 .../index/services/layout/LayoutServiceMenu.adoc   |   2 -
 .../applib/pages/index/services/layout/Style.adoc  |   4 +-
 .../services/metamodel/MetaModelServiceMenu.adoc   |   6 -
 .../services/publishing/spi/EntityChanges.adoc     |  15 +-
 .../pages/index/services/user/RoleMemento.adoc     |   6 -
 .../WrapperFactory_020-examples-and-usage.adoc     |   2 +-
 .../pages/index/services/xactn/TransactionId.adoc  |  39 ---
 .../applib/pages/index/util/ReasonBuffer.adoc      |   1 -
 .../pages/index/util/schema/ChangesDtoUtils.adoc   |   1 -
 .../pages/index/util/schema/CommandDtoUtils.adoc   |   1 -
 .../index/util/schema/InteractionDtoUtils.adoc     |   1 -
 .../modules/applib/pages/index/value/Blob.adoc     |  10 +
 .../modules/applib/pages/index/value/Clob.adoc     |  10 +
 .../modules/applib/pages/index/value/Markup.adoc   |   2 +-
 .../modules/applib/pages/index/value/Password.adoc |   2 +
 .../pages/index/value/hooks/Blob_usage-notes.adoc} |  50 +---
 .../pages/index/value/hooks/Clob_usage-notes.adoc} |  34 +--
 .../services/command/CommandDtoFactory.adoc        |   4 +-
 .../commandlog/impl/CommandSubscriberForJdo.adoc   |   2 -
 .../impl/mixins/HasInteractionId_command.adoc      |  29 +++
 .../mixins/HasUsername_recentCommandsByUser.adoc   |   2 -
 .../commandlog/impl/ui/CommandServiceMenu.adoc     |   2 -
 .../primary/config/PrimaryConfig.adoc              |   2 -
 .../primary/mixins/Object_openOnSecondary.adoc     |   5 -
 .../primary/restapi/CommandRetrievalService.adoc   |   4 +-
 .../primary/ui/CommandReplayOnPrimaryService.adoc  |  16 +-
 .../IsisModuleExtCommandReplaySecondary.adoc       |   4 -
 .../analysis/CommandReplayAnalysisService.adoc     |   2 -
 .../secondary/clock/TickingClockService.adoc       |   1 -
 .../secondary/config/SecondaryConfig.adoc          |  14 -
 .../executor/CommandExecutorServiceWithTime.adoc   |   2 -
 .../secondary/fetch/CommandFetcher.adoc            |   3 -
 .../secondary/job/ReplicateAndReplayJob.adoc       |   3 -
 .../jobcallables/ReplicateAndRunCommands.adoc      |  12 -
 .../secondary/mixins/CommandJdo_exclude.adoc       |   3 -
 .../secondary/mixins/CommandJdo_replayQueue.adoc   |   5 -
 .../secondary/mixins/Object_openOnPrimary.adoc     |   5 -
 .../ui/CommandReplayOnSecondaryService.adoc        |   4 -
 .../fullcalendar/applib/value/CalendarEvent.adoc   |   2 -
 .../index/secman/api/SecmanConfiguration.adoc      |  56 ----
 .../secman/api/authorizor/AuthorizorSecman.adoc    |   2 -
 .../api/permission/ApplicationPermission.adoc      |   4 +-
 .../api/permission/ApplicationPermissionMode.adoc  |   2 +-
 .../api/permission/ApplicationPermissionRule.adoc  |  14 +-
 ...IsisExtSecmanRegularUserRoleAndPermissions.adoc |   2 +-
 ...IsisExtSecmanRegularUserRoleAndPermissions.adoc |   2 +-
 .../index/secman/model/dom/user/MeService.adoc}    |   9 +-
 .../mixins/Persistable_downloadJdoMetadata.adoc    |   2 -
 .../excel/applib/dom/util/AnnotationList.adoc      |   1 -
 .../excel/applib/dom/util/ExcelServiceImpl.adoc    |   8 -
 .../index/excel/applib/dom/util/SheetPivoter.adoc  |   4 -
 .../pages/index/excel/testing/ExcelFixture.adoc    |   2 -
 .../pages/index/excel/testing/ExcelFixture2.adoc   |  19 --
 .../applib/service/XDocReportService.adoc          |   1 -
 .../services/AbstractRandomValueGenerator.adoc     |   1 -
 .../index/fakedata/applib/services/Addresses.adoc  |   1 -
 .../index/fakedata/applib/services/Books.adoc      |   1 -
 .../index/fakedata/applib/services/Comms.adoc      |   2 -
 .../fakedata/applib/services/CreditCards.adoc      |   1 -
 .../fakedata/applib/services/FakeDataService.adoc  |   6 -
 .../index/fakedata/applib/services/Lorem.adoc      |   1 -
 .../index/fakedata/applib/services/Names.adoc      |   1 -
 .../core/soap/SoapEndpointPublishingRule.adoc      |  13 -
 .../wicket/viewer/mixins/Object_clearHints.adoc    |  22 ++
 .../modules/ROOT/partials/component-nav.adoc       |   2 +-
 .../modules/applib-ant/pages/XmlRootElement.adoc   |   4 +-
 .../modules/applib-ant/partials/module-nav.adoc    |   1 -
 .../pages/events/lifecycleevent.adoc               |  33 ++-
 .../applib-classes/pages/events/uievent.adoc       |  10 +-
 .../applib-classes/pages/mixees-and-mixins.adoc    |  45 +++-
 .../{ViewModel.adoc => non-persisted-objects.adoc} |   8 +-
 .../pages/roles-mixins-contributees/mixins.adoc    |   2 +-
 .../modules/applib-classes/pages/utility.adoc      |   3 +
 .../modules/applib-classes/pages/value-types.adoc  |  13 +-
 .../applib-classes/pages/value-types/Clob.adoc     |  89 -------
 .../applib-classes/pages/value-types/Markup.adoc   |  50 ----
 .../applib-classes/partials/module-nav.adoc        |  48 +++-
 .../modules/applib-methods/pages/lifecycle.adoc    |  10 +-
 .../modules/applib-methods/pages/prefixes.adoc     |  88 +------
 .../pages/prefixes/deprecated/addTo.adoc           |  36 ---
 .../pages/prefixes/deprecated/clear.adoc           |  36 ---
 .../pages/prefixes/deprecated/modify.adoc          |  42 ---
 .../pages/prefixes/deprecated/removeFrom.adoc      |  36 ---
 .../pages/prefixes/deprecated/validate.adoc        | 138 ----------
 .../pages/prefixes/deprecated/validateAddTo.adoc   |  45 ----
 .../prefixes/deprecated/validateRemoveFrom.adoc    |  45 ----
 .../pages/reserved/deprecated/disable.adoc         | 101 --------
 .../pages/reserved/deprecated/getId.adoc           |  56 ----
 .../pages/reserved/deprecated/hide.adoc            |  39 ---
 .../pages/{reserved.adoc => ui-hints.adoc}         |  22 +-
 .../pages/{reserved => ui-hints}/cssClass.adoc     |   0
 .../pages/{reserved => ui-hints}/iconName.adoc     |   0
 .../pages/{reserved => ui-hints}/layout.adoc       |   0
 .../pages/{reserved => ui-hints}/title.adoc        |   0
 .../applib-methods/partials/module-nav.adoc        |   4 +-
 .../modules/ROOT/pages/2020/2.0.0-M3/relnotes.adoc |   2 +-
 .../fun/pages/object-members/properties.adoc       |   4 -
 .../userguide/modules/fun/pages/view-models.adoc   | 197 +++++++++-----
 .../userguide/modules/fun/partials/module-nav.adoc |   2 +-
 .../org/apache/isis/applib/IsisModuleApplib.java   |   4 +-
 .../isis/applib/mixins/dto/Dto_downloadXml.java    |   4 +
 .../isis/applib/mixins/dto/Dto_downloadXsd.java    |   6 +
 .../mixins/layout/Object_downloadLayoutXml.java    |  10 +-
 .../metamodel/Object_downloadMetamodelXml.java     |  11 +-
 .../mixins/metamodel/Object_objectIdentifier.java  |  14 +
 .../applib/mixins/metamodel/Object_objectType.java |  15 ++
 .../Object_rebuildMetamodel.java                   |   3 +-
 .../{layout => rest}/Object_openRestApi.java       |   3 +-
 .../DomainChangeRecord_openTargetObject.java       |   7 +-
 .../applib/services/grid/GridLoaderService.java    |   3 +-
 .../apache/isis/applib/services/layout/Style.java  |   6 +-
 .../services/publishing/spi/EntityChanges.java     |  18 +-
 .../org/apache/isis/applib/util/ReasonBuffer.java  |   8 +-
 .../org/apache/isis/applib/util/ReasonBuffer2.java |  61 +++--
 .../java/org/apache/isis/applib/util/Reasons.java  |   2 +-
 .../java/org/apache/isis/applib/value/Blob.java    |  28 +-
 .../java/org/apache/isis/applib/value/Clob.java    |  46 +++-
 .../isis/applib/value/LocalResourcePath.java       |  24 +-
 .../java/org/apache/isis/applib/value/Markup.java  |   7 +-
 .../org/apache/isis/applib/value/Password.java     |  10 +-
 .../confmenu/ConfigurationViewServiceDefault.java  |  46 ++--
 .../changetracking/SimpleChangingEntities.java     |   2 +-
 .../embedded/ComplexNumberJdoValueSemantics.java   |   8 +-
 .../PropertyExecutionPublishingJdo.layout.xml      |   2 +-
 .../PrototypeActionsVisibilityAdvisor.java         |   4 +-
 .../impl/mixins/HasInteractionId_command.java      |   8 +-
 .../pages/fixture-scripts/mocking-the-clock.adoc   |   7 +-
 .../javamodel/ast/AnnotationDeclarations.java      |   8 +-
 .../tooling/javamodel/ast/FieldDeclarations.java   |  38 +--
 .../ROOT/partials/security/user-registration.adoc  |   2 +-
 .../modules/ROOT/partials/security/web-xml.adoc    |   1 +
 .../wicket/viewer/mixins/Object_clearHints.java    |   6 +-
 160 files changed, 967 insertions(+), 1744 deletions(-)

diff --git a/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc b/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
index f994c1a..081a850 100644
--- a/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
+++ b/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
@@ -278,7 +278,7 @@ Using the xref:refguide:applib:index/annotation/Title.adoc[@Title] annotation (i
 
 
 |link:https://www.youtube.com/watch?v=yi52Gbd3lmY[027^] +
-How to write an xref:testing:integtestsupport:about.adoc[integration test] for an xref:refguide:applib-ant:Mixin.adoc[mixin].
+How to write an xref:testing:integtestsupport:about.adoc[integration test] for a mixin.
 ||x|||||||||
 
 
diff --git a/antora/components/refguide-index/modules/_overview/pages/about.adoc b/antora/components/refguide-index/modules/_overview/pages/about.adoc
index b643bad..21c7aa3 100644
--- a/antora/components/refguide-index/modules/_overview/pages/about.adoc
+++ b/antora/components/refguide-index/modules/_overview/pages/about.adoc
@@ -33,7 +33,7 @@ package "App\n[Software System]" {
 .Projects/Modules (App)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Starter Parent
 [source,yaml]
@@ -126,7 +126,7 @@ package "Mavendeps\n[Software System]" {
 .Projects/Modules (Mavendeps)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Maven Deps
 [source,yaml]
@@ -408,7 +408,7 @@ package "Testing\n[Software System]" {
 .Projects/Modules (Testing)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Testing
 [source,yaml]
@@ -439,12 +439,7 @@ Artifact: isis-testing-fakedata-applib
 Type: jar
 Directory: /testing/fakedata/applib
 ----
-|.Components
-****
-o.a.i.testing.fakedata.applib.services.FakeDataService +
-****
-
-.Dependencies
+|.Dependencies
 ****
 com.github.javafaker:javafaker:jar:<managed> +
 org.apache.isis.commons:isis-commons:jar:<managed> +
@@ -545,12 +540,7 @@ Artifact: isis-testing-h2console-ui
 Type: jar
 Directory: /testing/h2console/ui
 ----
-|.Components
-****
-o.a.i.testing.h2console.ui.webmodule.WebModuleH2Console +
-****
-
-.Dependencies
+|.Dependencies
 ****
 com.h2database:h2:jar:<managed> +
 org.apache.isis.core:isis-core-webapp:jar:<managed> +
@@ -608,12 +598,7 @@ Artifact: isis-testing-integtestsupport-applib
 Type: jar
 Directory: /testing/integtestsupport/applib
 ----
-|.Components
-****
-o.a.i.testing.integtestsupport.applib.IsisIntegrationTestAbstract$InteractionSupport +
-****
-
-.Dependencies
+|.Dependencies
 ****
 com.approvaltests:approvaltests:jar:<managed> +
 com.h2database:h2:jar:<managed> +
@@ -767,7 +752,7 @@ package "Examples\n[Software System]" {
 .Projects/Modules (Examples)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Demo - Parent
 [source,yaml]
@@ -1134,7 +1119,7 @@ package "Root\n[Software System]" {
 .Projects/Modules (Root)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis (Aggregator)
 [source,yaml]
@@ -1213,7 +1198,7 @@ package "Commons\n[Software System]" {
 .Projects/Modules (Commons)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Commons
 [source,yaml]
@@ -1369,7 +1354,7 @@ package "Core\n[Software System]" {
 .Projects/Modules (Core)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Core
 [source,yaml]
@@ -1424,7 +1409,7 @@ org.jmock:jmock:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:applib:index/AbstractViewModel.adoc[AbstractViewModel], xref:refguide:applib:index/Identifier.adoc[Identifier], xref:refguide:applib:index/IsisModuleApplib.adoc[IsisModuleApplib], xref:refguide:applib:index/RecreatableDomainObject.adoc[RecreatableDomainObject], xref:refguide:applib:index/ViewModel.adoc[ViewModel], xref:refguide:applib:index/adapters/AbstractValueSemanticsProvider.adoc[AbstractValueSemanticsProvider], xref:refguide:applib:index/adapters/DefaultsProvider.adoc [...]
+xref:refguide:applib:index/AbstractViewModel.adoc[AbstractViewModel], xref:refguide:applib:index/Identifier.adoc[Identifier], xref:refguide:applib:index/IsisModuleApplib.adoc[IsisModuleApplib], xref:refguide:applib:index/RecreatableDomainObject.adoc[RecreatableDomainObject], xref:refguide:applib:index/ViewModel.adoc[ViewModel], xref:refguide:applib:index/adapters/AbstractValueSemanticsProvider.adoc[AbstractValueSemanticsProvider], xref:refguide:applib:index/adapters/DefaultsProvider.adoc [...]
 ****
 
 |Apache Isis Core - Code Gen (ByteBuddy)
@@ -1901,7 +1886,7 @@ package "JDO\n[Software System]" {
 .Projects/Modules (JDO)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Persistence - JDO
 [source,yaml]
@@ -2125,7 +2110,7 @@ package "JPA\n[Software System]" {
 .Projects/Modules (JPA)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Persistence - JPA
 [source,yaml]
@@ -2258,7 +2243,7 @@ package "Security\n[Software System]" {
 .Projects/Modules (Security)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Security - Spring
 [source,yaml]
@@ -2319,7 +2304,7 @@ package "Bypass\n[Software System]" {
 .Projects/Modules (Bypass)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Security - Bypass
 [source,yaml]
@@ -2376,7 +2361,7 @@ package "Keycloak\n[Software System]" {
 .Projects/Modules (Keycloak)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Security - Keycloak
 [source,yaml]
@@ -2438,7 +2423,7 @@ package "Shiro\n[Software System]" {
 .Projects/Modules (Shiro)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Security - Shiro
 [source,yaml]
@@ -2503,7 +2488,7 @@ package "Viewer\n[Software System]" {
 .Projects/Modules (Viewer)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Viewer - Common Model
 [source,yaml]
@@ -2594,7 +2579,7 @@ package "Restful Objects\n[Software System]" {
 .Projects/Modules (Restful Objects)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Viewer - RO
 [source,yaml]
@@ -2802,7 +2787,7 @@ package "Wicket\n[Software System]" {
 .Projects/Modules (Wicket)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Viewer - Wicket
 [source,yaml]
@@ -2918,7 +2903,7 @@ org.springframework:spring-web:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:viewer:index/wicket/viewer/IsisModuleViewerWicketViewer.adoc[IsisModuleViewerWicketViewer]
+xref:refguide:viewer:index/wicket/viewer/IsisModuleViewerWicketViewer.adoc[IsisModuleViewerWicketViewer], xref:refguide:viewer:index/wicket/viewer/mixins/Object_clearHints.adoc[Object_clearHints]
 ****
 |===
 
@@ -2987,7 +2972,7 @@ package "Valuetypes\n[Software System]" {
 .Projects/Modules (Valuetypes)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Value types
 [source,yaml]
@@ -3042,12 +3027,7 @@ Artifact: isis-valuetypes-sse-metamodel
 Type: jar
 Directory: /valuetypes/sse/metamodel
 ----
-|.Components
-****
-o.a.i.valuetypes.sse.metamodel.facets.SseAnnotationFacetFactory$Register +
-****
-
-.Dependencies
+|.Dependencies
 ****
 org.apache.isis.core:isis-core-metamodel:jar:<managed> +
 org.apache.isis.valuetypes:isis-valuetypes-sse-applib:jar:<managed> +
@@ -3075,15 +3055,7 @@ Artifact: isis-valuetypes-sse-ui-wkt
 Type: jar
 Directory: /valuetypes/sse/ui/wicket
 ----
-|.Components
-****
-o.a.i.valuetypes.sse.ui.wkt.markup.ListeningMarkupPanelFactoriesForWicket$Parented +
-o.a.i.valuetypes.sse.ui.wkt.markup.ListeningMarkupPanelFactoriesForWicket$Standalone +
-o.a.i.valuetypes.sse.ui.wkt.services.SseServiceDefault +
-o.a.i.valuetypes.sse.ui.wkt.webmodule.WebModuleServerSentEvents +
-****
-
-.Dependencies
+|.Dependencies
 ****
 org.apache.isis.valuetypes:isis-valuetypes-sse-metamodel:jar:<managed> +
 org.apache.isis.viewer:isis-viewer-wicket-ui:jar:<managed> +
@@ -3173,7 +3145,7 @@ package "Asciidoc\n[Software System]" {
 .Projects/Modules (Asciidoc)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Val - Asciidoctor (parent)
 [source,yaml]
@@ -3213,13 +3185,7 @@ Artifact: isis-valuetypes-asciidoc-metamodel
 Type: jar
 Directory: /valuetypes/asciidoc/metamodel
 ----
-|.Components
-****
-o.a.i.valuetypes.asciidoc.metamodel.AsciiDocMetaModelRefiner +
-o.a.i.valuetypes.asciidoc.metamodel.AsciiDocValueTypeProvider +
-****
-
-.Dependencies
+|.Dependencies
 ****
 org.apache.isis.core:isis-core-metamodel:jar:<managed> +
 org.apache.isis.valuetypes:isis-valuetypes-asciidoc-applib:jar:<managed> +
@@ -3288,12 +3254,7 @@ Artifact: isis-valuetypes-asciidoc-ui-vaa
 Type: jar
 Directory: /valuetypes/asciidoc/ui/vaadin
 ----
-|.Components
-****
-o.a.i.valuetypes.asciidoc.ui.vaa.components.AsciiDocFieldFactoryVaa +
-****
-
-.Dependencies
+|.Dependencies
 ****
 org.apache.isis.incubator.viewer:isis-viewer-vaadin-ui:jar:${project.version} +
 ****
@@ -3306,19 +3267,7 @@ Artifact: isis-valuetypes-asciidoc-ui-wkt
 Type: jar
 Directory: /valuetypes/asciidoc/ui/wicket
 ----
-|.Components
-****
-o.a.i.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt$Parented +
-o.a.i.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt$Standalone +
-o.a.i.valuetypes.asciidoc.ui.wkt.components.schema.chg.v2.ChangesDtoPanelFactoriesWkt$Parented +
-o.a.i.valuetypes.asciidoc.ui.wkt.components.schema.chg.v2.ChangesDtoPanelFactoriesWkt$Standalone +
-o.a.i.valuetypes.asciidoc.ui.wkt.components.schema.cmd.v2.CommandDtoPanelFactoriesWkt$Parented +
-o.a.i.valuetypes.asciidoc.ui.wkt.components.schema.cmd.v2.CommandDtoPanelFactoriesWkt$Standalone +
-o.a.i.valuetypes.asciidoc.ui.wkt.components.schema.ixn.v2.InteractionDtoPanelFactoriesWkt$Parented +
-o.a.i.valuetypes.asciidoc.ui.wkt.components.schema.ixn.v2.InteractionDtoPanelFactoriesWkt$Standalone +
-****
-
-.Dependencies
+|.Dependencies
 ****
 org.apache.isis.viewer:isis-viewer-wicket-ui:jar:<managed> +
 ****
@@ -3401,7 +3350,7 @@ package "Markdown\n[Software System]" {
 .Projects/Modules (Markdown)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Val - Markdown (parent)
 [source,yaml]
@@ -3441,13 +3390,7 @@ Artifact: isis-valuetypes-markdown-metamodel
 Type: jar
 Directory: /valuetypes/markdown/metamodel
 ----
-|.Components
-****
-o.a.i.valuetypes.markdown.metamodel.MarkdownMetaModelRefiner +
-o.a.i.valuetypes.markdown.metamodel.MarkdownValueTypeProvider +
-****
-
-.Dependencies
+|.Dependencies
 ****
 org.apache.isis.core:isis-core-metamodel:jar:<managed> +
 org.apache.isis.valuetypes:isis-valuetypes-markdown-applib:jar:<managed> +
@@ -3558,7 +3501,7 @@ package "Mappings\n[Software System]" {
 .Projects/Modules (Mappings)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Mappings
 [source,yaml]
@@ -3621,7 +3564,7 @@ package "JAX-RS Client Library\n[Software System]" {
 .Projects/Modules (JAX-RS Client Library)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Map - JaxRS Client (parent)
 [source,yaml]
@@ -3703,7 +3646,7 @@ package "REST Client\n[Software System]" {
 .Projects/Modules (REST Client)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Ext - REST Client (parent)
 [source,yaml]
@@ -3859,12 +3802,12 @@ skinparam rectangle<<20>> {
   FontColor #fffffe
   BorderColor #2E6295
 }
-skinparam rectangle<<10>> {
+skinparam rectangle<<21>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
 }
-skinparam rectangle<<21>> {
+skinparam rectangle<<10>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
@@ -3921,7 +3864,7 @@ package "Extensions\n[Software System]" {
 .Projects/Modules (Extensions)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Extensions
 [source,yaml]
@@ -3988,12 +3931,7 @@ Artifact: isis-extensions-exceldownload-ui
 Type: jar
 Directory: /extensions/vw/exceldownload/ui
 ----
-|.Components
-****
-o.a.i.extensions.viewer.wicket.exceldownload.ui.components.CollectionContentsAsExcelFactory +
-****
-
-.Dependencies
+|.Dependencies
 ****
 org.apache.isis.viewer:isis-viewer-wicket-ui:jar:<managed> +
 org.apache.poi:poi-ooxml:jar:<managed> +
@@ -4118,12 +4056,7 @@ Artifact: isis-extensions-pdfjs-metamodel
 Type: jar
 Directory: /extensions/vw/pdfjs/metamodel
 ----
-|.Components
-****
-o.a.i.extensions.viewer.wicket.pdfjs.metamodel.facet.PdfJsViewerFacetFromAnnotationFactory$Register +
-****
-
-.Dependencies
+|.Dependencies
 ****
 de.agilecoders.wicket:wicket-bootstrap-core:jar:<managed> +
 org.apache.isis.core:isis-core-metamodel:jar:<managed> +
@@ -4138,12 +4071,7 @@ Artifact: isis-extensions-pdfjs-ui
 Type: jar
 Directory: /extensions/vw/pdfjs/ui
 ----
-|.Components
-****
-o.a.i.extensions.viewer.wicket.pdfjs.ui.components.PdfJsViewerPanelComponentFactory +
-****
-
-.Dependencies
+|.Dependencies
 ****
 org.apache.isis.extensions:isis-extensions-pdfjs-metamodel:jar:<managed> +
 org.apache.isis.viewer:isis-viewer-wicket-ui:jar:<managed> +
@@ -4232,7 +4160,7 @@ org.apache.isis.extensions:isis-extensions-secman-api:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:extensions:index/secman/model/IsisModuleExtSecmanModel.adoc[IsisModuleExtSecmanModel], xref:refguide:extensions:index/secman/model/app/user/MeService.adoc[MeService]
+xref:refguide:extensions:index/secman/model/IsisModuleExtSecmanModel.adoc[IsisModuleExtSecmanModel], xref:refguide:extensions:index/secman/model/dom/user/MeService.adoc[MeService]
 ****
 
 |Apache Isis Ext - Sec Man Persistence (Using JDO)
@@ -4390,7 +4318,7 @@ package "Core: Command Log\n[Software System]" {
 .Projects/Modules (Core: Command Log)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Ext - Command Log
 [source,yaml]
@@ -4432,7 +4360,7 @@ org.apache.isis.testing:isis-testing-unittestsupport-applib:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:extensions:index/commandlog/impl/CommandSubscriberForJdo.adoc[CommandSubscriberForJdo], xref:refguide:extensions:index/commandlog/impl/IsisModuleExtCommandLogImpl.adoc[IsisModuleExtCommandLogImpl], xref:refguide:extensions:index/commandlog/impl/mixins/HasInteractionId_command.adoc[HasUniqueId_command], xref:refguide:extensions:index/commandlog/impl/mixins/HasUsername_recentCommandsByUser.adoc[HasUsername_recentCommandsByUser], xref:refguide:extensions:index/commandlog/impl/ [...]
+xref:refguide:extensions:index/commandlog/impl/CommandSubscriberForJdo.adoc[CommandSubscriberForJdo], xref:refguide:extensions:index/commandlog/impl/IsisModuleExtCommandLogImpl.adoc[IsisModuleExtCommandLogImpl], xref:refguide:extensions:index/commandlog/impl/mixins/HasInteractionId_command.adoc[HasInteractionId_command], xref:refguide:extensions:index/commandlog/impl/mixins/HasUsername_recentCommandsByUser.adoc[HasUsername_recentCommandsByUser], xref:refguide:extensions:index/commandlog/ [...]
 ****
 |===
 
@@ -4480,7 +4408,7 @@ package "Core: Command Replay\n[Software System]" {
 .Projects/Modules (Core: Command Replay)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Ext - Command Replay
 [source,yaml]
@@ -4594,7 +4522,7 @@ package "Core: Model Annotation\n[Software System]" {
 .Projects/Modules (Core: Model Annotation)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Ext - @Model
 [source,yaml]
@@ -4661,7 +4589,7 @@ package "Core: Quartz\n[Software System]" {
 .Projects/Modules (Core: Quartz)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Ext - Quartz
 [source,yaml]
@@ -4807,7 +4735,7 @@ package "Subdomains\n[Software System]" {
 .Projects/Modules (Subdomains)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Subdomains
 [source,yaml]
@@ -4937,12 +4865,7 @@ Artifact: isis-subdomains-zip-applib
 Type: jar
 Directory: /subdomains/zip/applib
 ----
-|.Components
-****
-o.a.i.extensions.zip.dom.impl.ZipService +
-****
-
-.Dependencies
+|.Dependencies
 ****
 org.apache.isis.commons:isis-commons:jar:<managed> +
 org.apache.isis.core:isis-applib:jar:<managed> +
@@ -4987,7 +4910,7 @@ package "Base\n[Software System]" {
 .Projects/Modules (Base)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Sub - Base (parent)
 [source,yaml]
@@ -5007,12 +4930,7 @@ Artifact: isis-subdomains-base-applib
 Type: jar
 Directory: /subdomains/base/applib
 ----
-|.Components
-****
-o.a.i.subdomains.base.applib.services.calendar.CalendarService +
-****
-
-.Dependencies
+|.Dependencies
 ****
 org.apache.isis.commons:isis-commons:jar:<managed> +
 org.apache.isis.core:isis-applib:jar:<managed> +
@@ -5085,7 +5003,7 @@ package "Excel\n[Software System]" {
 .Projects/Modules (Excel)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Sub - Excel (parent)
 [source,yaml]
@@ -5107,12 +5025,7 @@ Artifact: isis-subdomains-excel-applib
 Type: jar
 Directory: /subdomains/excel/applib
 ----
-|.Components
-****
-o.a.i.subdomains.excel.applib.dom.ExcelService +
-****
-
-.Dependencies
+|.Dependencies
 ****
 org.apache.isis.core:isis-applib:jar:<managed> +
 org.apache.isis.core:isis-core-internaltestsupport:jar:<managed> +
@@ -5221,7 +5134,7 @@ package "Spring\n[Software System]" {
 .Projects/Modules (Spring)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Sub - Spring (parent)
 [source,yaml]
@@ -5241,12 +5154,7 @@ Artifact: isis-subdomains-spring-applib
 Type: jar
 Directory: /subdomains/spring/applib
 ----
-|.Components
-****
-o.a.i.subdomains.spring.applib.service.SpringBeansService +
-****
-
-.Dependencies
+|.Dependencies
 ****
 org.apache.isis.core:isis-applib:jar:<managed> +
 org.apache.isis.core:isis-core-runtime:jar:<managed> +
@@ -5295,7 +5203,7 @@ package "XDocReport\n[Software System]" {
 .Projects/Modules (XDocReport)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Sub - XdocReport (parent)
 [source,yaml]
@@ -5315,12 +5223,7 @@ Artifact: isis-subdomains-xdocreport-applib
 Type: jar
 Directory: /subdomains/xdocreport/applib
 ----
-|.Components
-****
-o.a.i.subdomains.xdocreport.applib.service.XDocReportService +
-****
-
-.Dependencies
+|.Dependencies
 ****
 fr.opensagres.xdocreport:fr.opensagres.xdocreport.converter.docx.xwpf:jar:<managed> +
 fr.opensagres.xdocreport:fr.opensagres.xdocreport.document.docx:jar:<managed> +
@@ -5410,7 +5313,7 @@ package "Tooling\n[Software System]" {
 .Projects/Modules (Tooling)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis - Tooling
 [source,yaml]
@@ -5589,7 +5492,7 @@ package "Regression Tests\n[Software System]" {
 .Projects/Modules (Regression Tests)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis - Regression Tests
 [source,yaml]
@@ -5637,24 +5540,7 @@ Artifact: isis-regressiontests-stable
 Type: jar
 Directory: /regressiontests/stable
 ----
-|.Components
-****
-o.a.i.testdomain.applayer.ApplicationLayerTestFactory +
-o.a.i.testdomain.applayer.ApplicationLayerTestFactory$PreCommitListener +
-o.a.i.testdomain.applayer.publishing.CommandSubscriberForTesting +
-o.a.i.testdomain.applayer.publishing.EntityChangesSubscriberForTesting +
-o.a.i.testdomain.applayer.publishing.EntityPropertyChangeSubscriberForTesting +
-o.a.i.testdomain.applayer.publishing.ExecutionSubscriberForTesting +
-o.a.i.testdomain.conf.Configuration_headless$HeadlessCommandSupport +
-o.a.i.testdomain.jdo.JdoInventoryDao +
-o.a.i.testdomain.jpa.JpaInventoryDao +
-o.a.i.testdomain.jpa.springdata.EmployeeRepository +
-o.a.i.testdomain.util.interaction.InteractionBoundaryProbe +
-o.a.i.testdomain.util.kv.KVStoreForTesting +
-o.a.i.testdomain.util.rest.RestEndpointService +
-****
-
-.Dependencies
+|.Dependencies
 ****
 org.apache.isis.extensions:isis-extensions-cors-impl:jar:<managed> +
 org.glassfish.jersey.ext:jersey-spring5:jar:<managed> +
@@ -5691,7 +5577,7 @@ package "Incubator\n[Software System]" {
 .Projects/Modules (Incubator)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Incubator
 [source,yaml]
@@ -5739,7 +5625,7 @@ package "Kroviz Client\n[Software System]" {
 .Projects/Modules (Kroviz Client)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Inc - Client kroViz
 [source,yaml]
@@ -5803,7 +5689,7 @@ package "JavaFX Viewer\n[Software System]" {
 .Projects/Modules (JavaFX Viewer)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Inc - Viewer JavaFX
 [source,yaml]
@@ -5842,7 +5728,30 @@ Artifact: isis-viewer-javafx-ui
 Type: jar
 Directory: /incubator/viewers/javafx/ui
 ----
-|.Dependencies
+|.Components
+****
+o.a.i.incubator.viewer.javafx.ui.components.UiComponentFactoryFx +
+o.a.i.incubator.viewer.javafx.ui.components.markup.MarkupFieldFactory +
+o.a.i.incubator.viewer.javafx.ui.components.number.NumberFieldFactory +
+o.a.i.incubator.viewer.javafx.ui.components.objectref.ObjectReferenceFieldFactory +
+o.a.i.incubator.viewer.javafx.ui.components.other.FallbackFieldFactory +
+o.a.i.incubator.viewer.javafx.ui.components.temporal.TemporalFieldFactory +
+o.a.i.incubator.viewer.javafx.ui.components.text.TextFieldFactory +
+o.a.i.incubator.viewer.javafx.ui.decorator.disabling.DisablingDecoratorForButton +
+o.a.i.incubator.viewer.javafx.ui.decorator.disabling.DisablingDecoratorForFormField +
+o.a.i.incubator.viewer.javafx.ui.decorator.icon.IconDecoratorForLabeled +
+o.a.i.incubator.viewer.javafx.ui.decorator.icon.IconDecoratorForMenuItem +
+o.a.i.incubator.viewer.javafx.ui.decorator.icon.IconServiceDefault +
+o.a.i.incubator.viewer.javafx.ui.decorator.prototyping.PrototypingDecoratorForButton +
+o.a.i.incubator.viewer.javafx.ui.decorator.prototyping.PrototypingDecoratorForFormField +
+o.a.i.incubator.viewer.javafx.ui.decorator.prototyping.PrototypingInfoPopupProvider +
+o.a.i.incubator.viewer.javafx.ui.main.MainViewFx +
+o.a.i.incubator.viewer.javafx.ui.main.UiActionHandlerFx +
+o.a.i.incubator.viewer.javafx.ui.main.UiBuilderFx +
+o.a.i.incubator.viewer.javafx.ui.main.UiContextFxDefault +
+****
+
+.Dependencies
 ****
 org.apache.isis.core:isis-core-runtimeservices:jar:<managed> +
 org.apache.isis.incubator.viewer:isis-viewer-javafx-model:jar:<managed> +
@@ -5913,7 +5822,7 @@ package "Vaadin Viewer\n[Software System]" {
 .Projects/Modules (Vaadin Viewer)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Inc - Viewer Vaadin
 [source,yaml]
@@ -5949,23 +5858,7 @@ Artifact: isis-viewer-vaadin-ui
 Type: jar
 Directory: /incubator/viewers/vaadin/ui
 ----
-|.Components
-****
-o.a.i.incubator.viewer.vaadin.ui.auth.LogoutHandlerVaa +
-o.a.i.incubator.viewer.vaadin.ui.auth.VaadinAuthenticationHandler +
-o.a.i.incubator.viewer.vaadin.ui.components.UiComponentFactoryVaa +
-o.a.i.incubator.viewer.vaadin.ui.components.blob.BlobFieldFactory +
-o.a.i.incubator.viewer.vaadin.ui.components.clob.ClobFieldFactory +
-o.a.i.incubator.viewer.vaadin.ui.components.markup.MarkupFieldFactory +
-o.a.i.incubator.viewer.vaadin.ui.components.other.FallbackFieldFactory +
-o.a.i.incubator.viewer.vaadin.ui.components.temporal.TemporalFieldFactory +
-o.a.i.incubator.viewer.vaadin.ui.components.text.TextFieldFactory +
-o.a.i.incubator.viewer.vaadin.ui.components.text.uuid.UuidFieldFactory +
-o.a.i.incubator.viewer.vaadin.ui.pages.main.UiActionHandlerVaa +
-o.a.i.incubator.viewer.vaadin.ui.pages.main.UiContextVaaDefault +
-****
-
-.Dependencies
+|.Dependencies
 ****
 com.vaadin:vaadin:jar:<managed> +
 com.vaadin:vaadin-spring:jar:<managed> +
@@ -6053,7 +5946,7 @@ package "Legacy\n[Software System]" {
 .Projects/Modules (Legacy)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Legacy
 [source,yaml]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/annotation/hooks/ActionLayout_029-redirect.adoc b/antora/components/refguide-index/modules/applib/pages/index/annotation/hooks/ActionLayout_029-redirect.adoc
index e90e99a..6798de9 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/annotation/hooks/ActionLayout_029-redirect.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/annotation/hooks/ActionLayout_029-redirect.adoc
@@ -21,7 +21,7 @@ Any properties with xref:refguide:applib:index/annotation/PropertyLayout.adoc#re
 
 * if set to `AS_CONFIGURED`, then the default behaviour is as specified by the `isis.viewer.wicket.redirectEvenIfSameObject` xref:vw:ROOT:configuration-properties.adoc[configuration property]).
 
-One use case for choosing `EVEN_IF_SAME` is if the action "returning this" is intended in some way to require that the object use a different layout, as per multiple layout support, as specified using the xref:refguide:applib-methods:reserved.adoc#layout[layout()] method.
+One use case for choosing `EVEN_IF_SAME` is if the action "returning this" is intended in some way to require that the object use a different layout, as per multiple layout support, as specified using the xref:refguide:applib-methods:ui-hints.adoc#layout[layout()] method.
 
 For example:
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/annotation/hooks/DomainObjectLayout_023-cssClassFa.adoc b/antora/components/refguide-index/modules/applib/pages/index/annotation/hooks/DomainObjectLayout_023-cssClassFa.adoc
index 90d6ab5..bdc848b 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/annotation/hooks/DomainObjectLayout_023-cssClassFa.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/annotation/hooks/DomainObjectLayout_023-cssClassFa.adoc
@@ -7,7 +7,7 @@
 
 The xref:refguide:applib:index/annotation/DomainObjectLayout.adoc#cssClassFa[cssClassFa()] element is used to specify the name of a link:http://fortawesome.github.io/Font-Awesome/icons/[Font Awesome icon] name, to be rendered as the domain object's icon.
 
-If necessary the icon specified can be overridden by a particular object instance using the xref:refguide:applib-methods:reserved.adoc#iconName[iconName()] method.
+If necessary the icon specified can be overridden by a particular object instance using the xref:refguide:applib-methods:ui-hints.adoc#iconName[iconName()] method.
 
 For example:
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/annotation/hooks/DomainObjectLayout_027-ui-events.adoc b/antora/components/refguide-index/modules/applib/pages/index/annotation/hooks/DomainObjectLayout_027-ui-events.adoc
index ed050cf..8937aa8 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/annotation/hooks/DomainObjectLayout_027-ui-events.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/annotation/hooks/DomainObjectLayout_027-ui-events.adoc
@@ -47,7 +47,7 @@ this is a convenient way of ensuring an event is fired even if the hook has been
 
 * if set to the "Noop" subclass, then an event will _not_ be fired.
 
-If the domain object implements the corresponding  xref:refguide:applib-methods:reserved.adoc[reserved method] directly (for example xref:refguide:applib-methods:reserved.adoc#title[title()], then that will take precedence.
+If the domain object implements the corresponding  xref:refguide:applib-methods:ui-hints.adoc[reserved method] directly (for example xref:refguide:applib-methods:ui-hints.adoc#title[title()], then that will take precedence.
 
 The table below summarises all the UI event hooks:
 
@@ -65,7 +65,7 @@ The table below summarises all the UI event hooks:
 m| CssClassUiEvent.Default +
 CssClassUiEvent.Doop +
 CssClassUiEvent.Noop
-|xref:refguide:applib-methods:reserved.adoc#cssClass[cssClass()]
+|xref:refguide:applib-methods:ui-hints.adoc#cssClass[cssClass()]
 
 | Icon Name
 |xref:refguide:config:sections/isis.applib.adoc#isis.applib.annotation.domain-object-layout.icon-ui-event.post-for-default[isis.applib.annotation.domain-object-layout.icon-ui-event.post-for-default]
@@ -73,7 +73,7 @@ CssClassUiEvent.Noop
 m| IconUiEvent.Default +
 IconUiEvent.Doop +
 IconUiEvent.Noop
-|xref:refguide:applib-methods:reserved.adoc#iconName[iconName()]
+|xref:refguide:applib-methods:ui-hints.adoc#iconName[iconName()]
 
 | Layout
 |xref:refguide:config:sections/isis.applib.adoc#isis.applib.annotation.domain-object-layout.layout-ui-event.post-for-default[isis.applib.annotation.domain-object-layout.layout-ui-event.post-for-default]
@@ -81,7 +81,7 @@ IconUiEvent.Noop
 m| LayoutUiEvent.Default +
 LayoutUiEvent.Doop +
 LayoutUiEvent.Noop
-|xref:refguide:applib-methods:reserved.adoc#layout[layout()]
+|xref:refguide:applib-methods:ui-hints.adoc#layout[layout()]
 
 | Title
 |xref:refguide:config:sections/isis.applib.adoc#isis.applib.annotation.domain-object-layout.title-ui-event.post-for-default[isis.applib.annotation.domain-object-layout.title-ui-event.post-for-default]
@@ -89,7 +89,7 @@ LayoutUiEvent.Noop
 m| TitleUiEvent.Default +
 TitleUiEvent.Doop +
 TitleUiEvent.Noop
-|xref:refguide:applib-methods:reserved.adoc#title[title()]
+|xref:refguide:applib-methods:ui-hints.adoc#title[title()]
 
 |===
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/annotation/hooks/DomainService_021-objectType.adoc b/antora/components/refguide-index/modules/applib/pages/index/annotation/hooks/DomainService_021-objectType.adoc
index 53a375f..6b7b5dc 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/annotation/hooks/DomainService_021-objectType.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/annotation/hooks/DomainService_021-objectType.adoc
@@ -34,7 +34,7 @@ public class OrderMenu {
 The rules of precedence are:
 
 1. `@DomainService#objectType`
-2. xref:refguide:applib-methods:reserved.adoc#getId[getId()]
+2. xref:refguide:applib-methods:ui-hints.adoc#getId[getId()]
 3. The fully qualified class name.
 
 [TIP]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/graph/SimpleEdge.adoc b/antora/components/refguide-index/modules/applib/pages/index/graph/SimpleEdge.adoc
index 852eb46..0e142c3 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/graph/SimpleEdge.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/graph/SimpleEdge.adoc
@@ -9,8 +9,6 @@ Fundamental building block for graph structures.
 .SimpleEdge.java
 ----
 class SimpleEdge<T> {
-  Vertex<T> from;
-  Vertex<T> to;
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/jaxb/JavaSqlXMLGregorianCalendarMarshalling.adoc b/antora/components/refguide-index/modules/applib/pages/index/jaxb/JavaSqlXMLGregorianCalendarMarshalling.adoc
index d5995c8..49725a0 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/jaxb/JavaSqlXMLGregorianCalendarMarshalling.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/jaxb/JavaSqlXMLGregorianCalendarMarshalling.adoc
@@ -7,7 +7,6 @@
 .JavaSqlXMLGregorianCalendarMarshalling.java
 ----
 class JavaSqlXMLGregorianCalendarMarshalling {
-  static DatatypeFactory datatypeFactory;
   Timestamp toTimestamp(final XMLGregorianCalendar calendar)
   XMLGregorianCalendar toXMLGregorianCalendar(final Timestamp timestamp)
 }
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXml.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXml.adoc
index 1c28cd8..c6cb340 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXml.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXml.adoc
@@ -11,10 +11,14 @@ Requires that the view model is a JAXB view model, and implements the xref:refgu
 .Dto_downloadXml.java
 ----
 class Dto_downloadXml {
-  @Inject
-JaxbService jaxbService;
   Object act(final String fileName)
-  String default0Act()
+  String default0Act()     // <.>
 }
 ----
 
+<.> xref:#default0Act__[default0Act()]
+
+== Members
+
+[#default0Act__]
+=== default0Act()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXsd.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXsd.adoc
index e468692..f0f4b32 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXsd.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXsd.adoc
@@ -13,13 +13,9 @@ If the domain object's JAXB annotations reference only a single XSD schema then
 .Dto_downloadXsd.java
 ----
 class Dto_downloadXsd {
-  @Inject
-MessageService messageService;
-  @Inject
-JaxbService jaxbService;
   Object act(final String fileName, final IsisSchemas isisSchemas)     // <.>
-  String default0Act()
-  IsisSchemas default1Act()
+  String default0Act()     // <.>
+  IsisSchemas default1Act()     // <.>
 }
 ----
 
@@ -28,6 +24,16 @@ JaxbService jaxbService;
 --
 The _IsisSchemas_ parameter can be used to optionally ignore the common Apache Isis schemas; useful if there is only one other XSD schema referenced by the DTO.
 --
+<.> xref:#default0Act__[default0Act()]
++
+--
+Defaults to the fully qualified class name of the domain object.
+--
+<.> xref:#default1Act__[default1Act()]
++
+--
+Defaults to _IsisSchemas#IGNORE_
+--
 
 == Members
 
@@ -35,3 +41,13 @@ The _IsisSchemas_ parameter can be used to optionally ignore the common Apache I
 === act(String, IsisSchemas)
 
 The _IsisSchemas_ parameter can be used to optionally ignore the common Apache Isis schemas; useful if there is only one other XSD schema referenced by the DTO.
+
+[#default0Act__]
+=== default0Act()
+
+Defaults to the fully qualified class name of the domain object.
+
+[#default1Act__]
+=== default1Act()
+
+Defaults to _IsisSchemas#IGNORE_
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_downloadLayoutXml.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_downloadLayoutXml.adoc
index 7ea956c..c76cd63 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_downloadLayoutXml.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_downloadLayoutXml.adoc
@@ -1,7 +1,7 @@
 = Object_downloadLayoutXml
 :Notice: 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 ag [...]
 
-Provides a mixin to download the layout XML for any domain object.
+Provides the ability to download the layout XML for any domain entity or view model.
 
 == API
 
@@ -9,12 +9,33 @@ Provides a mixin to download the layout XML for any domain object.
 .Object_downloadLayoutXml.java
 ----
 class Object_downloadLayoutXml {
-  @Inject
-LayoutService layoutService;
   Object act(final String fileName, final Style style)
-  String default0Act()
-  Style default1Act()
+  String default0Act()     // <.>
+  Style default1Act()     // <.>
 }
 ----
 
+<.> xref:#default0Act__[default0Act()]
++
+--
+Defaults to the (simple) name of the domain object's class, with a `.layout` suffix
+--
+<.> xref:#default1Act__[default1Act()]
++
+--
+Default style is _Style#NORMALIZED_ .
+--
+
+== Members
+
+[#default0Act__]
+=== default0Act()
+
+Defaults to the (simple) name of the domain object's class, with a `.layout` suffix
+
+[#default1Act__]
+=== default1Act()
+
+Default style is _Style#NORMALIZED_ .
+
 include::hooks/Object_downloadLayoutXml_see-also.adoc[]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/hooks/Object_downloadLayoutXml_see-also.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/hooks/Object_downloadLayoutXml_see-also.adoc
index f22c1a9..3c065cd 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/hooks/Object_downloadLayoutXml_see-also.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/hooks/Object_downloadLayoutXml_see-also.adoc
@@ -9,3 +9,5 @@
 
 * xref:refguide:applib:index/services/layout/LayoutService.adoc[LayoutService]
 
+* xref:refguide:applib:index/services/layout/Style.adoc[Style] (enum)
+
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_downloadMetamodelXml.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_downloadMetamodelXml.adoc
index 48356c8..d7be89a 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_downloadMetamodelXml.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_downloadMetamodelXml.adoc
@@ -1,20 +1,28 @@
 = Object_downloadMetamodelXml
 :Notice: 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 ag [...]
 
+Provides the ability to download the framework's internal metamodel for any domain entity or view model, in XML format.
+
 == API
 
 [source,java]
 .Object_downloadMetamodelXml.java
 ----
 class Object_downloadMetamodelXml {
-  @Inject
-MetaModelService metaModelService;
-  @Inject
-JaxbService jaxbService;
-  @Inject
-MetaModelServiceMenu metaModelServiceMenu;
   Object act(final String fileName)
-  String default0Act()
+  String default0Act()     // <.>
 }
 ----
 
+<.> xref:#default0Act__[default0Act()]
++
+--
+Defaults to the simple name of the domain object's class.
+--
+
+== Members
+
+[#default0Act__]
+=== default0Act()
+
+Defaults to the simple name of the domain object's class.
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_objectIdentifier.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_objectIdentifier.adoc
index 1f4c7bc..24bc7d0 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_objectIdentifier.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_objectIdentifier.adoc
@@ -1,6 +1,10 @@
 = Object_objectIdentifier
 :Notice: 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 ag [...]
 
+Contributes a property exposing the internal identifier of the domain object, typically as specified by _DomainObject#objectType()_ .
+
+The object identifier is also accessible from the _org.apache.isis.applib.services.bookmark.Bookmark_ of the object.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_objectType.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_objectType.adoc
index 1f633b3..a9a39e8 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_objectType.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_objectType.adoc
@@ -1,6 +1,10 @@
 = Object_objectType
 :Notice: 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 ag [...]
 
+Contributes a property exposing the logical object type of the domain object, typically as specified by _DomainObject#objectType()_ .
+
+The object type is also accessible from the _org.apache.isis.applib.services.bookmark.Bookmark_ of the object.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_rebuildMetamodel.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_rebuildMetamodel.adoc
similarity index 96%
rename from antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_rebuildMetamodel.adoc
rename to antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_rebuildMetamodel.adoc
index bd41993..7b3078d 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_rebuildMetamodel.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_rebuildMetamodel.adoc
@@ -9,8 +9,6 @@ Provides the ability to discard the current internal metamodel data for the doma
 .Object_rebuildMetamodel.java
 ----
 class Object_rebuildMetamodel {
-  @Inject
-MetaModelService metaModelService;
   Object act()
 }
 ----
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/hooks/Object_rebuildMetamodel_see-also.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/hooks/Object_rebuildMetamodel_see-also.adoc
similarity index 100%
rename from antora/components/refguide-index/modules/applib/pages/index/mixins/layout/hooks/Object_rebuildMetamodel_see-also.adoc
rename to antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/hooks/Object_rebuildMetamodel_see-also.adoc
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_openRestApi.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/rest/Object_openRestApi.adoc
similarity index 92%
rename from antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_openRestApi.adoc
rename to antora/components/refguide-index/modules/applib/pages/index/mixins/rest/Object_openRestApi.adoc
index e1749cb..8eb978f 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_openRestApi.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/rest/Object_openRestApi.adoc
@@ -9,10 +9,6 @@ Provides the ability to navigate to the corresponding URL of this domain object
 .Object_openRestApi.java
 ----
 class Object_openRestApi {
-  @Inject
-BookmarkService bookmarkService;
-  @Inject
-RestfulPathProvider restfulPathProvider;
   LocalResourcePath act()
 }
 ----
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/hooks/Object_openRestApi_see-also.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/rest/hooks/Object_openRestApi_see-also.adoc
similarity index 100%
rename from antora/components/refguide-index/modules/applib/pages/index/mixins/layout/hooks/Object_openRestApi_see-also.adoc
rename to antora/components/refguide-index/modules/applib/pages/index/mixins/rest/hooks/Object_openRestApi_see-also.adoc
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/system/DomainChangeRecord_openTargetObject.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/system/DomainChangeRecord_openTargetObject.adoc
index 064aeb8..0f7ce87 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/system/DomainChangeRecord_openTargetObject.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/system/DomainChangeRecord_openTargetObject.adoc
@@ -9,13 +9,6 @@ Provides the ability to navigate to a domain object from a xref:refguide:applib:
 .DomainChangeRecord_openTargetObject.java
 ----
 class DomainChangeRecord_openTargetObject {
-  @Inject
-BookmarkService bookmarkService;
-  @Inject
-MessageService messageService;
-  @Inject
-MetaModelService metaModelService;
-  DomainChangeRecord_openTargetObject(DomainChangeRecord domainChangeRecord)
   Object openTargetObject()
   boolean hideOpenTargetObject()
   String disableOpenTargetObject()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeature.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeature.adoc
new file mode 100644
index 0000000..1ba62ff
--- /dev/null
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeature.adoc
@@ -0,0 +1,81 @@
+= ApplicationFeature _(interface)_
+:Notice: 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 ag [...]
+
+== API
+
+[source,java]
+.ApplicationFeature.java
+----
+interface ApplicationFeature {
+  ApplicationFeatureId getFeatureId()
+  String getFullyQualifiedName()
+  Optional<ApplicationMemberSort> getMemberSort()     // <.>
+  SortedSet<ApplicationFeatureId> getMembersOfSort(final ApplicationMemberSort memberSort)
+  Optional<Class<?>> getActionReturnType()     // <.>
+  Optional<SemanticsOf> getActionSemantics()     // <.>
+  boolean isPropertyOrCollectionDerived()     // <.>
+  OptionalInt getPropertyTypicalLength()     // <.>
+  OptionalInt getPropertyMaxLength()     // <.>
+  SortedSet<ApplicationFeatureId> getContents()
+  SortedSet<ApplicationFeatureId> getProperties()
+  SortedSet<ApplicationFeatureId> getCollections()
+  SortedSet<ApplicationFeatureId> getActions()
+}
+----
+
+<.> xref:#getMemberSort__[getMemberSort()]
++
+--
+Returns optionally the member sort, based on whether this feature is of sort _ApplicationFeatureSort#MEMBER_ .
+--
+<.> xref:#getActionReturnType__[getActionReturnType()]
++
+--
+Returns optionally the action's return type, based on whether this feature is of sorts _ApplicationFeatureSort#MEMBER member_ and _ApplicationMemberSort#ACTION action_ .
+--
+<.> xref:#getActionSemantics__[getActionSemantics()]
++
+--
+Returns optionally the action's semantics, based on whether this feature is of sorts _ApplicationFeatureSort#MEMBER member_ and _ApplicationMemberSort#ACTION action_ .
+--
+<.> xref:#isPropertyOrCollectionDerived__[isPropertyOrCollectionDerived()]
+<.> xref:#getPropertyTypicalLength__[getPropertyTypicalLength()]
++
+--
+Returns optionally the property's semantics, based on whether this feature is of sorts _ApplicationFeatureSort#MEMBER member_ and _ApplicationMemberSort#PROPERTY property_ .
+--
+<.> xref:#getPropertyMaxLength__[getPropertyMaxLength()]
++
+--
+Returns optionally the property's max-length constraint, based on whether this feature is of sorts _ApplicationFeatureSort#MEMBER member_ and _ApplicationMemberSort#PROPERTY property_ .
+--
+
+== Members
+
+[#getMemberSort__]
+=== getMemberSort()
+
+Returns optionally the member sort, based on whether this feature is of sort _ApplicationFeatureSort#MEMBER_ .
+
+[#getActionReturnType__]
+=== getActionReturnType()
+
+Returns optionally the action's return type, based on whether this feature is of sorts _ApplicationFeatureSort#MEMBER member_ and _ApplicationMemberSort#ACTION action_ .
+
+[#getActionSemantics__]
+=== getActionSemantics()
+
+Returns optionally the action's semantics, based on whether this feature is of sorts _ApplicationFeatureSort#MEMBER member_ and _ApplicationMemberSort#ACTION action_ .
+
+[#isPropertyOrCollectionDerived__]
+=== isPropertyOrCollectionDerived()
+
+[#getPropertyTypicalLength__]
+=== getPropertyTypicalLength()
+
+Returns optionally the property's semantics, based on whether this feature is of sorts _ApplicationFeatureSort#MEMBER member_ and _ApplicationMemberSort#PROPERTY property_ .
+
+[#getPropertyMaxLength__]
+=== getPropertyMaxLength()
+
+Returns optionally the property's max-length constraint, based on whether this feature is of sorts _ApplicationFeatureSort#MEMBER member_ and _ApplicationMemberSort#PROPERTY property_ .
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureId.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureId.adoc
index 23b305d..efa775f 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureId.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureId.adoc
@@ -12,9 +12,6 @@ This value is _Comparable_ , the implementation of which considers _#getSort() (
 ----
 class ApplicationFeatureId {
   public static final ApplicationFeatureId NAMESPACE_DEFAULT;
-  @Getter
-@NonNull
-final ApplicationFeatureSort sort;
   ApplicationFeatureId fromIdentifier(final Identifier identifier)
   ApplicationFeatureId newFeature(final ApplicationFeatureSort featureSort, final String qualifiedName)
   ApplicationFeatureId newFeature(final String namespace, final String logicalTypeSimpleName, final String memberName)
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureRepository.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureRepository.adoc
index c053956..920ca9e 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureRepository.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureRepository.adoc
@@ -10,10 +10,15 @@ Provides the access to string representations of the packages, classes and class
 ----
 interface ApplicationFeatureRepository {
   SortedSet<String> namespaceNames()
-  SortedSet<String> classNamesContainedIn(String packageFqn, ApplicationMemberSort memberSort)
   SortedSet<String> classNamesRecursivelyContainedIn(String packageFqn)
-  SortedSet<String> memberNamesOf(String packageFqn, String className, ApplicationMemberSort memberSort)
   Map<String, ApplicationFeatureId> getFeatureIdentifiersByName()
+  ApplicationFeature findFeature(ApplicationFeatureId featureId)
+  Collection<ApplicationFeature> allActions()
+  Collection<ApplicationFeature> allCollections()
+  Collection<ApplicationFeature> allProperties()
+  Collection<ApplicationFeature> allNamespaces()
+  Collection<ApplicationFeature> allTypes()
+  Collection<ApplicationFeature> allMembers()
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/commanddto/conmap/ContentMappingServiceForCommandDto.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/commanddto/conmap/ContentMappingServiceForCommandDto.adoc
index a39209d..34f1c46 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/commanddto/conmap/ContentMappingServiceForCommandDto.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/commanddto/conmap/ContentMappingServiceForCommandDto.adoc
@@ -7,10 +7,6 @@
 .ContentMappingServiceForCommandDto.java
 ----
 class ContentMappingServiceForCommandDto {
-  @Inject
-MetaModelService metaModelService;
-  @Inject
-List<CommandDtoProcessorService> commandDtoProcessorServices;
   Object map(final Object object, final List<MediaType> acceptableMediaTypes)
   CommandDto asProcessedDto(final Object object)
 }
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc
index 6927a3a..8db2964 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc
@@ -7,8 +7,6 @@
 .ContentMappingServiceForCommandsDto.java
 ----
 class ContentMappingServiceForCommandsDto {
-  @Inject
-ContentMappingServiceForCommandDto contentMappingServiceForCommandDto;
   Object map(Object object, final List<MediaType> acceptableMediaTypes)
   CommandsDto map(final Object object)     // <.>
 }
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/exceprecog/Recognition.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/exceprecog/Recognition.adoc
index f25ae23..88271c1 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/exceprecog/Recognition.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/exceprecog/Recognition.adoc
@@ -11,26 +11,12 @@ Returned by _ExceptionRecognizer#recognize(Throwable)_ when the exception recogn
 .Recognition.java
 ----
 class Recognition {
-  @NonNull
-Category category;     // <.>
-  @NonNull
-String reason;     // <.>
   Optional<Recognition> of(final Category category, final String reason)     // <.>
   String toMessage(TranslationService translationService)     // <.>
   String toMessageNoCategory(TranslationService translationService)     // <.>
 }
 ----
 
-<.> xref:#category[category]
-+
---
-Categorises the exception as per xref:refguide:applib:index/services/exceprecog/Category.adoc[Category] .
---
-<.> xref:#reason[reason]
-+
---
-The untranslated user-friendly reason for the exception.
---
 <.> xref:#of__Category_String[of(Category, String)]
 <.> xref:#toMessage__TranslationService[toMessage(TranslationService)]
 +
@@ -45,22 +31,6 @@ Translates the _#getReason() reason_ alone (ignoring the _#getCategory() categor
 
 == Members
 
-[#category]
-=== category
-
-Categorises the exception as per xref:refguide:applib:index/services/exceprecog/Category.adoc[Category] .
-
-In essence, if an exception is recognized then it is also categorized. This lets the viewer act accordingly. If the implementation recognizes the exception then it returns a user-friendly message to be rendered (by the viewer) back to the user; otherwise it returns `null`. There is no need for the implementation to check for exception causes; the casual chain is unwrapped by Apache Isis core and each exception in the chain will also be passed through to the recognizer (from most specific [...]
-
-This category can also optionally be used in the translation of the _#getReason() reason_ for the exception.
-
-[#reason]
-=== reason
-
-The untranslated user-friendly reason for the exception.
-
-The reason can also be translated (prepended or not by the translation of the _#getCategory() category_ using _#toMessage(TranslationService)_ or _#toMessageNoCategory(TranslationService)_ . .
-
 [#of__Category_String]
 === of(Category, String)
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/grid/GridLoaderService.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/grid/GridLoaderService.adoc
index ad94349..6e454a0 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/grid/GridLoaderService.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/grid/GridLoaderService.adoc
@@ -57,7 +57,7 @@ The default implementation enables reloading for prototyping mode, disables in p
 
 To support metamodel invalidation/rebuilding of spec.
 
-This is called by the _org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel_ mixin action.
+This is called by the xref:refguide:applib:index/mixins/metamodel/Object_rebuildMetamodel.adoc[Object_rebuildMetamodel] mixin action.
 
 [#existsFor__Class]
 === existsFor(Class)
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/iactn/ExecutionContext.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/iactn/ExecutionContext.adoc
index e831c52..fa0fd78 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/iactn/ExecutionContext.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/iactn/ExecutionContext.adoc
@@ -9,40 +9,10 @@ Provides the user and scenario specific environment for an xref:refguide:applib:
 .ExecutionContext.java
 ----
 class ExecutionContext {
-  @With
-@Getter
-@Builder.Default
-@NonNull
-UserMemento user;     // <.>
-  @With
-@Getter
-@Builder.Default
-@NonNull
-VirtualClock clock;     // <.>
-  @With
-@Getter
-@Builder.Default
-@NonNull
-Locale locale;
-  @With
-@Getter
-@Builder.Default
-@NonNull
-TimeZone timeZone;
   ExecutionContext ofUserWithSystemDefaults(final UserMemento user)     // <.>
 }
 ----
 
-<.> xref:#user[user]
-+
---
-The (programmatically) simulated (or actual) user.
---
-<.> xref:#clock[clock]
-+
---
-The (programmatically) simulated (or actual) clock.
---
 <.> xref:#ofUserWithSystemDefaults__UserMemento[ofUserWithSystemDefaults(UserMemento)]
 +
 --
@@ -51,16 +21,6 @@ Creates a new xref:refguide:applib:index/services/iactn/ExecutionContext.adoc[Ex
 
 == Members
 
-[#user]
-=== user
-
-The (programmatically) simulated (or actual) user.
-
-[#clock]
-=== clock
-
-The (programmatically) simulated (or actual) clock.
-
 [#ofUserWithSystemDefaults__UserMemento]
 === ofUserWithSystemDefaults(UserMemento)
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/layout/LayoutServiceMenu.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/layout/LayoutServiceMenu.adoc
index 7cf7f08..9e4ed5b 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/layout/LayoutServiceMenu.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/layout/LayoutServiceMenu.adoc
@@ -9,8 +9,6 @@ Simply provides a UI to allow layouts (obtained from xref:refguide:applib:index/
 .LayoutServiceMenu.java
 ----
 class LayoutServiceMenu {
-  @Inject
-LayoutService layoutService;
   LayoutServiceMenu()
   Blob downloadLayouts(final Style style)
   Style default0DownloadLayouts()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/layout/Style.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/layout/Style.adoc
index 938a4af..a9fd90e 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/layout/Style.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/layout/Style.adoc
@@ -1,7 +1,9 @@
 = Style _(enum)_
 :Notice: 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 ag [...]
 
-Mode of operation when downloading a layout file (while prototyping). It affects the way the file's content is assembled. Once a layout file is in place, its layout data takes precedence over any conflicting layout data from annotations.
+Mode of operation when downloading a layout file (while prototyping).
+
+It affects the way the file's content is assembled. Once a layout file is in place, its layout data takes precedence over any conflicting layout data from annotations.
 
 == API
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelServiceMenu.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelServiceMenu.adoc
index 18b0f8a..9451988 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelServiceMenu.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelServiceMenu.adoc
@@ -9,12 +9,6 @@ Provides a UI to allow domain model metadata (obtained from xref:refguide:applib
 .MetaModelServiceMenu.java
 ----
 class MetaModelServiceMenu {
-  final MimeType mimeTypeTextCsv;
-  final MimeType mimeTypeTextXml;
-  @Inject
-MetaModelService metaModelService;
-  @Inject
-JaxbService jaxbService;
   MetaModelServiceMenu()
   Clob downloadMetaModelCsv(final String csvFileName)
   String default0DownloadMetaModelCsv()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/publishing/spi/EntityChanges.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/publishing/spi/EntityChanges.adoc
index 90ec59b..8fc1652 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/publishing/spi/EntityChanges.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/publishing/spi/EntityChanges.adoc
@@ -12,6 +12,7 @@ The numbers of objects loaded, created, updated or deleted and the number of obj
 ----
 interface EntityChanges {
   UUID getInteractionId()     // <.>
+  int getSequence()     // <.>
   String getUsername()     // <.>
   Timestamp getCompletedAt()     // <.>
   int getNumberLoaded()     // <.>
@@ -26,7 +27,12 @@ interface EntityChanges {
 <.> xref:#getInteractionId__[getInteractionId()]
 +
 --
-inherited from xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] , correlates back to the unique identifier of the transaction in which these objects were changed.
+inherited from xref:refguide:applib:index/mixins/system/HasTransactionId.adoc[HasTransactionId] and transitively from xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] , correlates back to the unique identifier of the _org.apache.isis.applib.services.iactn.Interaction_ in which these objects were changed.
+--
+<.> xref:#getSequence__[getSequence()]
++
+--
+inherited from xref:refguide:applib:index/mixins/system/HasTransactionId.adoc[HasTransactionId] , with _#getInteractionId()_ it identifies the transaction within the _org.apache.isis.applib.services.iactn.Interaction_ in which these objects were changed.
 --
 <.> xref:#getUsername__[getUsername()]
 +
@@ -74,7 +80,12 @@ Same details, but as an an instance of _ChangesDto_ .
 [#getInteractionId__]
 === getInteractionId()
 
-inherited from xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] , correlates back to the unique identifier of the transaction in which these objects were changed.
+inherited from xref:refguide:applib:index/mixins/system/HasTransactionId.adoc[HasTransactionId] and transitively from xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] , correlates back to the unique identifier of the _org.apache.isis.applib.services.iactn.Interaction_ in which these objects were changed.
+
+[#getSequence__]
+=== getSequence()
+
+inherited from xref:refguide:applib:index/mixins/system/HasTransactionId.adoc[HasTransactionId] , with _#getInteractionId()_ it identifies the transaction within the _org.apache.isis.applib.services.iactn.Interaction_ in which these objects were changed.
 
 [#getUsername__]
 === getUsername()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/user/RoleMemento.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/user/RoleMemento.adoc
index b6fff53..e1179d1 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/user/RoleMemento.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/user/RoleMemento.adoc
@@ -9,12 +9,6 @@ Immutable serializable value held by xref:refguide:applib:index/services/user/Us
 .RoleMemento.java
 ----
 class RoleMemento {
-  @MemberOrder(sequence = "1.1")
-@Getter
-String name;
-  @MemberOrder(sequence = "1.2")
-@Getter
-String description;
   RoleMemento(final String name)     // <.>
   RoleMemento(final String name, final String description)     // <.>
   String title()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/hooks/WrapperFactory_020-examples-and-usage.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/hooks/WrapperFactory_020-examples-and-usage.adoc
index dd0603d..814c69f 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/hooks/WrapperFactory_020-examples-and-usage.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/hooks/WrapperFactory_020-examples-and-usage.adoc
@@ -49,7 +49,7 @@ Similarly if an action has a xref:refguide:applib-methods:prefixes.adoc[validate
 
 In addition, the following methods may also be called:
 
-* the xref:refguide:applib-methods:reserved.adoc#title[title()] and `toString()` methods
+* the xref:refguide:applib-methods:ui-hints.adoc#title[title()] and `toString()` methods
 * any xref:refguide:applib-methods:prefixes.adoc#default[default...()], xref:refguide:applib-methods:prefixes.adoc#choices[choices...()] or xref:refguide:applib-methods:prefixes.adoc#autoComplete[autoComplete...()] methods
 
 An exception will be thrown if any other methods are thrown.
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/xactn/TransactionId.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/xactn/TransactionId.adoc
index 2ac7ce8..ec754dc 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/xactn/TransactionId.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/xactn/TransactionId.adoc
@@ -13,28 +13,10 @@ Obtainable from _TransactionService#currentTransactionId()_ .
 .TransactionId.java
 ----
 class TransactionId {
-  UUID interactionId;     // <.>
-  int sequence;     // <.>
-  String context;     // <.>
   TransactionId empty()     // <.>
 }
 ----
 
-<.> xref:#interactionId[interactionId]
-+
---
-The unique identifier of the outer _org.apache.isis.applib.services.iactn.Interaction_ .
---
-<.> xref:#sequence[sequence]
-+
---
-Identifies the transaction (there could be multiple) within the _org.apache.isis.applib.services.iactn.Interaction_ .
---
-<.> xref:#context[context]
-+
---
-Identifies the persistence context that this xref:refguide:applib:index/services/xactn/TransactionId.adoc[TransactionId] was created for.
---
 <.> xref:#empty__[empty()]
 +
 --
@@ -43,27 +25,6 @@ Factory method that returns a nominally "empty" transaction identifier, used as
 
 == Members
 
-[#interactionId]
-=== interactionId
-
-The unique identifier of the outer _org.apache.isis.applib.services.iactn.Interaction_ .
-
-Together with _#getSequence()_ , this makes up the implementation of xref:refguide:applib:index/mixins/system/HasTransactionId.adoc[HasTransactionId]
-
-[#sequence]
-=== sequence
-
-Identifies the transaction (there could be multiple) within the _org.apache.isis.applib.services.iactn.Interaction_ .
-
-Together with _#getInteractionId()_ , this makes up the implementation of xref:refguide:applib:index/mixins/system/HasTransactionId.adoc[HasTransactionId]
-
-[#context]
-=== context
-
-Identifies the persistence context that this xref:refguide:applib:index/services/xactn/TransactionId.adoc[TransactionId] was created for.
-
-Useful when there are multiple persistence contexts configured. There are no constraints to format of this String, it is left for the implementation to ensure that the string is a uniqie identifier to the context.
-
 [#empty__]
 === empty()
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/util/ReasonBuffer.adoc b/antora/components/refguide-index/modules/applib/pages/index/util/ReasonBuffer.adoc
index fc0cd23..b7d585e 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/util/ReasonBuffer.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/util/ReasonBuffer.adoc
@@ -13,7 +13,6 @@ An alternative is to use the xref:refguide:applib:index/util/Reasons.adoc[Reason
 .ReasonBuffer.java
 ----
 class ReasonBuffer {
-  StringBuffer reasonBuffer;
   void append(final String reason)     // <.>
   void appendOnCondition(final boolean condition, final String reason)     // <.>
   String getReason()     // <.>
diff --git a/antora/components/refguide-index/modules/applib/pages/index/util/schema/ChangesDtoUtils.adoc b/antora/components/refguide-index/modules/applib/pages/index/util/schema/ChangesDtoUtils.adoc
index 4bfa89f..0586f37 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/util/schema/ChangesDtoUtils.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/util/schema/ChangesDtoUtils.adoc
@@ -7,7 +7,6 @@
 .ChangesDtoUtils.java
 ----
 class ChangesDtoUtils {
-  static JAXBContext jaxbContext;
   void init()
   JAXBContext getJaxbContext()
   ChangesDto fromXml(final Reader reader)
diff --git a/antora/components/refguide-index/modules/applib/pages/index/util/schema/CommandDtoUtils.adoc b/antora/components/refguide-index/modules/applib/pages/index/util/schema/CommandDtoUtils.adoc
index d2fc872..574a902 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/util/schema/CommandDtoUtils.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/util/schema/CommandDtoUtils.adoc
@@ -7,7 +7,6 @@
 .CommandDtoUtils.java
 ----
 class CommandDtoUtils {
-  static JAXBContext jaxbContext;
   void init()
   JAXBContext getJaxbContext()
   CommandDto fromXml(final Reader reader)
diff --git a/antora/components/refguide-index/modules/applib/pages/index/util/schema/InteractionDtoUtils.adoc b/antora/components/refguide-index/modules/applib/pages/index/util/schema/InteractionDtoUtils.adoc
index 5b91bc3..0efd745 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/util/schema/InteractionDtoUtils.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/util/schema/InteractionDtoUtils.adoc
@@ -7,7 +7,6 @@
 .InteractionDtoUtils.java
 ----
 class InteractionDtoUtils {
-  static JAXBContext jaxbContext;
   void init()
   JAXBContext getJaxbContext()
   InteractionDto fromXml(final Reader reader)
diff --git a/antora/components/refguide-index/modules/applib/pages/index/value/Blob.adoc b/antora/components/refguide-index/modules/applib/pages/index/value/Blob.adoc
index 1d89287..4d0a86e 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/value/Blob.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/value/Blob.adoc
@@ -1,6 +1,14 @@
 = Blob
 :Notice: 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 ag [...]
 
+Represents a binary large object.
+
+Conceptually you can consider it as a set of bytes (a picture, a video etc), though in fact it wraps three pieces of information:
+
+* the set of bytes
+* a name
+* a mime type
+
 == API
 
 [source,java]
@@ -52,3 +60,5 @@ Does not close the OutputStream.
 
 [#asImage__]
 === asImage()
+
+include::hooks/Blob_usage-notes.adoc[]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/value/Clob.adoc b/antora/components/refguide-index/modules/applib/pages/index/value/Clob.adoc
index 6cff6d7..45fd84e 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/value/Clob.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/value/Clob.adoc
@@ -1,6 +1,14 @@
 = Clob
 :Notice: 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 ag [...]
 
+Represents a character large object.
+
+Conceptually you can consider it as a set of characters (an RTF or XML document, for example), though in fact it wraps three pieces of information:
+
+* the set of characters
+* a name
+* a mime type
+
 == API
 
 [source,java]
@@ -40,3 +48,5 @@ Returns a new xref:refguide:applib:index/value/Clob.adoc[Clob] of given _name_ ,
 _name_ may or may not include the desired filename extension, it is guaranteed, that the resulting xref:refguide:applib:index/value/Clob.adoc[Clob] has the appropriate extension as constraint by the given _mimeType_ .
 
 For more fine-grained control use one of the xref:refguide:applib:index/value/Clob.adoc[Clob] constructors directly.
+
+include::hooks/Clob_usage-notes.adoc[]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/value/Markup.adoc b/antora/components/refguide-index/modules/applib/pages/index/value/Markup.adoc
index 05ce173..cd6c4fe 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/value/Markup.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/value/Markup.adoc
@@ -1,7 +1,7 @@
 = Markup
 :Notice: 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 ag [...]
 
-Immutable value type holding pre-rendered HTML.
+Intended to be used as a read-only property, to render arbitrary HTML markup into the user interface.
 
 == API
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/value/Password.adoc b/antora/components/refguide-index/modules/applib/pages/index/value/Password.adoc
index acb23e6..f5fb5ad 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/value/Password.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/value/Password.adoc
@@ -1,6 +1,8 @@
 = Password
 :Notice: 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 ag [...]
 
+Represents a password that will not displayed to the UI but can be persisted.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide/modules/applib-classes/pages/value-types/Blob.adoc b/antora/components/refguide-index/modules/applib/pages/index/value/hooks/Blob_usage-notes.adoc
similarity index 57%
rename from antora/components/refguide/modules/applib-classes/pages/value-types/Blob.adoc
rename to antora/components/refguide-index/modules/applib/pages/index/value/hooks/Blob_usage-notes.adoc
index 9a46c98..f14bf56 100644
--- a/antora/components/refguide/modules/applib-classes/pages/value-types/Blob.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/value/hooks/Blob_usage-notes.adoc
@@ -1,56 +1,8 @@
-[#Blob]
-= `Blob`
 
 :Notice: 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 ag [...]
 :page-partial:
 
-
-`Blob` (in the `org.apache.isis.applib.value` package) is a value type defined by the Apache Isis framework to represent a binary large object.
-Conceptually you can consider it as a set of bytes (a picture, a video etc), though in fact it wraps three pieces of information:
-
-* the set of bytes
-* a name
-* a mime type.
-
-This is reflected in the class' constructors and properties:
-
-// TODO: v2: use include::[]
-
-[source,java]
-----
-import lombok.Getter;
-
-public final class Blob ... {
-
-    public Blob(
-            String name,
-            String primaryType, String subtype,
-            byte[] bytes) {
-        // ...
-    }
-    public Blob(
-            String name,
-            String mimeTypeBase,
-            byte[] bytes) {
-        // ...
-    }
-    public Blob(
-            String name,
-            MimeType mimeType,
-            byte[] bytes) {
-        // ...
-    }
-
-    @Getter
-    private String name;
-    @Getter
-    private MimeType mimeType;
-    @Getter
-    private byte[] bytes;
-
-    // ...
-}
-----
+== Usage Notes
 
 Mandatory properties of this type can be mapped with xref:pjdo:ROOT:about.adoc[JDO/DataNucleus] using:
 
diff --git a/antora/components/refguide/modules/applib-methods/pages/reserved/deprecated/validate.adoc b/antora/components/refguide-index/modules/applib/pages/index/value/hooks/Clob_usage-notes.adoc
similarity index 54%
rename from antora/components/refguide/modules/applib-methods/pages/reserved/deprecated/validate.adoc
rename to antora/components/refguide-index/modules/applib/pages/index/value/hooks/Clob_usage-notes.adoc
index b43e00f..a8c57db 100644
--- a/antora/components/refguide/modules/applib-methods/pages/reserved/deprecated/validate.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/value/hooks/Clob_usage-notes.adoc
@@ -1,27 +1,27 @@
-[[validate]]
-= `validate()`
 
 :Notice: 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 ag [...]
+:page-partial:
 
 
+== Usage Notes
 
-The `validate()` method is used to specify that invariants pertaining to an object's state are enforced.
-
-
-[WARNING]
-====
-There are known limitations with this functionality.
-Invariants _are_ enforced when an object is initially created and when it is edited, however invariants are currently _not_ enforced if an action is invoked.
-====
-
-
-The signature of the method is:
+Mandatory properties of this type can be mapped to xref:pjdo:ROOT:about.adoc[JDO/DataNucleus] using:
 
 [source,java]
 ----
-public String validate() { /* ... */ }
+import javax.jdo.annotations.Persistent;
+import javax.jdo.annotations.Column;
+
+@Persistent(defaultFetchGroup="false", columns = {
+    @Column(name = "someClob_name"
+            , allowsNull = "false"),
+    @Column(name = "someClob_mimetype"
+            , allowsNull = "false"),
+    @Column(name = "someClob_chars"
+            , jdbcType = "CLOB"
+            , allowsNull = "false")
+})
+private Clob someClob;
 ----
 
-where the returned string is the reason that the invocation is vetoed.
-
-Note that Apache Isis' xref:userguide:btb:i18n.adoc[i18n support] extends this so that the returned reason can also be internationalized.
+while optional properties can be mapped the same, but using `allowsNull = "true` for each of the ``@Column``s.
diff --git a/antora/components/refguide-index/modules/core/pages/index/metamodel/services/command/CommandDtoFactory.adoc b/antora/components/refguide-index/modules/core/pages/index/metamodel/services/command/CommandDtoFactory.adoc
index 3dd3ba5..cffe826 100644
--- a/antora/components/refguide-index/modules/core/pages/index/metamodel/services/command/CommandDtoFactory.adoc
+++ b/antora/components/refguide-index/modules/core/pages/index/metamodel/services/command/CommandDtoFactory.adoc
@@ -11,8 +11,8 @@ There are some similarities to _org.apache.isis.core.metamodel.services.ixn.Inte
 .CommandDtoFactory.java
 ----
 interface CommandDtoFactory {
-  CommandDto asCommandDto(final UUID uniqueId, final Can<ManagedObject> targetAdapters, final ObjectAction objectAction, final Can<ManagedObject> argAdapters)     // <.>
-  CommandDto asCommandDto(final UUID uniqueId, final Can<ManagedObject> targetAdapters, final OneToOneAssociation association, final ManagedObject valueAdapterOrNull)     // <.>
+  CommandDto asCommandDto(final UUID interactionId, final Can<ManagedObject> targetAdapters, final ObjectAction objectAction, final Can<ManagedObject> argAdapters)     // <.>
+  CommandDto asCommandDto(final UUID interactionId, final Can<ManagedObject> targetAdapters, final OneToOneAssociation association, final ManagedObject valueAdapterOrNull)     // <.>
   void addActionArgs(final ObjectAction objectAction, final ActionDto actionDto, final Can<ManagedObject> argAdapters)     // <.>
   void addPropertyValue(final OneToOneAssociation property, final PropertyDto propertyDto, final ManagedObject valueAdapter)     // <.>
 }
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/CommandSubscriberForJdo.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/CommandSubscriberForJdo.adoc
index ffa974f..597aba2 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/CommandSubscriberForJdo.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/CommandSubscriberForJdo.adoc
@@ -7,8 +7,6 @@
 .CommandSubscriberForJdo.java
 ----
 class CommandSubscriberForJdo {
-  @Inject
-final CommandJdoRepository commandJdoRepository;
   void onCompleted(Command command)
 }
 ----
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/HasInteractionId_command.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/HasInteractionId_command.adoc
new file mode 100644
index 0000000..ecd24e2
--- /dev/null
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/HasInteractionId_command.adoc
@@ -0,0 +1,29 @@
+= HasInteractionId_command
+:Notice: 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 ag [...]
+
+This mixin contributes a `command` action to any (non-command) implementation of xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] ; that is: audit entries, and published events. Thus, it is possible to navigate from the effect back to the cause.
+
+== API
+
+[source,java]
+.HasInteractionId_command.java
+----
+class HasInteractionId_command {
+  CommandJdo act()
+  boolean hideAct()     // <.>
+  String disableAct()
+}
+----
+
+<.> xref:#hideAct__[hideAct()]
++
+--
+Hide if the contributee is a xref:refguide:applib:index/services/command/Command.adoc[Command] , because xref:refguide:applib:index/services/command/Command.adoc[Command] s already have a _Command#getParent() parent_ property.
+--
+
+== Members
+
+[#hideAct__]
+=== hideAct()
+
+Hide if the contributee is a xref:refguide:applib:index/services/command/Command.adoc[Command] , because xref:refguide:applib:index/services/command/Command.adoc[Command] s already have a _Command#getParent() parent_ property.
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/HasUsername_recentCommandsByUser.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/HasUsername_recentCommandsByUser.adoc
index f242933..c08c34b 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/HasUsername_recentCommandsByUser.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/HasUsername_recentCommandsByUser.adoc
@@ -7,8 +7,6 @@
 .HasUsername_recentCommandsByUser.java
 ----
 class HasUsername_recentCommandsByUser {
-  @Inject
-CommandJdoRepository commandServiceRepository;
   HasUsername_recentCommandsByUser(final HasUsername hasUsername)
   List<CommandJdo> coll()
   boolean hideColl()
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/ui/CommandServiceMenu.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/ui/CommandServiceMenu.adoc
index e2ab0f1..a4965c7 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/ui/CommandServiceMenu.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/ui/CommandServiceMenu.adoc
@@ -7,8 +7,6 @@
 .CommandServiceMenu.java
 ----
 class CommandServiceMenu {
-  final CommandJdoRepository commandServiceRepository;
-  final ClockService clockService;
   List<CommandJdo> activeCommands()
   boolean hideActiveCommands()
   List<CommandJdo> findCommands(final LocalDate from, final LocalDate to)
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/config/PrimaryConfig.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/config/PrimaryConfig.adoc
index 304e410..ab01517 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/config/PrimaryConfig.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/config/PrimaryConfig.adoc
@@ -7,8 +7,6 @@
 .PrimaryConfig.java
 ----
 class PrimaryConfig {
-  @Getter
-final String secondaryBaseUrlWicket;
   PrimaryConfig(final IsisConfiguration isisConfiguration)
   boolean isConfigured()
 }
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/mixins/Object_openOnSecondary.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/mixins/Object_openOnSecondary.adoc
index 4d37720..88e9adf 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/mixins/Object_openOnSecondary.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/mixins/Object_openOnSecondary.adoc
@@ -7,11 +7,6 @@
 .Object_openOnSecondary.java
 ----
 class Object_openOnSecondary {
-  final Object object;
-  @Inject
-PrimaryConfig primaryConfig;
-  @Inject
-BookmarkService bookmarkService;
   URL act()
   boolean hideAct()
 }
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/restapi/CommandRetrievalService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/restapi/CommandRetrievalService.adoc
index 669f559..8d05931 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/restapi/CommandRetrievalService.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/restapi/CommandRetrievalService.adoc
@@ -7,9 +7,7 @@
 .CommandRetrievalService.java
 ----
 class CommandRetrievalService {
-  @Inject
-CommandJdoRepository commandServiceRepository;
-  List<CommandJdo> findCommandsOnPrimaryFrom(final UUID uniqueId, final Integer batchSize)     // <.>
+  List<CommandJdo> findCommandsOnPrimaryFrom(final UUID interactionId, final Integer batchSize)     // <.>
   Integer default1FindCommandsOnPrimaryFrom()
 }
 ----
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/ui/CommandReplayOnPrimaryService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/ui/CommandReplayOnPrimaryService.adoc
index 023f465..04cd50d 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/ui/CommandReplayOnPrimaryService.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/ui/CommandReplayOnPrimaryService.adoc
@@ -7,22 +7,12 @@
 .CommandReplayOnPrimaryService.java
 ----
 class CommandReplayOnPrimaryService {
-  @Inject
-final CommandJdoRepository commandServiceRepository;
-  @Inject
-final JaxbService jaxbService;
-  @Inject
-final MessageService messageService;
-  @Inject
-final ContentMappingServiceForCommandsDto contentMappingServiceForCommandsDto;
-  @Inject
-final CommandRetrievalService commandRetrievalService;
-  List<CommandJdo> findCommands(final UUID uniqueId, final Integer batchSize)     // <.>
+  List<CommandJdo> findCommands(final UUID interactionId, final Integer batchSize)     // <.>
   Integer default1FindCommandsOnPrimaryFrom()
-  Clob downloadCommands(final UUID uniqueId, final Integer batchSize, final String filenamePrefix)     // <.>
+  Clob downloadCommands(final UUID interactionId, final Integer batchSize, final String filenamePrefix)     // <.>
   Integer default1DownloadCommands()
   String default2DownloadCommands()
-  Clob downloadCommandById(final UUID uniqueId, final String filenamePrefix)     // <.>
+  Clob downloadCommandById(final UUID interactionId, final String filenamePrefix)     // <.>
   String default1DownloadCommandById()
 }
 ----
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/IsisModuleExtCommandReplaySecondary.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/IsisModuleExtCommandReplaySecondary.adoc
index e71b9d0..f1c77a1 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/IsisModuleExtCommandReplaySecondary.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/IsisModuleExtCommandReplaySecondary.adoc
@@ -7,10 +7,6 @@
 .IsisModuleExtCommandReplaySecondary.java
 ----
 class IsisModuleExtCommandReplaySecondary {
-  @Inject
-ApplicationContext applicationContext;
-  @Inject
-IsisConfiguration isisConfiguration;
   JobDetailFactoryBean replicateAndReplayJobDetailFactory()
   SimpleTriggerFactoryBean replicateAndReplayTriggerFactory(JobDetail job)
   SpringBeanJobFactory springBeanJobFactory()
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analysis/CommandReplayAnalysisService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analysis/CommandReplayAnalysisService.adoc
index 5a4f262..4c5bbc4 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analysis/CommandReplayAnalysisService.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analysis/CommandReplayAnalysisService.adoc
@@ -7,8 +7,6 @@
 .CommandReplayAnalysisService.java
 ----
 class CommandReplayAnalysisService {
-  @Inject
-List<CommandReplayAnalyser> analysers;
   void analyse(final CommandJdo commandJdo)     // <.>
 }
 ----
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/clock/TickingClockService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/clock/TickingClockService.adoc
index ab882d9..d448f58 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/clock/TickingClockService.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/clock/TickingClockService.adoc
@@ -13,7 +13,6 @@ IMPORTANT: the methods provided by this service are not thread-safe, because the
 .TickingClockService.java
 ----
 class TickingClockService {
-  final IsisConfiguration isisConfiguration;
   void init()
   boolean isInitialized()
   void at(Timestamp timestamp, Runnable runnable)     // <.>
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/config/SecondaryConfig.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/config/SecondaryConfig.adoc
index c7b4d28..5800daf 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/config/SecondaryConfig.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/config/SecondaryConfig.adoc
@@ -7,20 +7,6 @@
 .SecondaryConfig.java
 ----
 class SecondaryConfig {
-  @Getter
-final String primaryUser;
-  @Getter
-final String primaryPassword;
-  @Getter
-final String primaryBaseUrlRestful;
-  @Getter
-final String primaryBaseUrlWicket;
-  @Getter
-final int batchSize;
-  @Getter
-final String quartzUser;
-  @Getter
-final List<String> quartzRoles;
   SecondaryConfig(final IsisConfiguration isisConfiguration)
   boolean isConfigured()
 }
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/executor/CommandExecutorServiceWithTime.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/executor/CommandExecutorServiceWithTime.adoc
index 3ed6242..c9c2a13 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/executor/CommandExecutorServiceWithTime.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/executor/CommandExecutorServiceWithTime.adoc
@@ -11,8 +11,6 @@ It then delegates down to the default implementation.
 .CommandExecutorServiceWithTime.java
 ----
 class CommandExecutorServiceWithTime {
-  final CommandExecutorService delegate;
-  final TickingClockService tickingClockService;
   CommandExecutorServiceWithTime(final CommandExecutorService delegate, final TickingClockService tickingClockService)
   Bookmark executeCommand(final Command command)
   Bookmark executeCommand(final SudoPolicy sudoPolicy, final Command command)
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/fetch/CommandFetcher.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/fetch/CommandFetcher.adoc
index b74a641..92a3d40 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/fetch/CommandFetcher.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/fetch/CommandFetcher.adoc
@@ -7,9 +7,6 @@
 .CommandFetcher.java
 ----
 class CommandFetcher {
-  static final String URL_SUFFIX;
-  @Inject
-SecondaryConfig secondaryConfig;
   List<CommandDto> fetchCommand(final CommandJdo previousHwmIfAny)     // <.>
 }
 ----
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/job/ReplicateAndReplayJob.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/job/ReplicateAndReplayJob.adoc
index 09b8bee..971c582 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/job/ReplicateAndReplayJob.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/job/ReplicateAndReplayJob.adoc
@@ -7,9 +7,6 @@
 .ReplicateAndReplayJob.java
 ----
 class ReplicateAndReplayJob {
-  @Inject
-SecondaryConfig secondaryConfig;
-  Authentication authentication;
   void execute(final JobExecutionContext quartzContext)
 }
 ----
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/jobcallables/ReplicateAndRunCommands.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/jobcallables/ReplicateAndRunCommands.adoc
index 3e49783..d9a0d77 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/jobcallables/ReplicateAndRunCommands.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/jobcallables/ReplicateAndRunCommands.adoc
@@ -11,18 +11,6 @@ This class is instantiated each time the Quartz job ( `_org.apache.isis.extensio
 .ReplicateAndRunCommands.java
 ----
 class ReplicateAndRunCommands {
-  @Inject
-CommandExecutorService commandExecutorService;
-  @Inject
-TransactionService transactionService;
-  @Inject
-CommandFetcher commandFetcher;
-  @Inject
-CommandJdoRepository commandJdoRepository;
-  @Inject
-CommandReplayAnalysisService analysisService;
-  @Inject
-Optional<ReplayCommandExecutionController> controller;
   SecondaryStatus call()
 }
 ----
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandJdo_exclude.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandJdo_exclude.adoc
index e9554a4..4d1db68 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandJdo_exclude.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandJdo_exclude.adoc
@@ -7,9 +7,6 @@
 .CommandJdo_exclude.java
 ----
 class CommandJdo_exclude {
-  final CommandJdo commandJdo;
-  @Inject
-Optional<SecondaryConfig> secondaryConfig;
   CommandJdo act()
   boolean hideAct()
   String disableAct()
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandJdo_replayQueue.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandJdo_replayQueue.adoc
index cc5b4bb..6067ca1 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandJdo_replayQueue.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandJdo_replayQueue.adoc
@@ -7,11 +7,6 @@
 .CommandJdo_replayQueue.java
 ----
 class CommandJdo_replayQueue {
-  final CommandJdo commandJdo;
-  @Inject
-SecondaryConfig secondaryConfig;
-  @Inject
-CommandJdoRepository commandJdoRepository;
   List<CommandJdo> coll()
   boolean hideColl()
 }
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/Object_openOnPrimary.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/Object_openOnPrimary.adoc
index 6f7155b..9aa3c88 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/Object_openOnPrimary.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/Object_openOnPrimary.adoc
@@ -7,11 +7,6 @@
 .Object_openOnPrimary.java
 ----
 class Object_openOnPrimary {
-  final Object object;
-  @Inject
-SecondaryConfig secondaryConfig;
-  @Inject
-BookmarkService bookmarkService;
   URL act()
   boolean hideAct()
 }
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/ui/CommandReplayOnSecondaryService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/ui/CommandReplayOnSecondaryService.adoc
index 2319003..525c31f 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/ui/CommandReplayOnSecondaryService.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/ui/CommandReplayOnSecondaryService.adoc
@@ -7,10 +7,6 @@
 .CommandReplayOnSecondaryService.java
 ----
 class CommandReplayOnSecondaryService {
-  @Inject
-final CommandJdoRepository commandJdoRepository;
-  @Inject
-final JaxbService jaxbService;
   CommandJdo findMostRecentReplayed()
   void uploadCommands(final Clob commandsDtoAsXml)
 }
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/fullcalendar/applib/value/CalendarEvent.adoc b/antora/components/refguide-index/modules/extensions/pages/index/fullcalendar/applib/value/CalendarEvent.adoc
index 547ff69..e0609bc 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/fullcalendar/applib/value/CalendarEvent.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/fullcalendar/applib/value/CalendarEvent.adoc
@@ -9,8 +9,6 @@ Value type representing an event on a calendar.
 .CalendarEvent.java
 ----
 class CalendarEvent {
-  // no default
-static final CalendarEvent DEFAULT_VALUE;
   CalendarEvent(final DateTime dateTime, final String calendarName, final String title)
   CalendarEvent(final DateTime dateTime, final String calendarName, final String title, final String notes)
   DateTime getDateTime()
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/SecmanConfiguration.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/SecmanConfiguration.adoc
index 101fc14..d21019d 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/SecmanConfiguration.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/SecmanConfiguration.adoc
@@ -7,64 +7,8 @@
 .SecmanConfiguration.java
 ----
 class SecmanConfiguration {
-  @Getter
-@Builder.Default
-@NonNull
-final String regularUserRoleName;
-  @Getter
-@Builder.Default
-@NonNull
-final String fixtureRoleName;
-  @Getter
-@Builder.Default
-@NonNull
-final String adminRoleName;
-  @Getter
-@Builder.Default
-@NonNull
-final String adminUserName;
-  @Getter
-@Builder.Default
-@NonNull
-final String adminPassword;
-  @Getter
-@Builder.Default
-@NonNull
-final String[] adminStickyNamespacePermissions;     // <.>
-  @Getter
-@Singular
-final Set<String> adminAdditionalNamespacePermissions;
-  @Getter
-@Builder.Default
-final boolean autoEnableIfDelegatedAndAuthenticated;     // <.>
   Stream<String> streamAdminNamespacePermissions()
   boolean isStickyAdminNamespace(String featureFqn)
 }
 ----
 
-<.> xref:#adminStickyNamespacePermissions[adminStickyNamespacePermissions]
-+
---
-cannot be removed via user interface
---
-<.> xref:#autoEnableIfDelegatedAndAuthenticated[autoEnableIfDelegatedAndAuthenticated]
-+
---
-Delegated users, on first successful logon, are auto-created but disabled (by default).
---
-
-== Members
-
-[#adminStickyNamespacePermissions]
-=== adminStickyNamespacePermissions
-
-cannot be removed via user interface
-
-[#autoEnableIfDelegatedAndAuthenticated]
-=== autoEnableIfDelegatedAndAuthenticated
-
-Delegated users, on first successful logon, are auto-created but disabled (by default).
-
-This option allows to override this behavior, such that authenticated users are also auto-enabled.
-
-default: false
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/authorizor/AuthorizorSecman.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/authorizor/AuthorizorSecman.adoc
index 0b08938..195e80f 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/authorizor/AuthorizorSecman.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/authorizor/AuthorizorSecman.adoc
@@ -7,8 +7,6 @@
 .AuthorizorSecman.java
 ----
 class AuthorizorSecman {
-  @Inject
-ApplicationUserRepository<? extends ApplicationUser> applicationUserRepository;
   boolean isVisible(final Authentication authentication, final Identifier identifier)
   boolean isUsable(final Authentication authentication, final Identifier identifier)
 }
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermission.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermission.adoc
index 4701ea9..16d2c46 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermission.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermission.adoc
@@ -1,7 +1,7 @@
 = ApplicationPermission _(interface)_
 :Notice: 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 ag [...]
 
-Specifies how a particular _#getRole() application role_ may interact with a specific _ApplicationFeature application feature_ .
+Specifies how a particular _#getRole() application role_ may interact with a specific xref:refguide:applib:index/services/appfeat/ApplicationFeature.adoc[ApplicationFeature] .
 
 Each permission has a _#getRule() rule_ and a _#getMode() mode_ . The xref:refguide:extensions:index/secman/api/permission/ApplicationPermissionRule.adoc[ApplicationPermissionRule] determines whether the permission _ApplicationPermissionRule#ALLOW grants_ access to the feature or _ApplicationPermissionRule#VETO veto_ es access to it. The xref:refguide:extensions:index/secman/api/permission/ApplicationPermissionMode.adoc[ApplicationPermissionMode] indicates whether the role can _Applicati [...]
 
@@ -27,7 +27,7 @@ interface ApplicationPermission {
   String getSort()
   String getFeatureFqn()
   void setFeatureFqn(String featureFqn)
-  Optional<ApplicationFeatureId> createFeatureId()
+  Optional<ApplicationFeatureId> asFeatureId()
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionMode.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionMode.adoc
index e1c3593..1c4501f 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionMode.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionMode.adoc
@@ -1,7 +1,7 @@
 = ApplicationPermissionMode _(enum)_
 :Notice: 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 ag [...]
 
-Named after UNIX modes ( `chmod` etc), determines that nature of access (of denial of access if vetoed) to an _ApplicationFeature_ .
+Named after UNIX modes ( `chmod` etc), determines that nature of access (of denial of access if vetoed) to an xref:refguide:applib:index/services/appfeat/ApplicationFeature.adoc[ApplicationFeature] .
 
 == API
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionRule.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionRule.adoc
index 3bd1f33..11d4ba4 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionRule.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionRule.adoc
@@ -1,7 +1,7 @@
 = ApplicationPermissionRule _(enum)_
 :Notice: 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 ag [...]
 
-Whether the permission _#ALLOW grants_ or _#VETO denies_ access to an _ApplicationFeature_ .
+Whether the permission _#ALLOW grants_ or _#VETO denies_ access to an xref:refguide:applib:index/services/appfeat/ApplicationFeature.adoc[ApplicationFeature] .
 
 == API
 
@@ -18,12 +18,12 @@ enum ApplicationPermissionRule {
 <.> xref:#ALLOW[ALLOW]
 +
 --
-The permission grants the ability to view/use the _ApplicationFeature_ .
+The permission grants the ability to view/use the xref:refguide:applib:index/services/appfeat/ApplicationFeature.adoc[ApplicationFeature] .
 --
 <.> xref:#VETO[VETO]
 +
 --
-The permission prevents the ability to view/use the _ApplicationFeature_ .
+The permission prevents the ability to view/use the xref:refguide:applib:index/services/appfeat/ApplicationFeature.adoc[ApplicationFeature] .
 --
 
 == Members
@@ -31,13 +31,13 @@ The permission prevents the ability to view/use the _ApplicationFeature_ .
 [#ALLOW]
 === ALLOW
 
-The permission grants the ability to view/use the _ApplicationFeature_ .
+The permission grants the ability to view/use the xref:refguide:applib:index/services/appfeat/ApplicationFeature.adoc[ApplicationFeature] .
 
-The xref:refguide:extensions:index/secman/api/permission/ApplicationPermissionMode.adoc[ApplicationPermissionMode] determines whether the permission is to only view or also to use the _ApplicationFeature_ .
+The xref:refguide:extensions:index/secman/api/permission/ApplicationPermissionMode.adoc[ApplicationPermissionMode] determines whether the permission is to only view or also to use the xref:refguide:applib:index/services/appfeat/ApplicationFeature.adoc[ApplicationFeature] .
 
 [#VETO]
 === VETO
 
-The permission prevents the ability to view/use the _ApplicationFeature_ .
+The permission prevents the ability to view/use the xref:refguide:applib:index/services/appfeat/ApplicationFeature.adoc[ApplicationFeature] .
 
-The xref:refguide:extensions:index/secman/api/permission/ApplicationPermissionMode.adoc[ApplicationPermissionMode] determines whether the permission is to only view or also to use the _ApplicationFeature_ .
+The xref:refguide:extensions:index/secman/api/permission/ApplicationPermissionMode.adoc[ApplicationPermissionMode] determines whether the permission is to only view or also to use the xref:refguide:applib:index/services/appfeat/ApplicationFeature.adoc[ApplicationFeature] .
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.adoc
index 6d82f32..8d93229 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.adoc
@@ -1,7 +1,7 @@
 = IsisExtSecmanRegularUserRoleAndPermissions
 :Notice: 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 ag [...]
 
-Role for regular users of the security module, providing the ability to lookup their user account using the xref:refguide:extensions:index/secman/model/app/user/MeService.adoc[MeService] , and for viewing and maintaining their user details.
+Role for regular users of the security module, providing the ability to lookup their user account using the _org.apache.isis.extensions.secman.model.dom.user.MeService_ , and for viewing and maintaining their user details.
 
 == API
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.adoc
index 6d82f32..8d93229 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.adoc
@@ -1,7 +1,7 @@
 = IsisExtSecmanRegularUserRoleAndPermissions
 :Notice: 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 ag [...]
 
-Role for regular users of the security module, providing the ability to lookup their user account using the xref:refguide:extensions:index/secman/model/app/user/MeService.adoc[MeService] , and for viewing and maintaining their user details.
+Role for regular users of the security module, providing the ability to lookup their user account using the _org.apache.isis.extensions.secman.model.dom.user.MeService_ , and for viewing and maintaining their user details.
 
 == API
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_objectType.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/dom/user/MeService.adoc
similarity index 89%
copy from antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_objectType.adoc
copy to antora/components/refguide-index/modules/extensions/pages/index/secman/model/dom/user/MeService.adoc
index 1f633b3..a4a88ba 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_objectType.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/dom/user/MeService.adoc
@@ -1,13 +1,14 @@
-= Object_objectType
+= MeService
 :Notice: 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 ag [...]
 
 == API
 
 [source,java]
-.Object_objectType.java
+.MeService.java
 ----
-class Object_objectType {
-  String prop()
+class MeService {
+  String iconName()
+  ApplicationUser me()
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_downloadJdoMetadata.adoc b/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_downloadJdoMetadata.adoc
index 2a41571..7c02974 100644
--- a/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_downloadJdoMetadata.adoc
+++ b/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_downloadJdoMetadata.adoc
@@ -9,8 +9,6 @@ Provides the ability to download the JDOclass metadataas XML.
 .Persistable_downloadJdoMetadata.java
 ----
 class Persistable_downloadJdoMetadata {
-  @Inject
-JdoSupportService jdoSupport;
   Clob act(final String fileName)
   String default0Act()
 }
diff --git a/antora/components/refguide-index/modules/subdomains/pages/index/excel/applib/dom/util/AnnotationList.adoc b/antora/components/refguide-index/modules/subdomains/pages/index/excel/applib/dom/util/AnnotationList.adoc
index 3b950d2..7146388 100644
--- a/antora/components/refguide-index/modules/subdomains/pages/index/excel/applib/dom/util/AnnotationList.adoc
+++ b/antora/components/refguide-index/modules/subdomains/pages/index/excel/applib/dom/util/AnnotationList.adoc
@@ -7,7 +7,6 @@
 .AnnotationList.java
 ----
 class AnnotationList {
-  List<AnnotationTriplet> list;
   AnnotationList(List<AnnotationTriplet> list)
   List<AnnotationTriplet> getByAnnotation_OrderBy_OrderAscending(String annotation)
 }
diff --git a/antora/components/refguide-index/modules/subdomains/pages/index/excel/applib/dom/util/ExcelServiceImpl.adoc b/antora/components/refguide-index/modules/subdomains/pages/index/excel/applib/dom/util/ExcelServiceImpl.adoc
index 98b1b39..8cb763f 100644
--- a/antora/components/refguide-index/modules/subdomains/pages/index/excel/applib/dom/util/ExcelServiceImpl.adoc
+++ b/antora/components/refguide-index/modules/subdomains/pages/index/excel/applib/dom/util/ExcelServiceImpl.adoc
@@ -7,14 +7,6 @@
 .ExcelServiceImpl.java
 ----
 class ExcelServiceImpl {
-  @javax.inject.Inject
-BookmarkService bookmarkService;
-  @javax.inject.Inject
-SpecificationLoader specificationLoader;
-  @javax.inject.Inject
-ServiceInjector serviceInjector;
-  @javax.inject.Inject
-ObjectManager objectManager;
   Blob toExcel(final List<T> domainObjects, final Class<T> cls, final String sheetName, final String fileName)     // <.>
   Blob toExcel(final List<T> domainObjects, final Class<T> cls, final String sheetName, final String fileName, final InputStream in)     // <.>
   Blob toExcel(WorksheetContent worksheetContent, final String fileName)     // <.>
diff --git a/antora/components/refguide-index/modules/subdomains/pages/index/excel/applib/dom/util/SheetPivoter.adoc b/antora/components/refguide-index/modules/subdomains/pages/index/excel/applib/dom/util/SheetPivoter.adoc
index ed2389c..388ec6c 100644
--- a/antora/components/refguide-index/modules/subdomains/pages/index/excel/applib/dom/util/SheetPivoter.adoc
+++ b/antora/components/refguide-index/modules/subdomains/pages/index/excel/applib/dom/util/SheetPivoter.adoc
@@ -7,10 +7,6 @@
 .SheetPivoter.java
 ----
 class SheetPivoter {
-  int columnLabelOffsetX;
-  int valueRowOffsetY;
-  int decoRowOffsetX;
-  int valuesStartAtRownumber;
   void pivot(final Sheet pivotSourceSheet, final Sheet pivotTargetSheet)     // <.>
   List<Cell> getDistinctValuesInSourceSheetColumn(Sheet sourceSheet, Integer columnNumber)
 }
diff --git a/antora/components/refguide-index/modules/subdomains/pages/index/excel/testing/ExcelFixture.adoc b/antora/components/refguide-index/modules/subdomains/pages/index/excel/testing/ExcelFixture.adoc
index 15526c7..28fadb0 100644
--- a/antora/components/refguide-index/modules/subdomains/pages/index/excel/testing/ExcelFixture.adoc
+++ b/antora/components/refguide-index/modules/subdomains/pages/index/excel/testing/ExcelFixture.adoc
@@ -9,8 +9,6 @@ This class should be executed using _org.apache.isis.testing.fixtures.applib.fix
 .ExcelFixture.java
 ----
 class ExcelFixture {
-  @Inject
-SpecificationLoader specLoader;
   ExcelFixture(final URL excelResource, final Class<?>... classes)
   ExcelFixture(final URL excelResource, final List<Class<?>> classes)
   ExcelFixture(final Blob upload, final Class<?>... classes)
diff --git a/antora/components/refguide-index/modules/subdomains/pages/index/excel/testing/ExcelFixture2.adoc b/antora/components/refguide-index/modules/subdomains/pages/index/excel/testing/ExcelFixture2.adoc
index 91107f5..0444548 100644
--- a/antora/components/refguide-index/modules/subdomains/pages/index/excel/testing/ExcelFixture2.adoc
+++ b/antora/components/refguide-index/modules/subdomains/pages/index/excel/testing/ExcelFixture2.adoc
@@ -9,27 +9,8 @@ This class should be executed using _org.apache.isis.testing.fixtures.applib.fix
 .ExcelFixture2.java
 ----
 class ExcelFixture2 {
-  @Getter
-@Setter
-WorksheetSpec.Matcher matcher;     // <.>
-  @Inject
-FactoryService factoryService;
-  @Inject
-ExcelService excelService;
   boolean equals(final Object o)
   int hashCode()
 }
 ----
 
-<.> xref:#matcher[matcher]
-+
---
-Input, mandatory ... how to process each sheet of the workbook.
---
-
-== Members
-
-[#matcher]
-=== matcher
-
-Input, mandatory ... how to process each sheet of the workbook.
diff --git a/antora/components/refguide-index/modules/subdomains/pages/index/xdocreport/applib/service/XDocReportService.adoc b/antora/components/refguide-index/modules/subdomains/pages/index/xdocreport/applib/service/XDocReportService.adoc
index d0ebed9..f63e073 100644
--- a/antora/components/refguide-index/modules/subdomains/pages/index/xdocreport/applib/service/XDocReportService.adoc
+++ b/antora/components/refguide-index/modules/subdomains/pages/index/xdocreport/applib/service/XDocReportService.adoc
@@ -7,7 +7,6 @@
 .XDocReportService.java
 ----
 class XDocReportService {
-  PdfOptions pdfOptions;
   void init()
   byte[] render(final byte[] templateBytes, final XDocReportModel dataModel, final OutputType outputType)
 }
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/AbstractRandomValueGenerator.adoc b/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/AbstractRandomValueGenerator.adoc
index ad87157..bd9ffe7 100644
--- a/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/AbstractRandomValueGenerator.adoc
+++ b/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/AbstractRandomValueGenerator.adoc
@@ -7,7 +7,6 @@
 .AbstractRandomValueGenerator.java
 ----
 class AbstractRandomValueGenerator {
-  final FakeDataService fake;
   AbstractRandomValueGenerator(final FakeDataService fake)
 }
 ----
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Addresses.adoc b/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Addresses.adoc
index 0a1cf9e..ecf9fb3 100644
--- a/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Addresses.adoc
+++ b/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Addresses.adoc
@@ -7,7 +7,6 @@
 .Addresses.java
 ----
 class Addresses {
-  com.github.javafaker.Address javaFakerAddress;
   Addresses(final FakeDataService fakeDataService)
   String streetName()
   String streetAddressNumber()
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Books.adoc b/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Books.adoc
index 563a850..843caf1 100644
--- a/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Books.adoc
+++ b/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Books.adoc
@@ -7,7 +7,6 @@
 .Books.java
 ----
 class Books {
-  com.github.javafaker.Code javaFakerCode;
   Books(final FakeDataService fakeDataService)
   String isbn10()
   String isbn13()
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Comms.adoc b/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Comms.adoc
index aaf6573..059ff51 100644
--- a/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Comms.adoc
+++ b/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Comms.adoc
@@ -7,8 +7,6 @@
 .Comms.java
 ----
 class Comms {
-  final com.github.javafaker.Internet javaFakerInternet;
-  final com.github.javafaker.PhoneNumber javaFakerPhoneNumber;
   Comms(final FakeDataService fakeDataService)
   String emailAddress()
   String url()
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/CreditCards.adoc b/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/CreditCards.adoc
index eedd4c8..e15d6c2 100644
--- a/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/CreditCards.adoc
+++ b/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/CreditCards.adoc
@@ -7,7 +7,6 @@
 .CreditCards.java
 ----
 class CreditCards {
-  final com.github.javafaker.Business javaFakerBusiness;
   CreditCards(final FakeDataService fakeDataService, final FakeValuesService fakeValuesService)
   String number()
   String type()
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/FakeDataService.adoc b/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/FakeDataService.adoc
index d94eaaa..3036ec5 100644
--- a/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/FakeDataService.adoc
+++ b/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/FakeDataService.adoc
@@ -7,12 +7,6 @@
 .FakeDataService.java
 ----
 class FakeDataService {
-  final RandomService randomService;
-  final FakeValuesService fakeValuesService;
-  @Inject
-ClockService clockService;
-  @Inject
-RepositoryService repositoryService;
   FakeDataService()
   FakeDataService(final Random random)
   FakeDataService(final Random random, final Faker javaFaker)
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Lorem.adoc b/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Lorem.adoc
index c826c62..2c9ec71 100644
--- a/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Lorem.adoc
+++ b/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Lorem.adoc
@@ -7,7 +7,6 @@
 .Lorem.java
 ----
 class Lorem {
-  com.github.javafaker.Lorem javaFakerLorem;
   Lorem(final FakeDataService fakeDataService)
   List<String> words(int num)
   List<String> words()
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Names.adoc b/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Names.adoc
index 3570253..e58d7b6 100644
--- a/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Names.adoc
+++ b/antora/components/refguide-index/modules/testing/pages/index/fakedata/applib/services/Names.adoc
@@ -7,7 +7,6 @@
 .Names.java
 ----
 class Names {
-  com.github.javafaker.Name javaFakerName;
   Names(final FakeDataService fakeDataService)
   String fullName()
   String firstName()
diff --git a/antora/components/refguide-index/modules/testing/pages/index/unittestsupport/applib/core/soap/SoapEndpointPublishingRule.adoc b/antora/components/refguide-index/modules/testing/pages/index/unittestsupport/applib/core/soap/SoapEndpointPublishingRule.adoc
index 18a696f..48061e7 100644
--- a/antora/components/refguide-index/modules/testing/pages/index/unittestsupport/applib/core/soap/SoapEndpointPublishingRule.adoc
+++ b/antora/components/refguide-index/modules/testing/pages/index/unittestsupport/applib/core/soap/SoapEndpointPublishingRule.adoc
@@ -7,7 +7,6 @@
 .SoapEndpointPublishingRule.java
 ----
 class SoapEndpointPublishingRule {
-  static final int INITIAL_PORT;     // <.>
   SoapEndpointPublishingRule(final Class<?> endpointClass, final String endpointAddress)
   SoapEndpointPublishingRule(Class<?>... endpointClasses)
   SoapEndpointPublishingRule(final List<Class<?>> endpointClasses)
@@ -19,15 +18,3 @@ class SoapEndpointPublishingRule {
 }
 ----
 
-<.> xref:#INITIAL_PORT[INITIAL_PORT]
-+
---
-For any endpoints where the address is not specified, ports are assigned starting from this.
---
-
-== Members
-
-[#INITIAL_PORT]
-=== INITIAL_PORT
-
-For any endpoints where the address is not specified, ports are assigned starting from this.
diff --git a/antora/components/refguide-index/modules/viewer/pages/index/wicket/viewer/mixins/Object_clearHints.adoc b/antora/components/refguide-index/modules/viewer/pages/index/wicket/viewer/mixins/Object_clearHints.adoc
new file mode 100644
index 0000000..716aa63
--- /dev/null
+++ b/antora/components/refguide-index/modules/viewer/pages/index/wicket/viewer/mixins/Object_clearHints.adoc
@@ -0,0 +1,22 @@
+= Object_clearHints
+:Notice: 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 ag [...]
+
+Provides the ability for the end-user to discard these UI hints so that the object is rendered in its initial state:
+
+When a domain object is rendered the end-user can select different tabs, and for collections can sort the columns, navigate to second pages, or select different views of collections. If the user revisits that object, the Wicket viewer (at least) will remember these hints and render the domain object in the same state.
+
+These rendering hints are also included if the user copies the URL using the anchor link (to right hand of the object's title).
+
+This mixin - contributed to `java.lang.Object` and therefore to allo domain objects - provides the ability for the end user to clear any hints that might have been set for the domain object being rendered.
+
+== API
+
+[source,java]
+.Object_clearHints.java
+----
+class Object_clearHints {
+  Object act()
+  boolean hideAct()
+}
+----
+
diff --git a/antora/components/refguide/modules/ROOT/partials/component-nav.adoc b/antora/components/refguide/modules/ROOT/partials/component-nav.adoc
index 0285b49..e9dfdea 100644
--- a/antora/components/refguide/modules/ROOT/partials/component-nav.adoc
+++ b/antora/components/refguide/modules/ROOT/partials/component-nav.adoc
@@ -1,7 +1,7 @@
 include::refguide:ROOT:partial$module-nav.adoc[]
+include::refguide:applib-svc:partial$module-nav.adoc[]
 include::refguide:applib-ant:partial$module-nav.adoc[]
 include::refguide:applib-methods:partial$module-nav.adoc[]
 include::refguide:applib-classes:partial$module-nav.adoc[]
-include::refguide:applib-svc:partial$module-nav.adoc[]
 include::refguide:config:partial$module-nav.adoc[]
 include::refguide:schema:partial$module-nav.adoc[]
diff --git a/antora/components/refguide/modules/applib-ant/pages/XmlRootElement.adoc b/antora/components/refguide/modules/applib-ant/pages/XmlRootElement.adoc
index a89869e..83bb04f 100644
--- a/antora/components/refguide/modules/applib-ant/pages/XmlRootElement.adoc
+++ b/antora/components/refguide/modules/applib-ant/pages/XmlRootElement.adoc
@@ -11,8 +11,8 @@ In the case of a JAXB-annotated object this memento is its XML representation.
 JAXB generally requires that the root element of the XML representation is annotated with `@XmlRootElement`.
 Apache Isis makes this a mandatory requirement.
 
-In comparison to using either the xref:applib-classes:ViewModel.adoc[ViewModel] interface or the
-xref:refguide:applib-ant:ViewModel.adoc[@DomainObject(nature=VIEW_MODEL)] annotation,
+In comparison to using either the xref:refguide:applib:index/ViewModel.adoc[ViewModel] interface or the
+xref:refguide:applib:index/annotation/DomainObject.adoc[@DomainObject(nature=VIEW_MODEL)] annotation,
 using `@XmlRootElement` has a couple of significant advantages:
 
 * the view model can be used as a "canonical" DTO, for example when accessing data using the xref:vro:ROOT:about.adoc[RestfulObjects viewer] in combination with the
diff --git a/antora/components/refguide/modules/applib-ant/partials/module-nav.adoc b/antora/components/refguide/modules/applib-ant/partials/module-nav.adoc
index e43ce52..5fac899 100644
--- a/antora/components/refguide/modules/applib-ant/partials/module-nav.adoc
+++ b/antora/components/refguide/modules/applib-ant/partials/module-nav.adoc
@@ -30,7 +30,6 @@
 ** xref:refguide:applib:index/annotation/PropertyLayout.adoc[PropertyLayout]
 ** xref:refguide:applib:index/annotation/InteractionScope.adoc[RequestScoped]
 ** xref:refguide:applib:index/annotation/Title.adoc[Title]
-** xref:refguide:applib-ant:ViewModel.adoc[ViewModel]
 ** xref:refguide:applib-ant:XmlJavaTypeAdapter.adoc[XmlJavaTypeAdapter]
 ** xref:refguide:applib-ant:XmlRootElement.adoc[XmlRootElement]
 
diff --git a/antora/components/refguide/modules/applib-classes/pages/events/lifecycleevent.adoc b/antora/components/refguide/modules/applib-classes/pages/events/lifecycleevent.adoc
index 4116e98..dff7860 100644
--- a/antora/components/refguide/modules/applib-classes/pages/events/lifecycleevent.adoc
+++ b/antora/components/refguide/modules/applib-classes/pages/events/lifecycleevent.adoc
@@ -10,19 +10,22 @@ Lifecycle events are broadcast through the xref:refguide:applib:index/services/e
 They allow subscribers to trigger other operations as a result of these persistence operations.
 One use case is to maintain an alternate data store.
 
+It is also possible for the domain object itself to be invoked on a callback.
 
 .Lifecycle Event Classes
-[cols="2m,2m,2a", options="header"]
+[cols="6m,6m,6a,4m", options="header"]
 |===
 
 |API
 |Event class defined by xref:refguide:applib:index/annotation/DomainObject.adoc[@DomainObject]
 |Published when
+|Object callback
 
 
 |xref:refguide:applib:index/events/lifecycle/AbstractLifecycleEvent.adoc[AbstractLifecycleEvent]
 |n/a
 |n/a - superclass of the other lifecycle events.
+|n/a
 
 
 |xref:refguide:applib:index/events/lifecycle/ObjectCreatedEvent.adoc[ObjectCreatedEvent]
@@ -30,39 +33,47 @@ One use case is to maintain an alternate data store.
 |entity is first instantiated using  xref:refguide:applib:index/services/factory/FactoryService.adoc[FactoryService] +
 
 Also raised for view models.
+|xref:refguide:applib-methods:lifecycle.adoc#created[created()]
 
 
 |xref:refguide:applib:index/events/lifecycle/ObjectLoadedEvent.adoc[ObjectLoadedEvent]
 |xref:refguide:applib:index/annotation/DomainObject.adoc#loadedLifecycleEvent[loadedLifecycleEvent()]
 |entity is retrieved from the database.
-
-
-|xref:refguide:applib:index/events/lifecycle/ObjectPersistedEvent.adoc[ObjectPersistedEvent]
-|xref:refguide:applib:index/annotation/DomainObject.adoc#persistedLifecycleEvent[persistedLifecycleEvent()]
-|entity is first saved (inserted) into the database using the xref:refguide:applib:index/services/repository/RepositoryService.adoc[RepositoryService]'s
-`#persist(...)` method.
+|xref:refguide:applib-methods:lifecycle.adoc#loaded[loaded()]
 
 
 |xref:refguide:applib:index/events/lifecycle/ObjectPersistingEvent.adoc[ObjectPersistingEvent]
 |xref:refguide:applib:index/annotation/DomainObject.adoc#persistingLifecycleEvent[persistingLifecycleEvent()]
 |entity is about to be saved (inserted) into the database using the xref:refguide:applib:index/services/repository/RepositoryService.adoc[RepositoryService]'s
 `#persist(...)` method.
+|xref:refguide:applib-methods:lifecycle.adoc#persisting[persisting()]
 
 
-|xref:refguide:applib:index/events/lifecycle/ObjectRemovingEvent.adoc[ObjectRemovingEvent]
-|xref:refguide:applib:index/annotation/DomainObject.adoc#removingLifecycleEvent[removingLifecycleEvent()]
-|entity is about to be deleted from the database using the xref:refguide:applib:index/services/repository/RepositoryService.adoc[RepositoryService]'s
-`#remove(...)` method.
+|xref:refguide:applib:index/events/lifecycle/ObjectPersistedEvent.adoc[ObjectPersistedEvent]
+|xref:refguide:applib:index/annotation/DomainObject.adoc#persistedLifecycleEvent[persistedLifecycleEvent()]
+|entity is first saved (inserted) into the database using the xref:refguide:applib:index/services/repository/RepositoryService.adoc[RepositoryService]'s
+`#persist(...)` method.
+|xref:refguide:applib-methods:lifecycle.adoc#persisted[persisted()]
 
 
 |xref:refguide:applib:index/events/lifecycle/ObjectUpdatedEvent.adoc[ObjectUpdatedEvent]
 |xref:refguide:applib:index/annotation/DomainObject.adoc#updatingLifecycleEvent[updatingLifecycleEvent()]
 |entity has just been updated in the database.
+|xref:refguide:applib-methods:lifecycle.adoc#updating[updating()]
 
 
 |xref:refguide:applib:index/events/lifecycle/ObjectUpdatingEvent.adoc[ObjectUpdatingEvent]
 |xref:refguide:applib:index/annotation/DomainObject.adoc#updatedLifecycleEvent[updatedLifecycleEvent()]
 |entity is about to be updated in the database.
+|xref:refguide:applib-methods:lifecycle.adoc#updated[updated()]
+
+
+|xref:refguide:applib:index/events/lifecycle/ObjectRemovingEvent.adoc[ObjectRemovingEvent]
+|xref:refguide:applib:index/annotation/DomainObject.adoc#removingLifecycleEvent[removingLifecycleEvent()]
+|entity is about to be deleted from the database using the xref:refguide:applib:index/services/repository/RepositoryService.adoc[RepositoryService]'s
+`#remove(...)` method.
+|xref:refguide:applib-methods:lifecycle.adoc#removing[removing()]
+
 
 
 |===
diff --git a/antora/components/refguide/modules/applib-classes/pages/events/uievent.adoc b/antora/components/refguide/modules/applib-classes/pages/events/uievent.adoc
index fdad34a..d67a6af 100644
--- a/antora/components/refguide/modules/applib-classes/pages/events/uievent.adoc
+++ b/antora/components/refguide/modules/applib-classes/pages/events/uievent.adoc
@@ -8,7 +8,7 @@ UI events are broadcast on the xref:refguide:applib:index/services/eventbus/Even
 
 They allow subscribers to change various presentation aspects of the rendered object.
 
-Note that if the domain object defines its own layout preferences (for example, a xref:refguide:applib-methods:reserved.adoc#title[title()] supporting method) then these will take precedence.
+Note that if the domain object defines its own layout preferences (for example, a xref:refguide:applib-methods:ui-hints.adoc#title[title()] supporting method) then these will take precedence.
 
 
 
@@ -25,7 +25,7 @@ Note that if the domain object defines its own layout preferences (for example,
 |xref:refguide:applib:index/events/ui/TitleUiEvent.adoc[TitleUiEvent]
 |xref:refguide:applib:index/annotation/DomainObjectLayout.adoc#titleUiEvent[titleUiEvent()]
 |\... rendering the title for a domain object.
-|xref:refguide:applib-methods:reserved.adoc#title[title()] +
+|xref:refguide:applib-methods:ui-hints.adoc#title[title()] +
 xref:refguide:applib:index/annotation/Title.adoc[@Title]
 
 
@@ -33,18 +33,18 @@ xref:refguide:applib:index/annotation/Title.adoc[@Title]
 |xref:refguide:applib:index/events/ui/IconUiEvent.adoc[IconUiEvent]
 |xref:refguide:applib:index/annotation/DomainObjectLayout.adoc#iconUiEvent[iconUiEvent()]
 |\... rendering an icon for a domain object.
-|xref:refguide:applib-methods:reserved.adoc#iconName[iconName()]
+|xref:refguide:applib-methods:ui-hints.adoc#iconName[iconName()]
 
 
 |xref:refguide:applib:index/events/ui/CssClassUiEvent.adoc[CssClassUiEvent]
 |xref:refguide:applib:index/annotation/DomainObjectLayout.adoc#cssClassUiEvent[cssClassUiEvent()]
 |\... obtaining a CSS class hint for a domain object.
-|xref:refguide:applib-methods:reserved.adoc#cssClass[cssClass()]
+|xref:refguide:applib-methods:ui-hints.adoc#cssClass[cssClass()]
 
 |xref:refguide:applib:index/events/ui/LayoutUiEvent.adoc[LayoutUiEvent]
 |xref:refguide:applib:index/annotation/DomainObjectLayout.adoc#layoutUiEvent[layoutUiEvent()]
 |\... obtain an alternative layout for a domain object.
-|xref:refguide:applib-methods:reserved.adoc#layout[layout()]
+|xref:refguide:applib-methods:ui-hints.adoc#layout[layout()]
 
 |===
 
diff --git a/antora/components/refguide/modules/applib-classes/pages/mixees-and-mixins.adoc b/antora/components/refguide/modules/applib-classes/pages/mixees-and-mixins.adoc
index 8dc3538..3022bb7 100644
--- a/antora/components/refguide/modules/applib-classes/pages/mixees-and-mixins.adoc
+++ b/antora/components/refguide/modules/applib-classes/pages/mixees-and-mixins.adoc
@@ -8,7 +8,7 @@ This section defines a number of "mixee" interfaces that define a contract for s
 
 [TIP]
 ====
-See the xref:userguide:fun:overview.adoc#mixins[fundamentals user guide] for a discussion of mixins.
+See the xref:userguide:fun:overview.adoc#mixins[user guide] for a discussion of mixins.
 ====
 
 
@@ -17,13 +17,22 @@ See the xref:userguide:fun:overview.adoc#mixins[fundamentals user guide] for a d
 
 The framework provides a number of mixins that contributes to `java.lang.Object` (in other words, to every domain object):
 
-* core
-** xref:refguide:applib:index/mixins/layout/Object_downloadLayoutXml.adoc[Object_downloadLayoutXml]
+* layout
 ** xref:refguide:applib:index/mixins/layout/Object_downloadLayoutXml.adoc[Object_downloadLayoutXml]
 
+* Metamodel
+** xref:refguide:applib:index/mixins/metamodel/Object_downloadMetamodelXml.adoc[Object_downloadMetamodelXml]
+** xref:refguide:applib:index/mixins/metamodel/Object_rebuildMetamodel.adoc[Object_rebuildMetamodel]
+** xref:refguide:applib:index/mixins/metamodel/Object_objectType.adoc[Object_objectType] (property)
+** xref:refguide:applib:index/mixins/metamodel/Object_objectIdentifier.adoc[Object_objectIdentifier] (property)
+
 * Wicket viewer:
+
 ** xref:refguide:viewer:index/wicket/viewer/mixins/Object_clearHints.adoc[Object_clearHints]
 
+* REST viewer:
+** xref:refguide:applib:index/mixins/rest/Object_openRestApi.adoc[Object_openRestApi]
+
 
 
 [[Dto]]
@@ -46,7 +55,7 @@ All JDO domain entities implement the DataNucleus `Persistable` role interface a
 
 Using this, the following mixins (actions and properties) are available for all JDO entities:
 
-* xref:refguide:persistence:index/jdo/datanucleus/mixins/Persistable_downloadJdoMetadata.adoc[Persistable_downloadJdoMetadata] (action)
+* xref:refguide:persistence:index/jdo/datanucleus/mixins/Persistable_downloadJdoMetadata.adoc[Persistable_downloadJdoMetadata]
 * xref:refguide:persistence:index/jdo/datanucleus/mixins/Persistable_datanucleusIdLong.adoc[Persistable_datanucleusIdLong] (property)
 +
 only visible if the JDO entity has datastore identity, and the `id` field introduced by enhancing can be cast to `Long`.
@@ -55,7 +64,7 @@ only visible if the JDO entity has datastore identity, and the `id` field introd
 +
 only visible if the entity is annotated with `javax.jdo.annotations.Version` and the `version` field introduced by enhancing can be cast to `Long`.
 
-* xref:refguide:persistence:index/jdo/datanucleus/mixins/Persistable_datanucleusVersionTimestamp.adoc[Persistable_datanucleusVersionLong] (property)
+* xref:refguide:persistence:index/jdo/datanucleus/mixins/Persistable_datanucleusVersionTimestamp.adoc[Persistable_datanucleusVersionTimestamp] (property)
 +
 only visible if the entity is annotated with `javax.jdo.annotations.Version` and the `version` field introduced by enhancing can be cast to `java.sql.Timestamp`.
 
@@ -73,7 +82,27 @@ A number of extension modules related to security, such as xref:security:secman:
 
 == System
 
-Domain objects that are associated to an xref:refguide:applib:index/services/iactn/Interaction.adoc[Interaction] or to a nested xref:refguide:applib:index/services/xactn/TransactionId.adoc[transaction] can express this relationship by implementing the xref:refguide:applib:index/mixins/system/HasInteractionId_see-also.adoc
+Domain objects that are associated to an xref:refguide:applib:index/services/iactn/Interaction.adoc[Interaction] can express this relationship by implementing the xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] interface.
+
+Mixins that contribute to this mixee interface include:
+
+* xref:refguide:extensions:index/commandlog/impl/mixins/HasInteractionId_command.adoc[HasInteractionId_command]
++
+from xref:extensions:command-log:about.adoc[Comman Log] module.
+
+
+The closely related  xref:refguide:applib:index/mixins/system/HasTransactionId.adoc[HasTransactionId] (a subtype of xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId]) can be implemented by any domain objects associated with a particular transaction within the outer xref:refguide:applib:index/services/iactn/Interaction.adoc[Interaction].
+
+The xref:refguide:applib:index/mixins/system/DomainChangeRecord.adoc[DomainChangeRecord] is intended for domain objects representing commands, audit entries or executions (of action invocations/property edits).
+Extension modules that provide these capabilities can implement this domain object to allow the user to navigate between these different but related cross-cutting concerns.
+
+Mixins that contribute to this mixee interface include:
+
+** xref:refguide:applib:index/mixins/system/DomainChangeRecord_openTargetObject.adoc[DomainChangeRecord_openTargetObject]
++
+(provided by the core framework)
+
+
 
 
 == Updates
@@ -88,9 +117,9 @@ For domain entities that keep track of when they were last updated.
 +
 For domain entities that keep track of which user last updated them.
 
-* xref:refguide:applib:index/mixins/mixins/updates/OnUpdatedByAndAt.adoc[OnUpdatedByAndAt]
+* xref:refguide:applib:index/mixins/updates/OnUpdatedByAndAt.adoc[OnUpdatedByAndAt]
 +
-Simply a combination of xref:refguide:applib:index/mixins/mixins/updates/OnUpdatedAt.adoc[HasUpdatedAt] and xref:refguide:applib:index/mixins/mixins/updates/OnUpdatedBy.adoc[HasUpdatedBy]
+Simply a combination of xref:refguide:applib:index/mixins/updates/OnUpdatedAt.adoc[OnUpdatedAt] and xref:refguide:applib:index/mixins/updates/OnUpdatedBy.adoc[OnUpdatedBy]
 
 Note that these are not quite the same thing as regular mixee interfaces, in that they do not expose getters to be leveraged by a mixin.
 Rather, these expose callback such that the framework can populate them at the appropriate juncture.
diff --git a/antora/components/refguide/modules/applib-classes/pages/ViewModel.adoc b/antora/components/refguide/modules/applib-classes/pages/non-persisted-objects.adoc
similarity index 53%
rename from antora/components/refguide/modules/applib-classes/pages/ViewModel.adoc
rename to antora/components/refguide/modules/applib-classes/pages/non-persisted-objects.adoc
index 6a7945b..b635e63 100644
--- a/antora/components/refguide/modules/applib-classes/pages/ViewModel.adoc
+++ b/antora/components/refguide/modules/applib-classes/pages/non-persisted-objects.adoc
@@ -1,10 +1,12 @@
+= Non-persisted Objects
 
 :Notice: 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 ag [...]
 :page-partial:
 
 
-[#ViewModel]
-include::refguide:applib:page$index/ViewModel.adoc[]
+The xref:refguide:applib:index/ViewModel.adoc[ViewModel] interface can be implemented by a view model domain object to provide full control over its serialization to and from a memento.
 
+TIP: There is a more in-depth discussion on view models in the xref:userguide:fun:view-models.adoc[user guide] and the xref:userguide:fun:overview.adoc#view-models[user guide overview].
+
+The very similar xref:refguide:applib:index/RecreatableDomainObject.adoc[RecreatableDomainObject] also provides the same capability; the distinction is simply that the latter makes more sense for domain objects that conceptually are entities but are not to be persisted by JDO or JPA.
 
-See also the xref:userguide:fun:view-models.adoc#view-model-interface[`ViewModel` interface] in the user guide.
diff --git a/antora/components/refguide/modules/applib-classes/pages/roles-mixins-contributees/mixins.adoc b/antora/components/refguide/modules/applib-classes/pages/roles-mixins-contributees/mixins.adoc
index 60077ef..821819b 100644
--- a/antora/components/refguide/modules/applib-classes/pages/roles-mixins-contributees/mixins.adoc
+++ b/antora/components/refguide/modules/applib-classes/pages/roles-mixins-contributees/mixins.adoc
@@ -46,7 +46,7 @@ All JDO domain entities implement the DataNucleus `Persistable` role interface a
 
 Using this, the following mixins (actions and properties) are available for all JDO entities:
 
-* xref:refguide:persistence:index/jdo/datanucleus/mixins/Persistable_downloadJdoMetadata.adoc[Persistable_downloadJdoMetadata] (action)
+* xref:refguide:persistence:index/jdo/datanucleus/mixins/Persistable_downloadJdoMetadata.adoc[Persistable_downloadJdoMetadata]
 * xref:refguide:persistence:index/jdo/datanucleus/mixins/Persistable_datanucleusIdLong.adoc[Persistable_datanucleusIdLong] (property)
 +
 only visible if the JDO entity has datastore identity, and the `id` field introduced by enhancing can be cast to `Long`.
diff --git a/antora/components/refguide/modules/applib-classes/pages/utility.adoc b/antora/components/refguide/modules/applib-classes/pages/utility.adoc
index 1002c48..e9600a8 100644
--- a/antora/components/refguide/modules/applib-classes/pages/utility.adoc
+++ b/antora/components/refguide/modules/applib-classes/pages/utility.adoc
@@ -7,6 +7,9 @@ The `org.apache.isis.applib.util` package has a number of simple utility classes
 
 * xref:applib:index/util/Enums.adoc[Enums]
 * xref:applib:index/util/ObjectContracts.adoc[ObjectContracts]
+* xref:applib:index/util/JaxbUtil.adoc[JaxbUtil]
 * xref:applib:index/util/Reasons.adoc[Reasons]
+* xref:applib:index/util/ReasonBuffer.adoc[ReasonBuffer]
+* xref:applib:index/util/ReasonBuffer2.adoc[ReasonBuffer2]
 * xref:applib:index/util/TitleBuffer.adoc[TitleBuffer]
 
diff --git a/antora/components/refguide/modules/applib-classes/pages/value-types.adoc b/antora/components/refguide/modules/applib-classes/pages/value-types.adoc
index 2cbf601..16ed3f6 100644
--- a/antora/components/refguide/modules/applib-classes/pages/value-types.adoc
+++ b/antora/components/refguide/modules/applib-classes/pages/value-types.adoc
@@ -42,8 +42,13 @@ It also supports these Joda-Time classes:
 
 
 
-== Apache Isis-defined
+== Framework-defined
+
+The framework also defines a number of custom value types:
+
+* xref:refguide:applib:index/value/Blob.adoc[Blob]
+* xref:refguide:applib:index/value/Clob.adoc[Clob]
+* xref:refguide:applib:index/value/Markup.adoc[Markup]
+* xref:refguide:applib:index/value/LocalResourcePath.adoc[LocalResourcePath]
+* xref:refguide:applib:index/value/Password.adoc[Password]
 
-include::value-types/Blob.adoc[leveloffset=+2]
-include::value-types/Clob.adoc[leveloffset=+2]
-include::value-types/Markup.adoc[leveloffset=+2]
diff --git a/antora/components/refguide/modules/applib-classes/pages/value-types/Clob.adoc b/antora/components/refguide/modules/applib-classes/pages/value-types/Clob.adoc
deleted file mode 100644
index 7aebf62..0000000
--- a/antora/components/refguide/modules/applib-classes/pages/value-types/Clob.adoc
+++ /dev/null
@@ -1,89 +0,0 @@
-[#Clob]
-= `Clob`
-
-:Notice: 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 ag [...]
-:page-partial:
-
-
-`Clob` (in the `org.apache.isis.applib.value` package) is a value type defined by the Apache Isis framework to represent a character large object.
-Conceptually you can consider it as a set of characters (an RTF or XML document, for example), though in fact it wraps three pieces of information:
-
-* the set of characters
-* a name
-* a mime type.
-
-This is reflected in the class' constructors and properties:
-
-// TODO: v2: use include::[]
-
-[source,java]
-----
-import lombok.Getter;
-
-public final class Clob ... {
-
-    public Clob(
-            String name,
-            String primaryType, String subType,
-            char[] chars) {
-        // ...
-    }
-    public Clob(
-            String name,
-            String mimeTypeBase,
-            char[] chars) {
-        // ...
-    }
-    public Clob(String name, MimeType mimeType, char[] chars) {
-        // ...
-    }
-    public Clob(
-            String name,
-            String primaryType, String subType,
-            CharSequence chars) {
-        // ...
-    }
-    public Clob(
-            String name,
-            String mimeTypeBase,
-            CharSequence chars) {
-        // ...
-    }
-    public Clob(
-            String name,
-            MimeType mimeType,
-            CharSequence chars) {
-        // ...
-    }
-
-    @Getter
-    private String name;
-    @Getter
-    private MimeType mimeType;
-    @Getter
-    private CharSequence chars;
-
-    // ...
-}
-----
-
-Mandatory properties of this type can be mapped to xref:pjdo:ROOT:about.adoc[JDO/DataNucleus] using:
-
-[source,java]
-----
-import javax.jdo.annotations.Persistent;
-import javax.jdo.annotations.Column;
-
-@Persistent(defaultFetchGroup="false", columns = {
-    @Column(name = "someClob_name"
-            , allowsNull = "false"),
-    @Column(name = "someClob_mimetype"
-            , allowsNull = "false"),
-    @Column(name = "someClob_chars"
-            , jdbcType = "CLOB"
-            , allowsNull = "false")
-})
-private Clob someClob;
-----
-
-while optional properties can be mapped the same, but using `allowsNull = "true` for each of the ``@Column``s.
diff --git a/antora/components/refguide/modules/applib-classes/pages/value-types/Markup.adoc b/antora/components/refguide/modules/applib-classes/pages/value-types/Markup.adoc
deleted file mode 100644
index 9d6ab8c..0000000
--- a/antora/components/refguide/modules/applib-classes/pages/value-types/Markup.adoc
+++ /dev/null
@@ -1,50 +0,0 @@
-= `Markup`
-
-:Notice: 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 ag [...]
-:page-partial:
-
-
-The `Markup` value type is intended to be used as a read-only property, to render arbitrary markup into the user interface.
-
-For example:
-
-image::value-types/markup.png[width="400px"]
-
-Corresponds to:
-
-// TODO: v2: use include::[]
-
-[source,java]
-----
-import javax.jdo.annotations.Column;
-import javax.jdo.annotations.Persistent;
-import lombok.Getter;
-import lombok.Setter;
-
-@Persistent
-@Column(allowsNull = "true", length = 4000)
-@Property(optionality=Optionality.OPTIONAL, editing = Editing.DISABLED)
-@Getter @Setter
-private Markup someMarkup;
-
-public BlobClobObject updateSomeMarkup(Markup markup) {
-    setSomeMarkup(markup);
-    return this;
-}
-public Markup defaultUpdate0SomeMarkup(String markup) {
-    return getSomeMarkup();
-}
-----
-
-with this corresponding `layout.xml`:
-
-[source,xml]
-----
-<cpt:fieldSet name="Markup" id="markup">
-    <cpt:action id="updateSomeMarkup"/>
-    <cpt:property id="someMarkup" labelPosition="NONE">
-    </cpt:property>
-</cpt:fieldSet>
-----
-
-If the property is also editable then an text edit box is also displayed - unlikely to be the desired effect.
diff --git a/antora/components/refguide/modules/applib-classes/partials/module-nav.adoc b/antora/components/refguide/modules/applib-classes/partials/module-nav.adoc
index 055402d..1b27b27 100644
--- a/antora/components/refguide/modules/applib-classes/partials/module-nav.adoc
+++ b/antora/components/refguide/modules/applib-classes/partials/module-nav.adoc
@@ -1,16 +1,56 @@
 
 * xref:applib-classes:about.adoc[Classes]
-** xref:applib-classes:events.adoc[Events]
-** xref:applib-classes:mixees-and-mixins.adoc[Mixees and Mixins]
-** xref:applib-classes:ViewModel.adoc[ViewModel] (interface)
+
+** xref:applib-classes:non-persisted-objects.adoc[Non-persisted objects]
+*** xref:applib:index/ViewModel.adoc[ViewModel]
+*** xref:applib:index/RecreatableDomainObject.adoc[RecreatableDomainObject]
+
 ** xref:applib-classes:value-types.adoc[Value Types]
-** xref:applib-classes:spec.adoc[Specification pattern]
+*** xref:applib:index/value/Blob.adoc[Blob]
+*** xref:applib:index/value/Clob.adoc[Clob]
+*** xref:applib:index/value/Markup.adoc[Markup]
+*** xref:applib:index/value/LocalResourcePath.adoc[LocalResourcePath]
+*** xref:applib:index/value/Password.adoc[Password]
+
+
 ** xref:applib-classes:utility.adoc[Utility Classes]
 *** xref:applib:index/util/Enums.adoc[Enums]
+*** xref:applib:index/util/JaxbUtil.adoc[JaxbUtil]
 *** xref:applib:index/util/ObjectContracts.adoc[ObjectContracts]
 *** xref:applib:index/util/Reasons.adoc[Reasons]
+*** xref:applib:index/util/ReasonBuffer.adoc[ReasonBuffer]
+*** xref:applib:index/util/ReasonBuffer2.adoc[ReasonBuffer2]
 *** xref:applib:index/util/TitleBuffer.adoc[TitleBuffer]
 
+** xref:applib-classes:mixees-and-mixins.adoc[Mixees and Mixins]
+
+*** xref:applib:index/mixins/layout/Object_downloadLayoutXml.adoc[Object_downloadLayoutXml]
+
+*** xref:refguide:applib:index/mixins/metamodel/Object_downloadMetamodelXml.adoc[Object_downloadMetamodelXml]
+*** xref:applib:index/mixins/metamodel/Object_rebuildMetamodel.adoc[Object_rebuildMetamodel]
+*** xref:refguide:applib:index/mixins/metamodel/Object_objectType.adoc[Object_objectType] (property)
+*** xref:refguide:applib:index/mixins/metamodel/Object_objectIdentifier.adoc[Object_objectIdentifier] (property)
+
+*** xref:viewer:index/wicket/viewer/mixins/Object_clearHints.adoc[Object_clearHints]
+
+*** xref:applib:index/mixins/rest/Object_openRestApi.adoc[Object_openRestApi]
+
+*** xref:refguide:applib:index/mixins/dto/Dto_downloadXml.adoc[Dto_downloadXml]
+*** xref:refguide:applib:index/mixins/dto/Dto_downloadXsd.adoc[Dto_downloadXsd]
+
+*** xref:refguide:persistence:index/jdo/datanucleus/mixins/Persistable_downloadJdoMetadata.adoc[Persistable_downloadJdoMetadata]
+*** xref:refguide:persistence:index/jdo/datanucleus/mixins/Persistable_datanucleusIdLong.adoc[Persistable_datanucleusIdLong] (property)
+*** xref:refguide:persistence:index/jdo/datanucleus/mixins/Persistable_datanucleusVersionLong.adoc[Persistable_datanucleusVersionLong] (property)
+*** xref:refguide:persistence:index/jdo/datanucleus/mixins/Persistable_datanucleusVersionTimestamp.adoc[Persistable_datanucleusVersionTimestamp] (property)
+
+*** xref:refguide:extensions:index/commandlog/impl/mixins/HasInteractionId_command.adoc[HasInteractionId_command]
+*** xref:refguide:applib:index/mixins/system/DomainChangeRecord_openTargetObject.adoc[DomainChangeRecord_openTargetObject]
+
+
+
+** xref:applib-classes:spec.adoc[Specification pattern]
+
+
 ** xref:applib-classes:layout.adoc[Layout]
 
 
diff --git a/antora/components/refguide/modules/applib-methods/pages/lifecycle.adoc b/antora/components/refguide/modules/applib-methods/pages/lifecycle.adoc
index 2bb786a..cd015fe 100644
--- a/antora/components/refguide/modules/applib-methods/pages/lifecycle.adoc
+++ b/antora/components/refguide/modules/applib-methods/pages/lifecycle.adoc
@@ -1,7 +1,6 @@
 = Lifecycle Methods
 
 :Notice: 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 ag [...]
-:page-partial:
 
 
 
@@ -11,7 +10,7 @@ For example, the entity is notified immediately prior to being persisted, or whe
 The lifecycle callback methods supported by Apache Isis are:
 
 .Lifecycle methods (partial support)
-[cols="1m,4a,1m", options="header"]
+[cols="1m,3a,2m", options="header"]
 |===
 
 |Method
@@ -51,3 +50,10 @@ equivalent
 
 Further discussion on using events and a subscriber (which will result in a more flexible/decoupled design) can be found xref:applib-classes:events.adoc#lifecycle-events[here].
 
+include::lifecycle/created.adoc[leveloffset=+1]
+include::lifecycle/loaded.adoc[leveloffset=+1]
+include::lifecycle/persisting.adoc[leveloffset=+1]
+include::lifecycle/persisted.adoc[leveloffset=+1]
+include::lifecycle/updating.adoc[leveloffset=+1]
+include::lifecycle/updated.adoc[leveloffset=+1]
+include::lifecycle/removing.adoc[leveloffset=+1]
diff --git a/antora/components/refguide/modules/applib-methods/pages/prefixes.adoc b/antora/components/refguide/modules/applib-methods/pages/prefixes.adoc
index 926e4ff..1672bdb 100644
--- a/antora/components/refguide/modules/applib-methods/pages/prefixes.adoc
+++ b/antora/components/refguide/modules/applib-methods/pages/prefixes.adoc
@@ -1,4 +1,4 @@
-= Supporting Method Prefixes
+= Supporting Methods
 
 :Notice: 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 ag [...]
 :page-partial:
@@ -13,7 +13,7 @@ Supporting methods are, therefore, each characterized by their own particular pr
 
 The table below lists the method prefixes that are recognized as part of Apache Isis' default programming model.
 
-.Recognized Method Prefixes
+.Method Prefixes
 [cols="2m,1,1,1,1,1,4a",options="header"]
 |===
 
@@ -50,18 +50,6 @@ See also xref:refguide:applib-methods:prefixes.adoc#choices[choices...()]
 
 See also xref:refguide:applib-methods:prefixes.adoc#autoComplete[autoComplete...()].
 
-//|xref:refguide:applib-methods:prefixes.adoc#clear[clear...()]
-//|
-//|Y
-//|
-//|
-//|
-//|Clear a property (set it to null). +
-//
-//Allows business logic to be placed apart from the setter. +
-//
-//See also xref:refguide:applib-methods:prefixes.adoc#modify[modify...()]
-
 
 |xref:refguide:applib-methods:prefixes.adoc#default[default...()]
 |
@@ -97,30 +85,6 @@ See also xref:refguide:applib-methods:prefixes.adoc#set[set...()].
 |
 |Hides a property, a collection or an action.
 
-//|xref:refguide:applib-methods:prefixes.adoc#modify[modify...()]
-//|
-//|Y
-//|
-//|
-//|
-//|Modify a property (set it to a non-null) value. +
-//
-//Allows business logic to be placed apart from the setter. +
-//
-//See also xref:refguide:applib-methods:prefixes.adoc#clear[clear...()]`.
-
-//|xref:refguide:applib-methods:prefixes.adoc#removeFrom[removeFrom...()]
-//|
-//|
-//|Y
-//|
-//|
-//|remove object from a collection. +
-//
-//NOTE:Directly mutable collections are not currently supported by the xref:vw:ROOT:about.adoc[Wicket viewer].
-//
-//See also xref:refguide:applib-methods:prefixes.adoc#addTo[addTo...()]`
-
 
 |xref:refguide:applib-methods:prefixes.adoc#set[set...()]
 |
@@ -130,47 +94,6 @@ See also xref:refguide:applib-methods:prefixes.adoc#set[set...()].
 |
 |Sets the value of a property or a collection.
 
-//|xref:refguide:applib-methods:prefixes.adoc#validate[validate...()]
-//|Y
-//|
-//|
-//|Y
-//|Y
-//|Check that a proposed value of a property or a set of action parameters or a single action parameter is valid. +
-//
-//See also xref:refguide:applib-methods:prefixes.adoc#validateAddTo[validateAddTo...()] and xref:refguide:applib-methods:prefixes.adoc#validateRemoveFrom[validateRemoveFrom...()] to validate modifications to collections.
-
-//|xref:refguide:applib-methods:prefixes.adoc#validateAddTo[`validate +
-//AddTo...()`]
-//|
-//|Y
-//|
-//|
-//|
-//|Check that a proposed object to add to a collection is valid. +
-//
-//[NOTE]
-//====
-//Directly mutable collections are not currently supported by the xref:vw:ROOT:about.adoc[Wicket viewer].
-//====
-//
-//See also xref:refguide:applib-methods:prefixes.adoc#validateRemoveFrom[validateRemoveFrom...()], and xref:refguide:applib-methods:prefixes.adoc#validate[validate...()] for properties and actions.
-
-//|xref:refguide:applib-methods:prefixes.adoc#validateRemoveFrom[`validate +
-//RemoveFrom...()`]
-//|
-//|Y
-//|
-//|
-//|
-//|Check that a proposed object to remove from a collection is valid. +
-//
-//[NOTE]
-//====
-//Directly mutable collections are not currently supported by the xref:vw:ROOT:about.adoc[Wicket viewer].
-//====
-//
-//See also xref:refguide:applib-methods:prefixes.adoc#validateAddTo[validateAddTo...()], and xref:refguide:applib-methods:prefixes.adoc#validate[validate...()] for properties and actions.
 
 |===
 
@@ -184,17 +107,10 @@ A suitable error message is logged so that the issue can be easily diagnosed.
 ====
 
 
-//include::prefixes/addTo.adoc[leveloffset=+1]
 include::prefixes/autoComplete.adoc[leveloffset=+1]
 include::prefixes/choices.adoc[leveloffset=+1]
-//include::prefixes/clear.adoc[leveloffset=+1]
 include::prefixes/default.adoc[leveloffset=+1]
 include::prefixes/disable.adoc[leveloffset=+1]
 include::prefixes/get.adoc[leveloffset=+1]
 include::prefixes/hide.adoc[leveloffset=+1]
-//include::prefixes/modify.adoc[leveloffset=+1]
-//include::prefixes/removeFrom.adoc[leveloffset=+1]
 include::prefixes/set.adoc[leveloffset=+1]
-//include::prefixes/validate.adoc[leveloffset=+1]
-//include::prefixes/validateAddTo.adoc[leveloffset=+1]
-//include::prefixes/validateRemoveFrom.adoc[leveloffset=+1]
diff --git a/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/addTo.adoc b/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/addTo.adoc
deleted file mode 100644
index 4b5aad4..0000000
--- a/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/addTo.adoc
+++ /dev/null
@@ -1,36 +0,0 @@
-[[addTo]]
-= `addTo...()` (deprecated)
-
-:Notice: 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 ag [...]
-
-
-
-The `addTo...()` supporting method is called whenever an object is added to a collection. Its purpose is to allow additional business logic to be performed.
-
-
-[NOTE]
-====
-Directly mutable collections are not currently supported by the xref:vw:ROOT:about.adoc[Wicket viewer].  The suggested workaround is to simply define an action.
-====
-
-
-For example:
-
-[source,java]
-----
-public class LibraryMember {
-    public SortedSet<Book> getBorrowed() { /* ... */ }
-    public void setBorrowed(SortedSet<Book> borrowed) { /* ... */ }
-    public void addToBorrowed(Book book) {
-        getBorrowed().add(book);                                              // <1>
-        reminderService.addReminder(this, book, clock.today().plusDays(21));  // <2>
-    }
-    public void removeFromBorrowed(Book book) { /* ... */ }
-    ...
-}
-----
-<1> update the collection
-<2> perform some additional business logic
-
-
-See also xref:refguide:applib-methods:prefixes.adoc#removeFrom[removeFrom...()]`
diff --git a/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/clear.adoc b/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/clear.adoc
deleted file mode 100644
index 9b57f56..0000000
--- a/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/clear.adoc
+++ /dev/null
@@ -1,36 +0,0 @@
-[[clear]]
-= `clear...()` (deprecated)
-
-:Notice: 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 ag [...]
-
-
-
-The `clear...()` supporting method is called -- instead of the setter -- whenever an (optional) property is to be set to `null`.
-Its purpose is to allow additional business logic to be performed.
-
-[NOTE]
-====
-DataNucleus' smart handling of setters means that this supporting methods are in essence redundant, and so should be considered deprecated.
-====
-
-For example:
-
-[source,java]
-----
-public class LibraryMember {
-    public Title getFavoriteTitle() { /* ... */ }
-    public void setFavoriteTitle(Title title) { /* ... */ }
-    public void modifyFavoriteTitle(Title title) { /* ... */ }
-    public void clearFavoriteTitle() {
-        if(getTitle() == null) { return; }
-        setFavoriteTitle(null);                         // <1>
-        titleFavoritesService.decrement(title);         // <2>
-    }
-    ...
-}
-----
-<1> update the property
-<2> perform some additional business logic
-
-
-See also xref:refguide:applib-methods:prefixes.adoc#modify[modify...()]`
diff --git a/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/modify.adoc b/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/modify.adoc
deleted file mode 100644
index e9974d0..0000000
--- a/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/modify.adoc
+++ /dev/null
@@ -1,42 +0,0 @@
-[[modify]]
-= `modify...()` (deprecated)
-
-:Notice: 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 ag [...]
-
-
-
-The `modify...()` supporting method is called -- instead of the setter -- whenever a property has been set to be set to a new value.
-Its purpose is to allow additional business logic to be performed.
-
-[NOTE]
-====
-DataNucleus' smart handling of setters means that this supporting methods are in essence redundant, and so should be considered deprecated.
-====
-
-
-For example:
-
-[source,java]
-----
-public class LibraryMember {
-    public Title getFavoriteTitle() { /* ... */ }
-    public void setFavoriteTitle(Title title) { /* ... */ }
-    public void modifyFavoriteTitle(Title title) {
-        if(getTitle() != null) {
-            titleFavoritesService.decrement(getTitle());    // <1>
-        }
-        setFavoriteTitle(title);                            // <2>
-        titleFavoritesService.decrement(title);             // <3>
-    }
-    public void clearFavoriteTitle() { /* ... */ }
-    ...
-}
-----
-<1> perform some additional business logic
-<2> update the property
-<3> perform some additional business logic
-
-
-See also xref:refguide:applib-methods:prefixes.adoc#clear[clear...()]`
-
-
diff --git a/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/removeFrom.adoc b/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/removeFrom.adoc
deleted file mode 100644
index 7945502..0000000
--- a/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/removeFrom.adoc
+++ /dev/null
@@ -1,36 +0,0 @@
-[[removeFrom]]
-= `removeFrom...()` (deprecated)
-
-:Notice: 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 ag [...]
-
-
-
-The `removeFrom...()` supporting method is called whenever an object is removed from a collection. Its purpose is to allow additional business logic to be performed.
-
-
-[NOTE]
-====
-Directly mutable collections are not currently supported by the xref:vw:ROOT:about.adoc[Wicket viewer].  The suggested workaround is to simply define an action.
-====
-
-
-For example:
-
-[source,java]
-----
-public class LibraryMember {
-    public SortedSet<Book> getBorrowed() { /* ... */ }
-    public void setBorrowed(SortedSet<Book> borrowed) { /* ... */ }
-    public void addToBorrowed(Book book) { /* ... */ }
-    public void removeFromBorrowed(Book book) {
-        getBorrowed().remove(book);                         // <1>
-        reminderService.removeReminder(this, book);         // <2>
-    }
-    ...
-}
-----
-<1> update the collection
-<2> perform some additional business logic
-
-
-See also xref:refguide:applib-methods:prefixes.adoc#addTo[addTo...()]`
diff --git a/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/validate.adoc b/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/validate.adoc
deleted file mode 100644
index 23a2393..0000000
--- a/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/validate.adoc
+++ /dev/null
@@ -1,138 +0,0 @@
-[[validate]]
-= `validate...()`
-
-:Notice: 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 ag [...]
-
-
-
-The `validate...()` supporting method is called for properties, actions and action parameters.
-It allows the proposed new value for a property to be rejected, or the proposed argument of an action parameter to be rejected, or to reject a whole set of action arguments for an actio invocation.
-
-
-The reason for vetoing a modification/invocation is normally returned as a string.
-However, Apache Isis' xref:userguide:btb:i18n.adoc[i18n support] extends this so that reasons can be internationalized if required.
-
-
-
-== Action Parameter
-
-For an action parameter in (0-based) position _N_, and of type `T`, the signature is:
-
-[source,java]
-----
-public String validateNXxx(T proposed) { /* ... */ }
-----
-
-where the returned string is the reason why the argument is rejected (or `null` if not vetoed).
-
-
-For i18n, the supporting method returns a `TranslatableString`:
-
-[source,java]
-----
-public TranslatableString validateNXxx(T proposed) { /* ... */ }
-----
-
-The returned string is then automatically translated to the locale of the current user.
-
-
-For example:
-
-[source,java]
-----
-public class Customer {
-    public Order placeOrder(
-            final Product product,
-            @ParameterLayout(named="Quantity")
-            final int quantity) {
-        ...
-    }
-    public String validate0PlaceOrder(
-            final Product product) {
-        return product.isDiscontinued()
-                    ? "Product has been discontinued"
-                    : null;
-    }
-    ...
-}
-----
-
-
-== Action Parameter Set
-
-In addition to validating a single single action argument, it is also possible to validate a complete set of action arguments.
-The signature is:
-
-[source,java]
-----
-public String validateXxx(...) { /* ... */ }
-----
-
-where the returned string is the reason why the argument is rejected (or `null` if not vetoed), and the supporting method takes the same parameter types as the action itself.
-
-
-For i18n, the supporting method returns a `TranslatableString`:
-
-[source,java]
-----
-public TranslatableString validateXxx(...) { /* ... */ }
-----
-
-
-For example:
-
-[source,java]
-----
-public class Customer {
-    public Order placeOrder(
-            final Product product,
-            @ParameterLayout(named="Quantity")
-            final int quantity) {
-        ...
-    }
-    public String validatePlaceOrder(
-            final Product product,
-            final int quantity) {
-        return quantity > product.getOrderLimit()
-                    ? "May not order more than " + product.getOrderLimit() + " items for this product"
-                    : null;
-    }
-    ...
-}
-----
-
-
-
-== Properties
-
-For properties of type `T` the signature of the supporting method is:
-
-[source,java]
-----
-public String validateXxx(T proposed) { /* ... */ }
-----
-
-where the returned string is the reason the modification is vetoed (or `null` if not vetoed).
-
-For i18n, the supporting method returns a `TranslatableString`:
-
-[source,java]
-----
-public TranslatableString validateXxx(T proposed) { /* ... */ }
-----
-
-For example:
-
-[source,java]
-----
-public class Customer {
-    public BigDecimal getCreditLimit() { /* ... */ }
-    public void setCreditLimit(BigDecimal creditLimit) { /* ... */ }
-    public validateCreditLimit(BigDecimal creditLimit) {
-        return creditLimit.compareTo(BigDecimal.ZERO) < 0
-                    ? "Credit limit cannot be negative"
-                    : null;
-    }
-    ...
-}
-----
diff --git a/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/validateAddTo.adoc b/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/validateAddTo.adoc
deleted file mode 100644
index 5dd2c64..0000000
--- a/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/validateAddTo.adoc
+++ /dev/null
@@ -1,45 +0,0 @@
-[[validateAddTo]]
-= `validateAddTo...()` (deprecated)
-
-:Notice: 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 ag [...]
-
-
-
-The `validateAddTo...()` supporting method is called whenever an object is to be added to a collection. Its purpose is to validate the proposed object and possibly veto the change.
-
-
-[NOTE]
-====
-Directly mutable collections are not currently supported by the xref:vw:ROOT:about.adoc[Wicket viewer].
-The suggested workaround is to simply define an action.
-====
-
-
-The signature of the supporting method for a collection with element type `E` is:
-
-[source,java]
-----
-public String validateAddToXxx(E element) { /* ... */ }
-----
-
-where the returned string is the reason the collection modification invocation is vetoed (or `null` if not vetoed).  Apache Isis' xref:userguide:btb:i18n.adoc[i18n support] extends this so that reasons can be internationalized if required.
-
-
-For example:
-
-[source,java]
-----
-public class LibraryMember {
-    public SortedSet<Book> getBorrowed() { /* ... */ }
-    public void setBorrowed(SortedSet<Book> borrowed) { /* ... */ }
-    public String validateAddToBorrowed(Book book) {
-        return book.isReference()? "Reference books cannot be borrowed": null;
-    }
-    public void validateRemoveFromBorrowed(Book book) { /* ... */ }
-    ...
-}
-----
-
-
-See also xref:refguide:applib-methods:prefixes.adoc#addTo[addTo...()] and  xref:refguide:applib-methods:prefixes.adoc#validateRemoveFrom[validateRemoveFrom...()]`
-
diff --git a/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/validateRemoveFrom.adoc b/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/validateRemoveFrom.adoc
deleted file mode 100644
index 9f60082..0000000
--- a/antora/components/refguide/modules/applib-methods/pages/prefixes/deprecated/validateRemoveFrom.adoc
+++ /dev/null
@@ -1,45 +0,0 @@
-[[validateRemoveFrom]]
-= `validateRemoveFrom...()` (deprecated)
-
-:Notice: 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 ag [...]
-
-
-
-The `validateRemoveFrom...()` supporting method is called whenever an object is to be removed from a collection. Its purpose is to validate the proposed object removal and possibly veto the change.
-
-
-[NOTE]
-====
-Directly mutable collections are not currently supported by the xref:vw:ROOT:about.adoc[Wicket viewer].
-The suggested workaround is to simply define an action.
-====
-
-
-The signature of the supporting method for a collection with element type `E` is:
-
-[source,java]
-----
-public String validateRemoveFromXxx(E element) { /* ... */ }
-----
-
-where the returned string is the reason the collection modification invocation is vetoed (or `null` if not vetoed).  Apache Isis' xref:userguide:btb:i18n.adoc[i18n support] extends this so that reasons can be internationalized if required.
-
-
-For example:
-
-[source,java]
-----
-public class LibraryMember {
-    public SortedSet<Book> getBorrowed() { /* ... */ }
-    public void setBorrowed(SortedSet<Book> borrowed) { /* ... */ }
-    public String validateAddToBorrowed(Book book) { /* ... */ }
-    public void validateRemoveFromBorrowed(Book book) {
-        return !book.hasBeenReadBy(this)? "You didn't read this book yet": null;
-    }
-    ...
-}
-----
-
-
-See also xref:refguide:applib-methods:prefixes.adoc#removeFrom[removeFrom...()] and  xref:refguide:applib-methods:prefixes.adoc#validateAddTo[validateAddTo...()]`
-
diff --git a/antora/components/refguide/modules/applib-methods/pages/reserved/deprecated/disable.adoc b/antora/components/refguide/modules/applib-methods/pages/reserved/deprecated/disable.adoc
deleted file mode 100644
index a2bdea7..0000000
--- a/antora/components/refguide/modules/applib-methods/pages/reserved/deprecated/disable.adoc
+++ /dev/null
@@ -1,101 +0,0 @@
-[[disabled]]
-= `disabled()`
-
-:Notice: 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 ag [...]
-
-
-One use case that Apache Isis supports is that of a domain object with a lifecycle whereby at some stage it should become immutable: all its properties/collections should be disabled, and/or its actions become not invokable.
-
-It would be painful to have to write a separate xref:refguide:applib-methods:prefixes.adoc#disable[disable...()] method for each and every member, so instead Isis allows a single `disable...(...)` method to be implemented that is applied to all members.
-
-The signature of the method is:
-
-[source,java]
-----
-public String disabled(Identifier.Type identifierType) { /* ... */ }
-----
-
-where `Identifier.Type` is part of the Isis applib (nested static class of `o.a.i.applib.Identifier`) to distinguish between an interaction with an action, a property or an action.
-
-Note that Apache Isis' xref:userguide:btb:i18n.adoc[i18n support] extends this so that the returned reason can also be internationalized.
-
-For example:
-
-[source,java]
-----
-public String disabled(Identifier.Type identifierType) {
-    return !calendarService.isOfficeHours(clock.today()
-            ? "Cannot modify objects outside of office hours"
-            : null;
-}
-----
-
-See also the similar methods to xref:refguide:applib-methods:prefixes.adoc#hide[hide()] object members en-masse.
-
-
-== Alternatives
-
-An alternative design -- and one that could be easily argued is actually more flexible -- is to leverage domain events with vetoing subscribers.
-
-With this approach we define, for a given domain class, a base `PropertyDomainEvent`, `CollectionDomainEvent` and `ActionDomainEvent`.
-A good pattern is to make these nested static classes.
-For example:
-
-[source,java]
-----
-public class ToDoItem ... {
-    public static abstract class PropertyDomainEvent<T>
-            extends TodoAppDomainModule.PropertyDomainEvent<ToDoItem, T> {
-        ...
-    }
-    ...
-}
-----
-
-where in turn:
-
-[source,java]
-----
-public final class TodoAppDomainModule {
-    private TodoAppDomainModule(){}
-    public abstract static class PropertyDomainEvent<S,T>
-            extends org.apache.isis.applib.events.domain.PropertyDomainEvent<S,T> { }
-    ...
-}
-----
-
-Then, each property/collection/action emits either these base domain events or their own subclass:
-
-[source,java]
-----
-public class ToDoItem  {
-    public static class DescriptionDomainEvent extends PropertyDomainEvent<String> { }
-    @Property( domainEvent = DescriptionDomainEvent.class )
-    public String getDescription() {
-        ...
-     }
-
-    ...
-}
-----
-
-A vetoing subscriber can then subscribe to the domain events and veto access, eg:
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-import org.springframework.stereotype.Service;
-
-@Service
-public class VetoOutOfOfficeHours {
-    @EventListener(ToDoItem.PropertyDomainEvent.class)
-    public void on(ToDoItem.PropertyDomainEvent ev) {
-        if(!calendarService.isOfficeHours(clock.today())) {
-            ev.veto("Cannot modify objects outside of office hours");
-        }
-    }
-}
-----
-
-Obviously there's an awful lot more boilerplate here, but there's also a lot more flexibility.
-
diff --git a/antora/components/refguide/modules/applib-methods/pages/reserved/deprecated/getId.adoc b/antora/components/refguide/modules/applib-methods/pages/reserved/deprecated/getId.adoc
deleted file mode 100644
index 4370e7f..0000000
--- a/antora/components/refguide/modules/applib-methods/pages/reserved/deprecated/getId.adoc
+++ /dev/null
@@ -1,56 +0,0 @@
-[[getId]]
-= `getId()`
-
-:Notice: 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 ag [...]
-
-
-The `getId()` method applies only to domain services, and is used to provide a unique alias for the domain service's class name.
-
-This value is used internally to generate a string representation of an service identity (the `Oid`).
-This can appear in several contexts, including:
-
-* as the value of `Bookmark#getObjectType()` and in the `toString()` value of `Bookmark`
- (see xref:refguide:applib:index/services/bookmark/BookmarkService.adoc[BookmarkService])
-* in the serialization of `OidDto` in the xref:refguide:schema:cmd.adoc[command] and xref:refguide:schema:ixn.adoc[interaction] schemas
-* in the URLs of the xref:vro:ROOT:about.adoc[RestfulObjects viewer]
-* in the URLs of the xref:vw:ROOT:about.adoc[Wicket viewer] (specifically, for bookmarked actions)
-
-
-
-== Example
-
-For example:
-
-[source,java]
-----
-@DomainService
-public class OrderMenu {
-    ...
-    public String getId() { return "orders.OrderMenu"; }
-}
-----
-
-
-
-== Precedence
-
-The rules of precedence are:
-
-1. xref:refguide:applib:index/annotation/DomainService.adoc#objectType[@DomainService#objectType()]
-2. xref:refguide:applib-methods:reserved.adoc#getId[getId()]
-3. The fully qualified class name.
-
-
-[TIP]
-====
-This might be obvious, but to make explicit: we recommend that you always specify an object type for your domain services.
-
-Otherwise, if you refactor your code (change class name or move package), then any externally held references to the OID of the service will break.
-At best this will require a data migration in the database; at worst it could cause external clients accessing data through the xref:vro:ROOT:about.adoc[Restful Objects] viewer to break.
-====
-
-[NOTE]
-====
-If the object type is not unique across all domain classes then the framework will fail-fast and fail to boot.
-An error message will be printed in the log to help you determine which classes have duplicate object tyoes.
-====
diff --git a/antora/components/refguide/modules/applib-methods/pages/reserved/deprecated/hide.adoc b/antora/components/refguide/modules/applib-methods/pages/reserved/deprecated/hide.adoc
deleted file mode 100644
index 5931142..0000000
--- a/antora/components/refguide/modules/applib-methods/pages/reserved/deprecated/hide.adoc
+++ /dev/null
@@ -1,39 +0,0 @@
-[[hide]]
-= `hide()`
-
-:Notice: 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 ag [...]
-
-
-
-One use case that Apache Isis supports is that of a domain object with a lifecycle whereby at some stage some number of the object's members should be hidden.
-For example, for an object that at some stage is logically immutable, we might want to make all its properties/collections unmodifiable and hide all its actions.
-
-While we could write a separate xref:refguide:applib-methods:prefixes.adoc#hide[hide...()] method for each and every action, this could become painful.  So instead Isis allows a single `hide...(...)` method to be implemented that is applied to all members.
-
-The signature of the method is:
-
-[source,java]
-----
-public boolean hide(Identifier.Type identifierType) { /* ... */ }
-----
-
-where `Identifier.Type` is part of the Isis applib (nested static class of `o.a.i.applib.Identifier`) to distinguish between an interaction with an action, a property or an action.
-
-For example:
-
-[source,java]
-----
-public boolean hide(Identifier.Type identifierType) {
-    return identifierType == Identifier.Type.ACTION && isFrozen();
-}
-----
-
-See also the similar method to xref:refguide:applib-methods:prefixes.adoc#disable[disable()] object members en-masse.
-
-
-== Alternatives
-
-An alternative design -- and one that could be easily argued is actually more flexible -- is to leverage domain events with vetoing subscribers.
-
-There is further discussion on this approach in xref:refguide:applib-methods:prefixes.adoc#disable[here].
-
diff --git a/antora/components/refguide/modules/applib-methods/pages/reserved.adoc b/antora/components/refguide/modules/applib-methods/pages/ui-hints.adoc
similarity index 69%
rename from antora/components/refguide/modules/applib-methods/pages/reserved.adoc
rename to antora/components/refguide/modules/applib-methods/pages/ui-hints.adoc
index 35d0fa8..9cf3802 100644
--- a/antora/components/refguide/modules/applib-methods/pages/reserved.adoc
+++ b/antora/components/refguide/modules/applib-methods/pages/ui-hints.adoc
@@ -1,31 +1,31 @@
-= Reserved Methods
+= UI Hint Methods
 
 :Notice: 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 ag [...]
 :page-partial:
 
 
-The table below lists the reserved methods that are recognized as part of Apache Isis' default programming model.
+The table below lists the UI hint methods that are recognized as part of default programming model.
 
-.Reserved Methods
+.UI Hint Methods
 [cols="1m,4a", options="header"]
 |===
 
 |Method
 |Description
 
-|xref:refguide:applib-methods:reserved.adoc#cssClass[cssClass()]
+|xref:refguide:applib-methods:ui-hints.adoc#cssClass[cssClass()]
 |Provides a CSS class for this object instance.
 In conjunction with `static/css/application-css`, can therefore provide custom styling of an object instance wherever it is rendered.
 
-|xref:refguide:applib-methods:reserved.adoc#iconName[iconName()]
+|xref:refguide:applib-methods:ui-hints.adoc#iconName[iconName()]
 |Provides the name of the image to render, usually alongside the title, to represent the object.
 If not provided, then the class name is used to locate an image.
 
-|xref:refguide:applib-methods:reserved.adoc#layout[layout()]
+|xref:refguide:applib-methods:ui-hints.adoc#layout[layout()]
 |Provides an alternative layout to use, if available.
 If null or no such layout, then uses to the default layout.
 
-|xref:refguide:applib-methods:reserved.adoc#title[title()]
+|xref:refguide:applib-methods:ui-hints.adoc#title[title()]
 |Provides a title for the object. +
 
 |===
@@ -33,7 +33,7 @@ If null or no such layout, then uses to the default layout.
 
 
 
-include::reserved/cssClass.adoc[leveloffset=+1]
-include::reserved/iconName.adoc[leveloffset=+1]
-include::reserved/layout.adoc[leveloffset=+1]
-include::reserved/title.adoc[leveloffset=+1]
+include::ui-hints/cssClass.adoc[leveloffset=+1]
+include::ui-hints/iconName.adoc[leveloffset=+1]
+include::ui-hints/layout.adoc[leveloffset=+1]
+include::ui-hints/title.adoc[leveloffset=+1]
diff --git a/antora/components/refguide/modules/applib-methods/pages/reserved/cssClass.adoc b/antora/components/refguide/modules/applib-methods/pages/ui-hints/cssClass.adoc
similarity index 100%
rename from antora/components/refguide/modules/applib-methods/pages/reserved/cssClass.adoc
rename to antora/components/refguide/modules/applib-methods/pages/ui-hints/cssClass.adoc
diff --git a/antora/components/refguide/modules/applib-methods/pages/reserved/iconName.adoc b/antora/components/refguide/modules/applib-methods/pages/ui-hints/iconName.adoc
similarity index 100%
rename from antora/components/refguide/modules/applib-methods/pages/reserved/iconName.adoc
rename to antora/components/refguide/modules/applib-methods/pages/ui-hints/iconName.adoc
diff --git a/antora/components/refguide/modules/applib-methods/pages/reserved/layout.adoc b/antora/components/refguide/modules/applib-methods/pages/ui-hints/layout.adoc
similarity index 100%
rename from antora/components/refguide/modules/applib-methods/pages/reserved/layout.adoc
rename to antora/components/refguide/modules/applib-methods/pages/ui-hints/layout.adoc
diff --git a/antora/components/refguide/modules/applib-methods/pages/reserved/title.adoc b/antora/components/refguide/modules/applib-methods/pages/ui-hints/title.adoc
similarity index 100%
rename from antora/components/refguide/modules/applib-methods/pages/reserved/title.adoc
rename to antora/components/refguide/modules/applib-methods/pages/ui-hints/title.adoc
diff --git a/antora/components/refguide/modules/applib-methods/partials/module-nav.adoc b/antora/components/refguide/modules/applib-methods/partials/module-nav.adoc
index 2c0c652..355efcc 100644
--- a/antora/components/refguide/modules/applib-methods/partials/module-nav.adoc
+++ b/antora/components/refguide/modules/applib-methods/partials/module-nav.adoc
@@ -1,7 +1,7 @@
 
 * xref:refguide:applib-methods:about.adoc[Methods]
-** xref:refguide:applib-methods:prefixes.adoc[Supporting Method Prefixes]
-** xref:refguide:applib-methods:reserved.adoc[Reserved Methods]
+** xref:refguide:applib-methods:prefixes.adoc[Supporting Methods]
+** xref:refguide:applib-methods:ui-hints.adoc[UI Hint Methods]
 ** xref:refguide:applib-methods:lifecycle.adoc[Lifecycle Methods]
 
 
diff --git a/antora/components/relnotes/modules/ROOT/pages/2020/2.0.0-M3/relnotes.adoc b/antora/components/relnotes/modules/ROOT/pages/2020/2.0.0-M3/relnotes.adoc
index 6459148..a93c1ae 100644
--- a/antora/components/relnotes/modules/ROOT/pages/2020/2.0.0-M3/relnotes.adoc
+++ b/antora/components/relnotes/modules/ROOT/pages/2020/2.0.0-M3/relnotes.adoc
@@ -16,7 +16,7 @@ Other new groups have been introduced: "value-types", "subdomains", (bounded con
 This milestone also introduces a number of new features:
 
 * new xref:refguide:applib:index/annotation/Property.adoc#projecting[@Property#projecting] allows view model summaries to be returned as "projections" of underlying entities.
-* new xref:refguide:applib-methods:reserved.adoc#layout[layout()] method (or xref:refguide:applib-classes:events.adoc#ui-event-classes[UI event]) allows a domain object to specify which layout file should be used to render it.
+* new xref:refguide:applib-methods:ui-hints.adoc#layout[layout()] method (or xref:refguide:applib-classes:events.adoc#ui-event-classes[UI event]) allows a domain object to specify which layout file should be used to render it.
 * no longer any need to specify xref:refguide:applib:index/annotation/ParameterLayout.adoc#named[@ParameterLayout#named()]
 * security integration with xref:security:keycloak:about.adoc[Keycloak]
 
diff --git a/antora/components/userguide/modules/fun/pages/object-members/properties.adoc b/antora/components/userguide/modules/fun/pages/object-members/properties.adoc
index 53ad5ad..6f1a19e 100644
--- a/antora/components/userguide/modules/fun/pages/object-members/properties.adoc
+++ b/antora/components/userguide/modules/fun/pages/object-members/properties.adoc
@@ -81,10 +81,6 @@ However, it _isn't_ valid for a domain entity to hold a reference to view model,
 For further details on mapping associations using xref:pjdo:ROOT:about.adoc[JDO/DataNucleus], see their link:http://www.datanucleus.org:15080/products/accessplatform_5_2/jdo/mapping.html[mapping guide].
 ====
 
-== Meta-annotations
-
-WARNING: TODO: v2
-
 [#optional-properties]
 == Optional Properties
 
diff --git a/antora/components/userguide/modules/fun/pages/view-models.adoc b/antora/components/userguide/modules/fun/pages/view-models.adoc
index abe9bc4..74356d2 100644
--- a/antora/components/userguide/modules/fun/pages/view-models.adoc
+++ b/antora/components/userguide/modules/fun/pages/view-models.adoc
@@ -5,23 +5,32 @@
 :page-partial:
 
 
-As described in the xref:userguide:fun:overview.adoc#view-models[overview], view models are domain objects that have behaviour and state, similar to domain entities.
-However, unlike domain entities, their state is _not_ persisted to a database but is instead serialized into its identifier (in effect, its URL).
+As described in the xref:userguide:fun:overview.adoc#view-models[overview], view models are generally domain objects concerned with facilitating or optimising a particular business process.
+As such, they bring together the domain entities involved in that process and provide actions to be performed against or on those domain entities.
+
+Such view models are generally considered to reside in the application layer, and -- unlike domain entities -- their state is _not_ persisted to a database.
+Instead, it is serialized into its identifier (in effect, its URL).
 The framework unpacks this URL to infer/recreate the view model's state with each interaction.
 
-The framework provides two main ways to implement a view model:
 
-* The more powerful/flexible approach is to use JAXB annotations; this allows the state of the object's properties and also its collections.
+The framework provides three ways to implement a view model:
+
+* Annotating the class using JAXB annotations; this allows the state of the object's properties and also its collections.
 +
 The serialized form of these view models is therefore XML, which also enables these view models to act as DTO (useful for various integration scenarios).
 
-* The other approach is to use Apache Isis specific annotations.
+* Using Apache Isis specific annotations.
 +
-While (arguably) these explain the intent of the view model better, they are more restrictive: only the state of the object's properties is serialized -- collections are ignored -- and not every datatype is recognized.
+This is more concise, but less powerful: only the state of the object's properties is serialized -- collections are ignored -- and not every datatype is recognized.
 +
 On the other hand, they are more likely to perform better.
 
-In the sections below we consider JAXB view models both as "regular" view models, and also when using them to act as DTOs.
+* Implementing the xref:refguide:applib:index/ViewModel.adoc[ViewModel] interface.
++
+With this option you take full control of the marshalling and unmarshalling of the object's state to/from a string.
+
+
+These options are discussed in more detail in the sections below.
 
 [[jaxb]]
 == JAXB View Models
@@ -29,6 +38,7 @@ In the sections below we consider JAXB view models both as "regular" view models
 Here's a typical example of a JAXB view model, to allow (certain properties of) two ``Customer``s to be compared:
 
 [source,java]
+.CompareCustomers.java, using JAXB
 ----
 @XmlRootElement(name = "compareCustomers")          // <.>
 @XmlType(
@@ -62,7 +72,7 @@ public class CompareCustomers {
 }
 ----
 
-<.> The JAXB `@XmlRootElement` annotation indicates this is a view model to Apache Isis, which then uses JAXB to serialize the state of the view model between interactions
+<.> The JAXB xref:refguide:applib-ant:XmlRootElement.adoc[@XmlRootElement] annotation indicates this is a view model to Apache Isis, which then uses JAXB to serialize the state of the view model between interactions
 
 <.> Optionally, the properties of the view model can be listed using the `XmlType#propOrder` attribute. +
 This is an all-or-nothing affair: either all properties must be listed, or else the annotation omitted.
@@ -83,6 +93,8 @@ There are limits to the lengths of URLs, however.
 If the URL does exceed limits or contains invalid characters, then provide a custom implementation of xref:refguide:applib:index/services/urlencoding/UrlEncodingService.adoc[UrlEncodingService] to handle the memento string in some other fashion (eg substituting it with a GUID, with the memento cached somehow on the server).
 ====
 
+
+
 [#referencing-domain-entities]
 === Referencing Domain Entities
 
@@ -204,89 +216,140 @@ The full list of adapter classes are:
 If you want use other Joda data types, check out link:http://blog.bdoughan.com/2011/05/jaxb-and-joda-time-dates-and-times.html[this blog post].
 ====
 
+
+
 [[non-jaxb]]
 == Non-JAXB View Models
 
-WARNING: TODO: this content has not yet been updated for v2.0
+Instead of using JAXB to specify a view model, it is also possible to use the xref:refguide:applib:index/annotation/DomainObject.adoc[@DomainObject] with a xref:refguide:applib:index/annotation/DomainObject.adoc#nature[nature] of xref:refguide:applib:index/annotation/Nature.adoc#VIEW_MODEL[VIEW_MODEL].
 
-// TODO: v2: to simplify, think we should only support programmatic API (ViewModel), and JAXB.
-// To support programmatic, reintroduce MementoService.
-// Double check that view models are implicitly cloned even in this fashion.
+This approach is not as powerful as using the JAXB-style of view models, because only the state of properties -- not collections -- is serialized, and moreover only certain data types are recognised.
+On the plus side, it takes less effort.
 
+For example:
 
-Instead of using JAXB to specify a view model, it is also possible to use Apache Isis-specific annotations.
-
-As was explained xref:userguide:fun:view-models.adoc[earlier], the approach is described here is neither as flexible nor as powerful as using the JAXB-style of view models.
-It is however likely to be faster.
+[source,java]
+.CompareCustomers.java, using @DomainObject(nature = VIEW_MODEL)
+----
+@DomainObject(nature = Nature.VIEW_MODEL)           // <.>
+public class CompareCustomers {
 
-While the underlying technique is the same irrespective of use case, the programming model provides various ways of defining a view model so that the original intent is not lost.
-They are:
+    @Property                                       // <.>
+    @Getter @Setter
+    Customer customer1;
 
-.View model programming model
-[cols="1a,4a,2a",options="header"]
-|===
+    @Property                                       // <2>
+    @Getter @Setter
+    Customer customer2;
 
-| Use case
-| Code
-| Description
+    public String getCustomer1Name() {
+        return getCustomer1().getName();
+    }
 
+    public String getCustomer2Name() {
+        return getCustomer2().getName();
+    }
 
-| External entity
-| WARNING: TODO EXTERNAL_ENTITY was removed, this use-case is still valid for consideration, what to do?
-[source,java]
-----
-@DomainObject(nature=EXTERNAL_ENTITY)
-public class CustomerRecordOnSAP {
-    // ...
+    ...
 }
 ----
-|Annotated with xref:refguide:applib:index/annotation/DomainObject.adoc#nature[@DomainObject#nature] and a nature of `EXTERNAL_ENTITY`, with memento derived automatically from the properties of the domain object.
-Collections are ignored, as are any properties annotated as xref:refguide:applib:index/annotation/Property.adoc#snapshot[snapshot=EXCLUDED].
 
-| In-memory entity
-| WARNING: TODO INMEMORY_ENTITY was removed, this use-case is still valid for consideration, what to do?
-[source,java]
-----
-@DomainObject(nature=INMEMORY_ENTITY)
-public class Log4JAppender {
-    // ...
-}
-----
-|As preceding, but using a nature of `INMEMORY_ENTITY`.
+<.> declares the domain object as a view model
+<.> fields must be annotated with `@Property` so that they are part of the metamodel.
++
+Note that they do _not_ need to be visible, however.
+
 
-|Application view model
-|[source,java]
-----
-@DomainObject(nature=VIEW_MODEL)
-public class Dashboard {
-    // ...
-}
-----
-|As preceding, but using a nature of `VIEW_MODEL`.
 
-|Application view model
-|
+[[view-model-interface]]
+== `ViewModel` interface
+
+The most flexible approach to implement a view model is to implement the xref:refguide:applib:index/ViewModel.adoc[ViewModel] interface.
+
+For example:
+
 [source,java]
+.CompareCustomers.java, using ViewModel interface
 ----
-public class ExcelUploadManager implements ViewModel {
-  public String viewModelMemento() {
-    // ...
-  }
-  public void viewModelInit(String memento) {
-    // ...
-  }
+@DomainObject
+public class CompareCustomers implements ViewModel {    // <.>
+
+    public String viewModelMemento() {                  // <.>
+        return getCustomer1().getRef() + ":"
+             + getCustomer2().getRef();
+    }
+    public void viewModelInit(String memento) {         // <.>
+        val ref1 = memento.split[":"](0);
+        customer1 = customerRepository.findByRef(ref1));
+        val ref2 = memento.split[":"](1);
+        customer2 = customerRepository.findByRef(ref2);
+    }
+
+    @Getter @Setter
+    Customer customer1;
+
+    @Getter @Setter
+    Customer customer2;
+
+    public String getCustomer1Name() {
+        return getCustomer1().getName();
+    }
+
+    public String getCustomer2Name() {
+        return getCustomer2().getName();
+    }
+
+    @Inject
+    CustomerRepository customerRepository;
+
+    ...
 }
 ----
-|Implement xref:refguide:applib-cm:classes/super.adoc#AbstractViewModel[ViewModel] interface.
-The memento is as defined by the interface's methods: the programmer has full control (but also full responsibility) for the string memento.
 
-|===
 
 
+== Self-persisting Domain entities
 
+Sometimes we may have domain entities whose persistence is _not_ managed by JDO or JPA mechanism, in other words they take responsibility for their own persistence.
 
-[[view-model-interface]]
-== `ViewModel` interface
+We can characterise these as:
+
+* external entities
++
+For example the application may interact synchronously with state exposed on another system through a REST or SOAP API.
+In this case the entity with your Apache Isis application is a proxy or a facade for the state on the external system
+
+* internal entities
++
+For example the entity might include a data structure that is best persisted in a custom datastore, for example a graph database such as neo4j.
+
+Because such entities are responsible for their own state management, the framework provides the xref:refguide:applib:index/RecreatableDomainObject.adoc[RecreatableDomainObject].
+This is almost identical to xref:refguide:applib:index/ViewModel.adoc[ViewModel]
+
+For example:
+
+[source,java]
+.Gravatar.java
+----
+@DomainObject
+public class Gravatar implements RecreatableDomainObject {  // <.>
+
+    public String __isis_memento() {                        // <.>
+        return this.emailAddress;
+    }
+
+    public void __isis_recreate(String memento) {           // <.>
+        this.emailAddress = memento;
+        GravatarData gd =
+            gravatarService.lookupGravatar(emailAddress);
+        this.image = gd.image();
+    }
+
+    @Inject GravatarService gravatarService;
+}
+----
 
-WARNING: TODO: this content has not yet been updated for v2.0
+<.> implements `RecreatableDomainObject`
+<.> returns a memento of the state of this object.
 
+Of course, you could also implement this as a JAXB view model or any of the other techniques described above.
diff --git a/antora/components/userguide/modules/fun/partials/module-nav.adoc b/antora/components/userguide/modules/fun/partials/module-nav.adoc
index 5b7dcd7..2578c26 100644
--- a/antora/components/userguide/modules/fun/partials/module-nav.adoc
+++ b/antora/components/userguide/modules/fun/partials/module-nav.adoc
@@ -2,7 +2,7 @@
 * xref:userguide:fun:concepts-patterns.adoc[Concepts & Patterns]
 * xref:userguide:fun:overview.adoc[Overview]
 * xref:userguide:fun:domain-entities-and-services.adoc[Domain Entities & Services]
-* xref:userguide:fun:object-members.adoc[Object Members]
+* xref:userguide:fun:object-members.adoc[Properties, Collections & Actions]
 * xref:userguide:fun:ui.adoc[UI Layout & Hints]
 * xref:userguide:fun:business-rules.adoc[Business Rules]
 * xref:userguide:fun:drop-downs-and-defaults.adoc[Drop downs and Defaults]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/IsisModuleApplib.java b/api/applib/src/main/java/org/apache/isis/applib/IsisModuleApplib.java
index b3b3428..3226353 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/IsisModuleApplib.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/IsisModuleApplib.java
@@ -25,8 +25,8 @@ import org.apache.isis.applib.domain.DomainObjectList;
 import org.apache.isis.applib.mixins.dto.Dto_downloadXml;
 import org.apache.isis.applib.mixins.dto.Dto_downloadXsd;
 import org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml;
-import org.apache.isis.applib.mixins.layout.Object_openRestApi;
-import org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel;
+import org.apache.isis.applib.mixins.rest.Object_openRestApi;
+import org.apache.isis.applib.mixins.metamodel.Object_rebuildMetamodel;
 import org.apache.isis.applib.mixins.metamodel.Object_downloadMetamodelXml;
 import org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier;
 import org.apache.isis.applib.mixins.metamodel.Object_objectType;
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXml.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXml.java
index def3f21..426051f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXml.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXml.java
@@ -75,6 +75,10 @@ public class Dto_downloadXml {
         return Clob.of(fileName, CommonMimeType.XML, xmlString);
     }
 
+    /**
+     *
+     * @return
+     */
     public String default0Act() {
         return holder.getClass().getName();
     }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXsd.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXsd.java
index 305bafe..b22d3ad 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXsd.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXsd.java
@@ -117,10 +117,16 @@ public class Dto_downloadXsd {
 
     }
 
+    /**
+     * Defaults to the fully qualified class name of the domain object.
+     */
     public String default0Act() {
         return holder.getClass().getName();
     }
 
+    /**
+     * Defaults to {@link IsisSchemas#IGNORE}
+     */
     public IsisSchemas default1Act() {
         return IsisSchemas.IGNORE;
     }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_downloadLayoutXml.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_downloadLayoutXml.java
index 39b05ab..000d6fa 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_downloadLayoutXml.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_downloadLayoutXml.java
@@ -36,7 +36,8 @@ import lombok.RequiredArgsConstructor;
 import lombok.val;
 
 /**
- * Provides a mixin to download the layout XML for any domain object.
+ * Provides the ability to download the layout XML for any domain
+ * entity or view model.
  *
  * @since 1.x {@index}
  */
@@ -69,10 +70,17 @@ public class Object_downloadLayoutXml {
         return  Clob.of(fileName, CommonMimeType.XML, xmlString);
     }
 
+    /**
+     * Defaults to the (simple) name of the domain object's class, with a <code>.layout</code> suffix
+     */
     public String default0Act() {
         return holder.getClass().getSimpleName() + ".layout";
     }
 
+    /**
+     * Default style is {@link Style#NORMALIZED}.
+     * @return
+     */
     public Style default1Act() {
         return Style.NORMALIZED;
     }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_downloadMetamodelXml.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_downloadMetamodelXml.java
index 65b2d82..e0a61ba 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_downloadMetamodelXml.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_downloadMetamodelXml.java
@@ -41,6 +41,9 @@ import lombok.RequiredArgsConstructor;
 import lombok.val;
 
 /**
+ * Provides the ability to download the framework's internal
+ * metamodel for any domain entity or view model, in XML format.
+ *
  * @since 1.x {@index}
  */
 @Action(
@@ -62,8 +65,6 @@ public class Object_downloadMetamodelXml {
 
     @MemberOrder(name = LayoutMixinConstants.METADATA_LAYOUT_GROUPNAME, sequence = "700.2")
     public Object act(
-
-            // PARAM 0
             @ParameterLayout(
                     named = DtoMixinConstants.FILENAME_PROPERTY_NAME,
                     describedAs = DtoMixinConstants.FILENAME_PROPERTY_DESCRIPTION)
@@ -91,13 +92,15 @@ public class Object_downloadMetamodelXml {
         return Clob.of(fileName, CommonMimeType.XML, xmlString);
     }
 
-    // -- PARAM 0
 
+    /**
+     * Defaults to the simple name of the domain object's class.
+     */
     public String default0Act() {
         return holder.getClass().getSimpleName();
     }
 
-    // -- DEPENDENCIES
+
 
     @Inject MetaModelService metaModelService;
     @Inject JaxbService jaxbService;
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java
index 59dd462..39ecc54 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java
@@ -34,6 +34,20 @@ import lombok.RequiredArgsConstructor;
 import lombok.val;
 
 /**
+ * Contributes a property exposing the internal identifier of the domain
+ * object, typically as specified by {@link DomainObject#objectType()}.
+ *
+ * <p>
+ *     The object identifier is also accessible from the
+ *     {@link org.apache.isis.applib.services.bookmark.Bookmark} of the
+ *     object.
+ * </p>
+ *
+ * @see DomainObject
+ * @see org.apache.isis.applib.mixins.metamodel.Object_objectType
+ * @see org.apache.isis.applib.services.bookmark.Bookmark
+ * @see org.apache.isis.applib.services.bookmark.BookmarkService
+ *
  * @since 1.x {@index}
  */
 @Property
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectType.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectType.java
index d67b983..6b20e64 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectType.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectType.java
@@ -20,6 +20,7 @@ package org.apache.isis.applib.mixins.metamodel;
 
 import javax.inject.Inject;
 
+import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
@@ -31,6 +32,20 @@ import lombok.RequiredArgsConstructor;
 import lombok.val;
 
 /**
+ * Contributes a property exposing the logical object type of the domain
+ * object, typically as specified by {@link DomainObject#objectType()}.
+ *
+ * <p>
+ *     The object type is also accessible from the
+ *     {@link org.apache.isis.applib.services.bookmark.Bookmark} of the
+ *     object.
+ * </p>
+ *
+ * @see DomainObject
+ * @see org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier
+ * @see org.apache.isis.applib.services.bookmark.Bookmark
+ * @see org.apache.isis.applib.services.bookmark.BookmarkService
+ *
  * @since 1.x {@index}
  */
 @Property
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_rebuildMetamodel.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_rebuildMetamodel.java
similarity index 95%
rename from api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_rebuildMetamodel.java
rename to api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_rebuildMetamodel.java
index e95b307..7e8fc56 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_rebuildMetamodel.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_rebuildMetamodel.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.mixins.layout;
+package org.apache.isis.applib.mixins.metamodel;
 
 import javax.inject.Inject;
 
@@ -25,6 +25,7 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.mixins.layout.LayoutMixinConstants;
 import org.apache.isis.applib.services.metamodel.MetaModelService;
 
 import lombok.RequiredArgsConstructor;
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_openRestApi.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/rest/Object_openRestApi.java
similarity index 96%
rename from api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_openRestApi.java
rename to api/applib/src/main/java/org/apache/isis/applib/mixins/rest/Object_openRestApi.java
index 281d9ff..d8b413e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_openRestApi.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/rest/Object_openRestApi.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.mixins.layout;
+package org.apache.isis.applib.mixins.rest;
 
 import java.util.Optional;
 
@@ -27,6 +27,7 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.mixins.layout.LayoutMixinConstants;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.applib.value.LocalResourcePath;
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/system/DomainChangeRecord_openTargetObject.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/system/DomainChangeRecord_openTargetObject.java
index 470947d..cf79447 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/system/DomainChangeRecord_openTargetObject.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/system/DomainChangeRecord_openTargetObject.java
@@ -28,6 +28,8 @@ import org.apache.isis.applib.services.message.MessageService;
 import org.apache.isis.applib.services.metamodel.BeanSort;
 import org.apache.isis.applib.services.metamodel.MetaModelService;
 
+import lombok.RequiredArgsConstructor;
+
 /**
  * Provides the ability to navigate to a domain object from a
  * {@link DomainChangeRecord} which only holds the domain object by way of
@@ -42,12 +44,11 @@ import org.apache.isis.applib.services.metamodel.MetaModelService;
         , associateWithSequence = "1"
 )
 @ActionLayout(named = "Open")
+@SuppressWarnings("CdiManagedBeanInconsistencyInspection")
+@RequiredArgsConstructor
 public class DomainChangeRecord_openTargetObject {
 
     private final DomainChangeRecord domainChangeRecord;
-    public DomainChangeRecord_openTargetObject(DomainChangeRecord domainChangeRecord) {
-        this.domainChangeRecord = domainChangeRecord;
-    }
 
     @Action(semantics = SemanticsOf.SAFE, associateWith = "target", associateWithSequence = "1")
     @ActionLayout(named = "Open")
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridLoaderService.java b/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridLoaderService.java
index 2c4b705..0124224 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridLoaderService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridLoaderService.java
@@ -21,6 +21,7 @@ package org.apache.isis.applib.services.grid;
 import javax.annotation.Nullable;
 
 import org.apache.isis.applib.layout.grid.Grid;
+import org.apache.isis.applib.mixins.metamodel.Object_rebuildMetamodel;
 
 /**
  * Provides the ability to load the XML layout (grid) for a domain class.
@@ -43,7 +44,7 @@ public interface GridLoaderService {
      * To support metamodel invalidation/rebuilding of spec.
      *
      * <p>
-     *     This is called by the {@link org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel} mixin action.
+     *     This is called by the {@link Object_rebuildMetamodel} mixin action.
      * </p>
      */
     void remove(Class<?> domainClass);
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/layout/Style.java b/api/applib/src/main/java/org/apache/isis/applib/services/layout/Style.java
index b295e41..bd807f2 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/layout/Style.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/layout/Style.java
@@ -4,9 +4,13 @@ import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.layout.grid.Grid;
 
 /**
- * Mode of operation when downloading a layout file (while prototyping). It affects the way the file's
+ * Mode of operation when downloading a layout file (while prototyping).
+ *
+ * <p>
+ * It affects the way the file's
  * content is assembled. Once a layout file is in place, its layout data takes precedence over any
  * conflicting layout data from annotations.
+ * </p>
  *
  * @since 1.x {@index}
  */
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityChanges.java b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityChanges.java
index 4f62685..e695e18 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityChanges.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityChanges.java
@@ -23,6 +23,7 @@ import java.util.UUID;
 
 import org.apache.isis.applib.mixins.system.HasInteractionId;
 import org.apache.isis.applib.mixins.security.HasUsername;
+import org.apache.isis.applib.mixins.system.HasTransactionId;
 import org.apache.isis.schema.chg.v2.ChangesDto;
 
 /**
@@ -37,17 +38,28 @@ import org.apache.isis.schema.chg.v2.ChangesDto;
  * @since 2.0 {@index}
  */
 public interface EntityChanges
-        extends HasInteractionId,
+        extends HasTransactionId,
                 HasUsername {
 
     /**
-     * inherited from {@link HasInteractionId}, correlates back to the unique
-     * identifier of the transaction in which these objects were changed.
+     * inherited from {@link HasTransactionId} and transitively from
+     * {@link HasInteractionId}, correlates back to the unique identifier of
+     * the {@link org.apache.isis.applib.services.iactn.Interaction} in which
+     * these objects were changed.
      */
     @Override
     UUID getInteractionId();
 
     /**
+     * inherited from {@link HasTransactionId}, with {@link #getInteractionId()}
+     * it identifies the transaction within the
+     * {@link org.apache.isis.applib.services.iactn.Interaction} in which
+     * these objects were changed.
+     */
+    @Override
+    int getSequence();
+
+    /**
      * Inherited from {@link HasUsername}, is the user that initiated the
      * transaction causing these objects to change.
      * @return
diff --git a/api/applib/src/main/java/org/apache/isis/applib/util/ReasonBuffer.java b/api/applib/src/main/java/org/apache/isis/applib/util/ReasonBuffer.java
index d747fc0..86c8f9c 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/util/ReasonBuffer.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/ReasonBuffer.java
@@ -27,9 +27,15 @@ package org.apache.isis.applib.util;
  * If no reasons are specified {@link #getReason()} will return
  * <code>null</code> , otherwise it will return a {@link String} with all the
  * valid reasons concatenated with a semi-colon separating each one.
+ * </p>
  *
  * <p>
- * An alternative is to use the {@link Reasons} class.
+ * An alternative is to use the (very simple) {@link Reasons} class or the
+ * (much more sophisticated) {@link ReasonBuffer2}.
+ * </p>
+ *
+ * @see Reasons
+ * @see ReasonBuffer2
  *
  * @since 1.x {@index}
  */
diff --git a/api/applib/src/main/java/org/apache/isis/applib/util/ReasonBuffer2.java b/api/applib/src/main/java/org/apache/isis/applib/util/ReasonBuffer2.java
index 9d4fb2d..72481ca 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/util/ReasonBuffer2.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/ReasonBuffer2.java
@@ -26,22 +26,46 @@ import java.util.stream.Collectors;
 import org.apache.isis.commons.internal.collections._Lists;
 
 /**
- * Extension to applib's {@link ReasonBuffer}.
+ * Helper class to construct reason strings, with support for evaluating the
+ * condition.
+ *
+ * <p>
+ * An alternative is to use the (very simple) {@link Reasons} class or the
+ * (a bit more sophisticated) {@link ReasonBuffer}.
+ * </p>
+ *
+ * @see ReasonBuffer
+ * @see Reasons
  *
  * @since 2.0 {@index}
  */
 public class ReasonBuffer2 {
 
-    public static ReasonBuffer2Builder builder() {
-        return new ReasonBuffer2Builder();
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static ReasonBuffer2 forAll() {
+        return ReasonBuffer2.builder().build();
+    }
+
+    public static ReasonBuffer2 forSingle() {
+        return ReasonBuffer2.builder().mode(Mode.SINGLE).build();
+    }
+
+    public static ReasonBuffer2 forAll(final String prefix) {
+        return ReasonBuffer2.builder().prefix(prefix).build();
     }
 
+    public static ReasonBuffer2 forSingle(final String prefix) {
+        return ReasonBuffer2.builder().prefix(prefix).mode(Mode.SINGLE).build();
+    }
 
-    public static interface Condition {
-        public boolean evaluate();
+    public interface Condition {
+        boolean evaluate();
     }
 
-    public static interface LazyReason {
+    public interface LazyReason {
         public String evaluate();
     }
 
@@ -84,21 +108,6 @@ public class ReasonBuffer2 {
 
     private final List<LazyReason> lazyReasons = _Lists.newArrayList();
 
-    public static ReasonBuffer2 forAll() {
-        return ReasonBuffer2.builder().build();
-    }
-
-    public static ReasonBuffer2 forSingle() {
-        return ReasonBuffer2.builder().mode(Mode.SINGLE).build();
-    }
-
-    public static ReasonBuffer2 forAll(final String prefix) {
-        return ReasonBuffer2.builder().prefix(prefix).build();
-    }
-
-    public static ReasonBuffer2 forSingle(final String prefix) {
-        return ReasonBuffer2.builder().prefix(prefix).mode(Mode.SINGLE).build();
-    }
 
     private ReasonBuffer2(final Mode mode, final String prefix) {
         this.prefix = prefix;
@@ -200,19 +209,19 @@ public class ReasonBuffer2 {
         return this;
     }
 
-    public static class ReasonBuffer2Builder {
+    public static class Builder {
         private Mode mode;
         private String prefix;
 
-        ReasonBuffer2Builder() {
+        Builder() {
         }
 
-        public ReasonBuffer2Builder mode(Mode mode) {
+        public Builder mode(Mode mode) {
             this.mode = mode;
             return this;
         }
 
-        public ReasonBuffer2Builder prefix(String prefix) {
+        public Builder prefix(String prefix) {
             this.prefix = prefix;
             return this;
         }
@@ -223,7 +232,7 @@ public class ReasonBuffer2 {
 
         @Override
         public String toString() {
-            return "ReasonBuffer2.ReasonBuffer2Builder(mode=" + this.mode + ", prefix=" + this.prefix + ")";
+            return "ReasonBuffer2.Builder(mode=" + this.mode + ", prefix=" + this.prefix + ")";
         }
     }
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/util/Reasons.java b/api/applib/src/main/java/org/apache/isis/applib/util/Reasons.java
index 731e6d8..99cfa0c 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/util/Reasons.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/Reasons.java
@@ -20,7 +20,7 @@
 package org.apache.isis.applib.util;
 
 /**
- * An alternative to {@link ReasonBuffer}.
+ * Very simple alternative to {@link ReasonBuffer} and {@link ReasonBuffer2}.
  *
  * @since 1.x {@index}
  */
diff --git a/api/applib/src/main/java/org/apache/isis/applib/value/Blob.java b/api/applib/src/main/java/org/apache/isis/applib/value/Blob.java
index 7c4ac48..af77879 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/value/Blob.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/value/Blob.java
@@ -40,6 +40,25 @@ import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
 /**
+ * Represents a binary large object.
+ *
+ * <p>
+ * Conceptually you can consider it as a set of bytes (a picture, a video etc),
+ * though in fact it wraps three pieces of information:
+ * </p>
+ * <ul>
+ *     <li>
+ *         the set of bytes
+ *     </li>
+ *     <li>
+ *         a name
+ *     </li>
+ *     <li>
+ *         a mime type
+ *     </li>
+ * </ul>
+ *
+ * @see Clob
  * @since 1.x {@index}
  */
 @Value(semanticsProviderName =
@@ -50,11 +69,14 @@ public final class Blob implements NamedWithMimeType {
 
     /**
      * Computed for state:
+     *
+     * <p>
      * <pre>
-     *     private final MimeType mimeType;
-     *     private final byte[] bytes;
-     *     private final String name;
+     * private final MimeType mimeType;
+     * private final byte[] bytes;
+     * private final String name;
      * </pre>
+     * </p>
      */
     private static final long serialVersionUID = 5659679806709601263L;
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/value/Clob.java b/api/applib/src/main/java/org/apache/isis/applib/value/Clob.java
index 6a294e8..1e608a0 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/value/Clob.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/value/Clob.java
@@ -34,32 +34,64 @@ import org.apache.isis.applib.jaxb.PrimitiveJaxbAdapters;
 import org.apache.isis.commons.internal.base._Strings;
 
 import lombok.val;
+import lombok.extern.log4j.Log4j2;
 
 /**
+ * Represents a character large object.
+ *
+ * <p>
+ * Conceptually you can consider it as a set of characters (an RTF or XML
+ * document, for example), though in fact it wraps three pieces of information:
+ * </p>
+ * <ul>
+ *     <li>
+ *         the set of characters
+ *     </li>
+ *     <li>
+ *         a name
+ *     </li>
+ *     <li>
+ *         a mime type
+ *     </li>
+ * </ul>
+ *
+ * @see Blob
  * @since 1.x {@index}
  */
 @Value(semanticsProviderName =
         "org.apache.isis.core.metamodel.facets.value.clobs.ClobValueSemanticsProvider")
 @XmlJavaTypeAdapter(Clob.JaxbToStringAdapter.class)   // for JAXB view model support
+@Log4j2
 public final class Clob implements NamedWithMimeType {
 
+    /**
+     * Computed for state:
+     *
+     * <p>
+     * <pre>
+     * private final MimeType mimeType;
+     * private final CharSequence chars;
+     * private final String name;
+     * </pre>
+     * </p>
+     */
     private static final long serialVersionUID = 8694189924062378527L;
 
     private final String name;
     private final MimeType mimeType;
     private final CharSequence chars;
-    
-    
+
+
     // -- FACTORIES
-    
+
     /**
      * Returns a new {@link Clob} of given {@code name}, {@code mimeType} and {@code content}.
      * <p>
-     * {@code name} may or may not include the desired filename extension, it 
-     * is guaranteed, that the resulting {@link Clob} has the appropriate extension 
+     * {@code name} may or may not include the desired filename extension, it
+     * is guaranteed, that the resulting {@link Clob} has the appropriate extension
      * as constraint by the given {@code mimeType}.
      * <p>
-     * For more fine-grained control use one of the {@link Clob} constructors directly. 
+     * For more fine-grained control use one of the {@link Clob} constructors directly.
      * @param name - may or may not include the desired filename extension
      * @param mimeType
      * @param content - chars
@@ -70,7 +102,7 @@ public final class Clob implements NamedWithMimeType {
         val fileName = _Strings.asFileNameWithExtension(name, proposedFileExtension);
         return new Clob(fileName, mimeType.getMimeType(), content);
     }
-    
+
     // --
 
     public Clob(String name, String primaryType, String subType, char[] chars) {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/value/LocalResourcePath.java b/api/applib/src/main/java/org/apache/isis/applib/value/LocalResourcePath.java
index 320a3ca..4f4e519 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/value/LocalResourcePath.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/value/LocalResourcePath.java
@@ -33,15 +33,19 @@ import lombok.Getter;
 import lombok.NonNull;
 
 /**
- * Represents a local resource path, typically a relative path originating at this web-app's 
+ * Represents a local resource path, typically a relative path originating at this web-app's
  * root or context-root.
+ *
  * <p>
  * Action results of type {@link LocalResourcePath} are interpreted as
  * browser/client redirects, if applicable.
+ * </p>
+ *
  * <p>
- * {@link OpenUrlStrategy} gives control on whether the redirect URL should open in the same 
+ * {@link OpenUrlStrategy} gives control on whether the redirect URL should open in the same
  * or a new window/tap.
- * 
+ * </p>
+ *
  * @since 2.0 {@index}
  * @see OpenUrlStrategy
  */
@@ -57,18 +61,18 @@ public final class LocalResourcePath implements Serializable {
     public LocalResourcePath(final @Nullable String path) throws IllegalArgumentException {
         this(path, null);
     }
-    
+
     public LocalResourcePath(
-            final @Nullable String path, 
+            final @Nullable String path,
             final @Nullable OpenUrlStrategy openUrlStrategy) throws IllegalArgumentException {
 
         validate(path); // may throw IllegalArgumentException
 
-        this.path = path != null 
-                ? path 
+        this.path = path != null
+                ? path
                 : "";
-        this.openUrlStrategy = openUrlStrategy != null 
-                ? openUrlStrategy 
+        this.openUrlStrategy = openUrlStrategy != null
+                ? openUrlStrategy
                 : OpenUrlStrategy.NEW_WINDOW; // default
     }
 
@@ -94,7 +98,7 @@ public final class LocalResourcePath implements Serializable {
         }
         return (obj instanceof LocalResourcePath) && isEqualTo((LocalResourcePath) obj);
     }
-    
+
     @Override
     public int hashCode() {
         return path.hashCode();
diff --git a/api/applib/src/main/java/org/apache/isis/applib/value/Markup.java b/api/applib/src/main/java/org/apache/isis/applib/value/Markup.java
index ae49b04..3e979f5 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/value/Markup.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/value/Markup.java
@@ -30,15 +30,18 @@ import org.apache.isis.applib.annotation.Value;
 import org.apache.isis.commons.internal.base._Strings;
 
 /**
- * Immutable value type holding pre-rendered HTML.
+ * Intended to be used as a read-only property, to render arbitrary HTML
+ * markup into the user interface.
+ *
  * @since 2.0 {@index}
  */
-@Value(semanticsProviderName = 
+@Value(semanticsProviderName =
         "org.apache.isis.core.metamodel.facets.value.markup.MarkupValueSemanticsProvider")
 @XmlJavaTypeAdapter(Markup.JaxbToStringAdapter.class)   // for JAXB view model support
 public final class Markup implements HasHtml, Serializable {
 
     private static final long serialVersionUID = 1L;
+
     private final String html;
 
     public Markup() {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/value/Password.java b/api/applib/src/main/java/org/apache/isis/applib/value/Password.java
index 2f9a229..55f84de 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/value/Password.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/value/Password.java
@@ -28,6 +28,8 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import org.apache.isis.applib.annotation.Value;
 
 /**
+ * Represents a password that will not displayed to the UI but can be persisted.
+ *
  * @since 1.x {@index}
  */
 @Value(semanticsProviderName = "org.apache.isis.core.metamodel.facets.value.password.PasswordValueSemanticsProvider")
@@ -35,11 +37,11 @@ import org.apache.isis.applib.annotation.Value;
 // @XmlJavaTypeAdapter(Password.JaxbToStringAdapter.class) // TODO: not automatically registered because not secure enough.  Instead we should set up some sort of mechanism to encrypt.
 @lombok.Value
 public class Password implements Serializable {
-    
+
     private static final long serialVersionUID = 1L;
-    
+
     private static final String STARS = "********************";
-    
+
     private final String password;
 
     // in support of XML un-marshaling
@@ -47,7 +49,7 @@ public class Password implements Serializable {
     private Password() {
         this("");
     }
-    
+
     public Password(String password) {
         this.password = password;
     }
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/confmenu/ConfigurationViewServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/confmenu/ConfigurationViewServiceDefault.java
index 5aad205..43ffcaa 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/confmenu/ConfigurationViewServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/confmenu/ConfigurationViewServiceDefault.java
@@ -33,7 +33,7 @@ import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.applib.mixins.layout.Object_openRestApi;
+import org.apache.isis.applib.mixins.rest.Object_openRestApi;
 import org.apache.isis.applib.services.confview.ConfigurationProperty;
 import org.apache.isis.applib.services.confview.ConfigurationViewService;
 import org.apache.isis.commons.internal.base._Lazy;
@@ -57,9 +57,9 @@ import lombok.extern.log4j.Log4j2;
 @Primary
 @Qualifier("Default")
 @Log4j2
-public class ConfigurationViewServiceDefault 
-implements 
-    ConfigurationViewService, 
+public class ConfigurationViewServiceDefault
+implements
+    ConfigurationViewService,
     Object_openRestApi.RestfulPathProvider {
 
     private final IsisSystemEnvironment systemEnvironment;
@@ -80,23 +80,23 @@ implements
     public Set<ConfigurationProperty> getEnvironmentProperties() {
         return new TreeSet<>(env.get().values());
     }
-    
+
     @Override
     public Set<ConfigurationProperty> getVisibleConfigurationProperties() {
         return new TreeSet<>(config.get().values());
     }
-    
+
     @PostConstruct
     public void postConstruct() {
-       log.info("\n\n" + toStringFormatted()); 
+       log.info("\n\n" + toStringFormatted());
     }
-    
+
     @Override
     public Optional<String> getRestfulPath() {
         return Optional.ofNullable(restEasyConfiguration.getJaxrs().getDefaultPath());
     }
-    
-    // -- DUMP AS STRING 
+
+    // -- DUMP AS STRING
 
     /**
      * to support config dumping, with sensitive data masked out
@@ -104,13 +104,13 @@ implements
     public String toStringFormatted() {
 
         val sb = new StringBuilder();
-        
-        String head = String.format("APACHE ISIS %s (%s) ", 
-                IsisSystemEnvironment.VERSION, 
+
+        String head = String.format("APACHE ISIS %s (%s) ",
+                IsisSystemEnvironment.VERSION,
                 systemEnvironment.getDeploymentType().name());
-        
+
         final Map<String, ConfigurationProperty> map = config.get();
-        
+
         final int fillCount = 46-head.length();
         final int fillLeft = fillCount/2;
         final int fillRight = fillCount-fillLeft;
@@ -132,32 +132,32 @@ implements
     // -- HELPER
 
     private _Lazy<Map<String, ConfigurationProperty>> env = _Lazy.of(this::loadEnvironment);
-    
+
     private Map<String, ConfigurationProperty> loadEnvironment() {
         final Map<String, ConfigurationProperty> map = _Maps.newTreeMap();
         add("Isis Version", IsisSystemEnvironment.VERSION, map);
         add("Deployment Type", systemEnvironment.getDeploymentType().name(), map);
         add("Unit Testing", ""+systemEnvironment.isUnitTesting(), map);
-        
+
         addSystemProperty("java.version", map);
         addSystemProperty("java.vm.name", map);
         addSystemProperty("java.vm.vendor", map);
         addSystemProperty("java.vm.version", map);
         addSystemProperty("java.vm.info", map);
-        
+
         return map;
     }
-    
+
     private _Lazy<Map<String, ConfigurationProperty>> config = _Lazy.of(this::loadConfiguration);
 
     private Map<String, ConfigurationProperty> loadConfiguration() {
         final Map<String, ConfigurationProperty> map = _Maps.newTreeMap();
         if(isShowConfigurationProperties()) {
             configuration.getAsMap().forEach((k, v)->add("isis." + k, v, map));
-            restEasyConfiguration.getAsMap().forEach((k, v)->add("resteasy." + k, v, map));    
+            restEasyConfiguration.getAsMap().forEach((k, v)->add("resteasy." + k, v, map));
         } else {
             // if properties are not visible, show at least the policy
-            add("Configuration Property Visibility Policy", 
+            add("Configuration Property Visibility Policy",
                     getConfigurationPropertyVisibilityPolicy().name(), map);
         }
         return map;
@@ -167,7 +167,7 @@ implements
         value = ValueMaskingUtil.maskIfProtected(key, value);
         map.put(key, new ConfigurationProperty(key, value));
     }
-    
+
     private static void addSystemProperty(String key, Map<String, ConfigurationProperty> map) {
         add(key, System.getProperty(key, "<empty>"), map);
     }
@@ -184,7 +184,7 @@ implements
             return false;
         }
     }
-    
+
     private ConfigurationPropertyVisibilityPolicy getConfigurationPropertyVisibilityPolicy() {
         return Optional.ofNullable(
                 configuration.getCore().getConfig().getConfigurationPropertyVisibilityPolicy())
diff --git a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/SimpleChangingEntities.java b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/SimpleChangingEntities.java
index 30c87d3..76dcbc8 100644
--- a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/SimpleChangingEntities.java
+++ b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/SimpleChangingEntities.java
@@ -34,7 +34,7 @@ import lombok.ToString;
  * Captures which objects were created, updated or deleted in the course of a transaction.
  */
 @ToString
-class SimpleChangingEntities implements EntityChanges, HasTransactionId {
+class SimpleChangingEntities implements EntityChanges {
 
     private UUID transactionUuid;
     private final int sequence;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/ComplexNumberJdoValueSemantics.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/ComplexNumberJdoValueSemantics.java
index 03b2160..93506db 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/ComplexNumberJdoValueSemantics.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/ComplexNumberJdoValueSemantics.java
@@ -33,12 +33,12 @@ import lombok.val;
 public class ComplexNumberJdoValueSemantics
         implements ValueSemanticsProvider<ComplexNumberJdo>{
 
+// end::class[]
 // tag::getParser[]
     @Override
     public Parser<ComplexNumberJdo> getParser() {
 // end::getParser[]
         // ...
-// end::class[]
 // tag::getParser[]
         return new Parser<ComplexNumberJdo>() {
             @Override
@@ -63,7 +63,6 @@ public class ComplexNumberJdoValueSemantics
             }
         };
     }
-// tag::class[]
 // end::getParser[]
 
 // tag::getEncoderDecoder[]
@@ -71,7 +70,6 @@ public class ComplexNumberJdoValueSemantics
     public EncoderDecoder<ComplexNumberJdo> getEncoderDecoder() {
 // end::getEncoderDecoder[]
         // ...
-// end::class[]
 // tag::getEncoderDecoder[]
         return new EncoderDecoder<ComplexNumberJdo>() {
             @Override
@@ -100,7 +98,6 @@ public class ComplexNumberJdoValueSemantics
                 return ComplexNumberJdo.of(re, im);
             }
         };
-// tag::class[]
     }
 // end::getEncoderDecoder[]
 
@@ -109,11 +106,10 @@ public class ComplexNumberJdoValueSemantics
     public DefaultsProvider<ComplexNumberJdo> getDefaultsProvider() {
 // end::getDefaultsProvider[]
         // ...
-// end::class[]
 // tag::getDefaultsProvider[]
         return ()-> ComplexNumberJdo.of(0, 0);
-// tag::class[]
     }
 // end::getDefaultsProvider[]
+// tag::class[]
 }
 // end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/PropertyExecutionPublishingJdo.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/PropertyExecutionPublishingJdo.layout.xml
index ee99c2f..7e698d6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/PropertyExecutionPublishingJdo.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/PropertyExecutionPublishingJdo.layout.xml
@@ -36,7 +36,7 @@
 			</bs3:row>
 			<bs3:row>
 				<bs3:col span="12">
-					<cpt:collection id="interactionExecutions"/>
+					<cpt:collection id="interactions"/>
 				</bs3:col>
 			</bs3:row>
 			<bs3:row>
diff --git a/examples/demo/web/src/main/java/demoapp/web/security/PrototypeActionsVisibilityAdvisor.java b/examples/demo/web/src/main/java/demoapp/web/security/PrototypeActionsVisibilityAdvisor.java
index 37c751e..7bc80e2 100644
--- a/examples/demo/web/src/main/java/demoapp/web/security/PrototypeActionsVisibilityAdvisor.java
+++ b/examples/demo/web/src/main/java/demoapp/web/security/PrototypeActionsVisibilityAdvisor.java
@@ -27,8 +27,8 @@ import org.apache.isis.applib.annotation.DomainServiceLayout;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml;
-import org.apache.isis.applib.mixins.layout.Object_openRestApi;
-import org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel;
+import org.apache.isis.applib.mixins.rest.Object_openRestApi;
+import org.apache.isis.applib.mixins.metamodel.Object_rebuildMetamodel;
 import org.apache.isis.applib.mixins.metamodel.Object_downloadMetamodelXml;
 import org.apache.isis.core.metamodel.inspect.Object_inspectMetamodel;
 
diff --git a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasInteractionId_command.java b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasInteractionId_command.java
index ecdbed2..41ecd61 100644
--- a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasInteractionId_command.java
+++ b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasInteractionId_command.java
@@ -31,6 +31,8 @@ import org.apache.isis.extensions.commandlog.impl.IsisModuleExtCommandLogImpl;
 import org.apache.isis.extensions.commandlog.impl.jdo.CommandJdo;
 import org.apache.isis.extensions.commandlog.impl.jdo.CommandJdoRepository;
 
+import lombok.RequiredArgsConstructor;
+
 
 /**
  * This mixin contributes a <tt>command</tt> action to any (non-command) implementation of
@@ -39,20 +41,18 @@ import org.apache.isis.extensions.commandlog.impl.jdo.CommandJdoRepository;
  *
  * @since 2.0 {@index}
  */
+@SuppressWarnings("CdiManagedBeanInconsistencyInspection")
 @Action(
     semantics = SemanticsOf.SAFE
     , domainEvent = HasInteractionId_command.ActionDomainEvent.class
 )
+@RequiredArgsConstructor
 public class HasInteractionId_command {
 
     public static class ActionDomainEvent
             extends IsisModuleExtCommandLogImpl.ActionDomainEvent<HasInteractionId_command> { }
 
     private final HasInteractionId hasInteractionId;
-    public HasInteractionId_command(final HasInteractionId hasInteractionId) {
-        this.hasInteractionId = hasInteractionId;
-    }
-
 
     @MemberOrder(name="interactionId", sequence="1")
     public CommandJdo act() {
diff --git a/testing/fixtures/adoc/modules/fixtures/pages/fixture-scripts/mocking-the-clock.adoc b/testing/fixtures/adoc/modules/fixtures/pages/fixture-scripts/mocking-the-clock.adoc
index 848821e..05d3187 100644
--- a/testing/fixtures/adoc/modules/fixtures/pages/fixture-scripts/mocking-the-clock.adoc
+++ b/testing/fixtures/adoc/modules/fixtures/pages/fixture-scripts/mocking-the-clock.adoc
@@ -3,6 +3,9 @@
 :Notice: 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 ag [...]
 
 
+WARNING: TODO: v2 - this documentation has not yet been updated.
+In particular, the `Clock` singleton has been removed, the `ClockService` has been refactored.
+
 It's often useful to be able to change the effective time that a test runs.
 The framework itself uses the xref:refguide:applib:index/services/clock/ClockService.adoc[ClockService] to obtain the current time, and applications should also use this domain service for a consistent view of the current time.
 
@@ -19,14 +22,10 @@ The instance registers itself as the singleton and cannot be replaced.
 
 * If running in xref:refguide:config:about.adoc#deployment-types[prototype] mode, though, then the framework (using `FixturesLifecycleService`) will instead instantiate `FixtureClock`.
 This is a read-write clock that will behave as the system clock, unless it is explicitly set using eg, `FixtureClock#setDate(...)` or `FixtureClock#setTime(...)` etc.
-+
-WARNING: TODO: v2 - looking now to remove Clock singleton, so refactor FixtureClock and TickingFixtureClock with alternative implementations of ClockService.
 
 Moreover, the `FixtureClock` singleton can be replaced with another implementation.
 And, it is sometimes useful to replace it using `TickingFixtureClock`, a subclass that is very similar to `FixtureClock` (in that the time can be changed) but which will continue to tick once set.
 
-WARNING: TODO: v2 - this is currently broken; there is nothing that actually instantiates and installs the TickingFixtureClock.
-Will be superceded as a requirement if refactor to provide alternative ClockService implementations instead.
 
 == TickingClockFixture
 
diff --git a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/AnnotationDeclarations.java b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/AnnotationDeclarations.java
index b04b38b..0e394ba 100644
--- a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/AnnotationDeclarations.java
+++ b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/AnnotationDeclarations.java
@@ -20,6 +20,7 @@ package org.apache.isis.tooling.javamodel.ast;
 
 import java.util.stream.Stream;
 
+import com.github.javaparser.ast.Modifier;
 import com.github.javaparser.ast.body.AnnotationDeclaration;
 import com.github.javaparser.ast.body.AnnotationMemberDeclaration;
 import com.github.javaparser.ast.body.FieldDeclaration;
@@ -28,7 +29,7 @@ import com.github.javaparser.ast.body.MethodDeclaration;
 import lombok.NonNull;
 
 public final class AnnotationDeclarations {
-    
+
     // ANNOTATION MEMBER
 
     public static <T> Stream<AnnotationMemberDeclaration> streamAnnotationMemberDeclarations(
@@ -37,12 +38,13 @@ public final class AnnotationDeclarations {
                 .filter(member->member instanceof AnnotationMemberDeclaration)
                 .map(AnnotationMemberDeclaration.class::cast);
     }
-    
+
     // -- FIELDS
 
     public static <T> Stream<FieldDeclaration> streamFieldDeclarations(
             final @NonNull AnnotationDeclaration typeDeclaration) {
-        return typeDeclaration.getFields().stream();
+        return typeDeclaration.getFields()
+                .stream();
     }
 
     // -- METHODS
diff --git a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/FieldDeclarations.java b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/FieldDeclarations.java
index b85eb07..6100898 100644
--- a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/FieldDeclarations.java
+++ b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/ast/FieldDeclarations.java
@@ -20,6 +20,8 @@ package org.apache.isis.tooling.javamodel.ast;
 
 import java.util.stream.Collectors;
 
+import javax.inject.Inject;
+
 import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
 import com.github.javaparser.ast.body.EnumDeclaration;
 import com.github.javaparser.ast.body.FieldDeclaration;
@@ -38,62 +40,60 @@ import lombok.val;
 
 //TODO effective public might require more context
 public final class FieldDeclarations {
-    
+
     private static final PrinterConfiguration printingConf = new DefaultPrinterConfiguration()
             .removeOption(new DefaultConfigurationOption(ConfigOption.PRINT_JAVADOC));
-    
+
     /**
      * Returns given {@link FieldDeclaration} as normal text, without formatting.
      */
     public static String asNormalized(final @NonNull FieldDeclaration fd) {
-        
+
         //suppress initializer printing (that is assignments)
         val clone = fd.clone();
         clone.getVariables().stream()
                 .forEach(vd->vd.setInitializer((Expression)null));
-        
+
         return clone.toString(printingConf).trim();
     }
-    
+
     public static String asNormalizedName(final @NonNull FieldDeclaration fd) {
         return fd.getVariables().stream()
                 .map(VariableDeclarator::getNameAsString)
                 .collect(Collectors.joining(", "))
                 .trim();
     }
-    
+
     public static Can<TypeParameter> getTypeParameters(final @NonNull FieldDeclaration fd) {
         return Can.ofCollection(fd.findAll(TypeParameter.class));
     }
-    
+
     // -- CONTEXT
-    
+
     public static boolean isEffectivePublic(
-            final @NonNull FieldDeclaration fd, 
+            final @NonNull FieldDeclaration fd,
             final @NonNull ClassOrInterfaceDeclaration context) {
-        
+
         if(!ClassOrInterfaceDeclarations.isEffectivePublic(context)) {
             return false;
         }
         if(context.isInterface()) {
             return true;
         }
-        return !fd.isPrivate() 
-                && !fd.isProtected()
-                ;
+        return fd.isPublic();
     }
-    
+
     public static boolean isEffectivePublic(
-            final @NonNull FieldDeclaration fd, 
+            final @NonNull FieldDeclaration fd,
             final @NonNull EnumDeclaration context) {
-        
+
         if(!EnumDeclarations.isEffectivePublic(context)) {
             return false;
         }
-       
-        return !fd.isPrivate() 
+
+        return !fd.isPrivate()
                 && !fd.isProtected()
                 ;
     }
-    
+
 }
diff --git a/viewers/restfulobjects/adoc/modules/ROOT/partials/security/user-registration.adoc b/viewers/restfulobjects/adoc/modules/ROOT/partials/security/user-registration.adoc
index a016cee..b09aaab 100644
--- a/viewers/restfulobjects/adoc/modules/ROOT/partials/security/user-registration.adoc
+++ b/viewers/restfulobjects/adoc/modules/ROOT/partials/security/user-registration.adoc
@@ -3,7 +3,7 @@
 :page-partial:
 
 
-
+WARNING: TODO - v2 : this documentation has not yet been updated.
 
 Unlike the Wicket viewer, the xref:vro:ROOT:about.adoc[Restful Objects viewer] does *not* provide any sort of login page; rather it provides a pluggable authentication strategy, delegated to by the `IsisSessionFilter` filter (set up by the framework's web bootstrapping).
 The authentication strategy is responsible for ensuring that a session is available for the REST resource.
diff --git a/viewers/restfulobjects/adoc/modules/ROOT/partials/security/web-xml.adoc b/viewers/restfulobjects/adoc/modules/ROOT/partials/security/web-xml.adoc
index bb9a2f7..1bfc660 100644
--- a/viewers/restfulobjects/adoc/modules/ROOT/partials/security/web-xml.adoc
+++ b/viewers/restfulobjects/adoc/modules/ROOT/partials/security/web-xml.adoc
@@ -3,6 +3,7 @@
 :page-partial:
 
 
+WARNING: TODO v2 - this documentation has not yet been updated.
 
 
 Unlike the Wicket viewer, the xref:vro:ROOT:about.adoc[Restful Objects viewer] does *not* provide any sort of login page; rather it provides a pluggable authentication strategy, delegated to by the `IsisSessionFilter` filter (set up by the framework's web bootstrapping).
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/mixins/Object_clearHints.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/mixins/Object_clearHints.java
index 06594d3..ce6c86b 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/mixins/Object_clearHints.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/mixins/Object_clearHints.java
@@ -55,7 +55,9 @@ import lombok.val;
  *     any hints that might have been set for the domain object being rendered.
  * </p>
  *
- * @see HintStore {@index}
+ * @see HintStore
+ *
+ * @since 1.x {@index}
  */
 @Action(
         domainEvent = Object_clearHints.ActionDomainEvent.class,
@@ -63,7 +65,7 @@ import lombok.val;
         commandPublishing = Publishing.DISABLED
 )
 @ActionLayout(
-        cssClassFa = "far fa-circle",
+        cssClassFa = "fa-circle",
         position = ActionLayout.Position.PANEL_DROPDOWN
 )
 @RequiredArgsConstructor