You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/09/02 13:57:54 UTC

[isis] 01/02: ISIS-2774: prepares demo and built-in domain objects new required annotations policy

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

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

commit 521a93be75bfb554c40e6bbd6d58403939478320
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Sep 2 15:51:51 2021 +0200

    ISIS-2774: prepares demo and built-in domain objects new required
    annotations policy
---
 .../isis/applib/domain/DomainObjectList.java       |  2 ++
 .../isis/applib/mixins/dto/Dto_downloadXsd.java    |  4 +++
 .../services/appfeatui/ApplicationFeatureMenu.java |  2 ++
 .../appfeatui/ApplicationFeatureViewModel.java     |  8 ++++-
 .../services/appfeatui/ApplicationNamespace.java   |  2 ++
 .../appfeatui/ApplicationTypeProperty.java         |  5 ++--
 .../services/confview/ConfigurationViewmodel.java  |  2 ++
 .../applib/services/layout/LayoutServiceMenu.java  |  5 +++-
 .../applib/services/user/ImpersonateStopMenu.java  |  2 ++
 .../isis/applib/services/userui/UserMenu.java      |  5 ++--
 .../core/metamodel/inspect/model/ActionNode.java   |  2 +-
 .../metamodel/inspect/model/CollectionNode.java    |  2 +-
 .../metamodel/inspect/model/FacetAttrNode.java     |  2 +-
 .../metamodel/inspect/model/FacetGroupNode.java    |  2 +-
 .../core/metamodel/inspect/model/FacetNode.java    |  2 +-
 .../isis/core/metamodel/inspect/model/MMNode.java  | 21 +++++++++----
 .../metamodel/inspect/model/ParameterNode.java     |  2 +-
 .../core/metamodel/inspect/model/PropertyNode.java |  2 +-
 .../core/metamodel/inspect/model/TypeNode.java     |  2 +-
 .../i18n/po/TranslationServicePoMenu.java          |  6 ++++
 .../dom/domain/_interactions/InteractionDtoVm.java |  4 ++-
 .../associateWith/ActionAssociateWithVm.java       | 11 +++++--
 .../ActionAssociateWithVm_updateOtherProperty.java |  5 +++-
 .../child/ActionAssociateWithChildVm.java          |  4 ++-
 ...ommandPublishingEntity_mixinUpdateProperty.java |  5 +++-
 ...gEntity_mixinUpdatePropertyCommandDisabled.java |  3 ++
 ...ngEntity_mixinUpdatePropertyMetaAnnotation.java |  3 ++
 ...ixinUpdatePropertyMetaAnnotationOverridden.java |  3 ++
 .../jdo/ActionCommandPublishingJdo.java            |  9 +++++-
 .../jpa/ActionCommandPublishingJpa.java            |  7 +++++
 .../Action/domainEvent/ActionDomainEventVm.java    |  9 ++++--
 .../ActionDomainEventVm_mixinUpdateText.java       |  3 ++
 ...nDomainEventVm_controlUpdateTextInvocation.java |  6 +++-
 ...cutionPublishingEntity_mixinUpdateProperty.java |  5 +++-
 ...ngEntity_mixinUpdatePropertyMetaAnnotation.java |  5 +++-
 ...ixinUpdatePropertyMetaAnnotationOverridden.java |  5 +++-
 .../jdo/ActionExecutionPublishingJdo.java          |  8 ++++-
 .../jpa/ActionExecutionPublishingJpa.java          |  6 ++++
 .../actions/Action/hidden/ActionHiddenVm.java      | 12 ++++++--
 ...onHiddenVm_mixinUpdateTextAndHiddenNowhere.java |  3 ++
 ...iddenVm_mixinUpdateTextButHiddenEverywhere.java |  3 ++
 ...ddenVm_mixinUpdateTextButHiddenObjectForms.java |  3 ++
 ...ActionHiddenVm_mixinUpdateTextNoAnnotation.java |  3 ++
 .../Action/restrictTo/ActionRestrictToVm.java      | 13 ++++++--
 ...ctionRestrictToVm_mixinUpdateMetaAnnotated.java |  3 ++
 ...ictToVm_mixinUpdateMetaAnnotatedOverridden.java |  3 ++
 ...ActionRestrictToVm_mixinUpdateNoAnnotation.java |  3 ++
 ...ctToVm_mixinUpdateRestrictToNoRestrictions.java |  3 ++
 ...trictToVm_mixinUpdateRestrictToPrototyping.java |  3 ++
 .../Action/semantics/ActionSemanticsVm.java        | 13 +++++++-
 ...ticsVm_mixinIncrementByAmountNonIdempotent.java |  3 ++
 ...tionSemanticsVm_mixinIncrementNoAnnotation.java |  3 ++
 ...ionSemanticsVm_mixinIncrementNonIdempotent.java |  5 ++--
 ...csVm_mixinIncrementNonIdempotentAreYouSure.java |  5 ++--
 ...Vm_mixinSetToValueForPropertyMetaAnnotated.java |  3 ++
 ...tToValueForPropertyMetaAnnotatedOverridden.java |  3 ++
 ...inSetToValueForPropertySemanticsIdempotent.java |  3 ++
 ...ueForPropertySemanticsIdempotentAreYouSure.java |  3 ++
 .../actions/Action/typeOf/ActionTypeOfVm.java      |  7 +++--
 .../Action/typeOf/child/ActionTypeOfChildVm.java   |  9 ++++--
 .../actions/ActionLayout/ActionLayoutMenu.java     | 12 ++++++--
 .../position/ActionLayoutPositionVm.java           |  5 +++-
 .../ActionLayoutPositionVm_annotatedBelow.java     |  5 +++-
 .../ActionLayoutPositionVm_annotatedPanel.java     |  5 +++-
 ...ionLayoutPositionVm_annotatedPanelDropDown.java |  5 +++-
 .../ActionLayoutPositionVm_annotatedRight.java     |  5 +++-
 .../ActionLayoutPositionVm_layoutBelow.java        |  5 +++-
 .../ActionLayoutPositionVm_layoutPanel.java        |  5 +++-
 ...ActionLayoutPositionVm_layoutPanelDropDown.java |  5 +++-
 .../ActionLayoutPositionVm_layoutRight.java        |  5 +++-
 .../promptStyle/ActionLayoutPromptStyleVm.java     |  4 ++-
 .../ActionLayoutPromptStyleVm_annotatedInline.java |  5 +++-
 ...ayoutPromptStyleVm_annotatedInlineAsIfEdit.java |  5 +++-
 .../ActionLayoutPromptStyleVm_annotatedModal.java  |  5 +++-
 ...ActionLayoutPromptStyleVm_annotatedSidebar.java |  5 +++-
 .../ActionLayoutPromptStyleVm_layoutDialog.java    |  5 +++-
 .../ActionLayoutPromptStyleVm_layoutInline.java    |  5 +++-
 ...onLayoutPromptStyleVm_layoutInlineAsIfEdit.java |  5 +++-
 .../domain/actions/progmodel/assoc/DemoItem.java   |  2 ++
 .../domain/actions/progmodel/depargs/DemoItem.java |  2 ++
 .../DependentArgsActionDemo_useAutoComplete.java   |  9 +++---
 .../DependentArgsActionDemo_useChoices.java        |  7 +++--
 .../DependentArgsActionDemo_useDisable.java        |  7 +++--
 .../depargs/DependentArgsActionDemo_useHide.java   |  9 +++---
 .../DependentArgsActionDemo_useIndependent.java    |  7 +++--
 .../domain/actions/progmodel/depargs/Parity.java   |  3 ++
 .../collections/Collection/CollectionMenu.java     | 10 +++----
 .../domainEvent/CollectionDomainEventVm.java       |  2 ++
 .../CollectionDomainEventVm_removeChild.java       | 10 +++++--
 ...ionDomainEventVm_controlChildrenVisibility.java |  6 +++-
 .../CollectionLayout/CollectionLayoutMenu.java     | 14 +++++----
 .../objects/DomainObject/DomainObjectMenu.java     | 10 +++++++
 ...PublishingEntity_updatePropertyUsingAction.java |  9 ++++--
 .../DomainObjectEntityChangePublishingVm.java      |  2 ++
 ...omainObjectEntityChangePublishingVm_create.java | 20 ++++++++-----
 ...omainObjectEntityChangePublishingVm_delete.java | 20 +++++++++----
 ...inObjectEntityChangePublishingVm_updateAll.java | 17 +++++++----
 .../jaxbrefentity/StatefulVmJaxbRefsEntity.java    | 13 ++++++--
 .../viewmodels/usingjaxb/StatefulVmUsingJaxb.java  |  7 ++++-
 .../DomainObjectLayout/DomainObjectLayoutMenu.java | 13 ++++++--
 .../objects/other/embedded/EmbeddedTypeVm.java     |  2 ++
 .../other/embedded/jdo/ComplexNumberJdo.java       | 11 ++++---
 .../other/embedded/jdo/NumberConstantJdo.java      |  7 +++--
 .../jdo/NumberConstantJdo_updateNumber.java        |  5 +++-
 .../other/embedded/jpa/ComplexNumberJpa.java       | 11 ++++---
 .../other/embedded/jpa/NumberConstantJpa.java      |  2 ++
 .../jpa/NumberConstantJpa_updateNumber.java        |  5 +++-
 .../other/mixins/CountHolder_updateCount.java      |  6 +++-
 .../objects/other/mixins/FibonacciNumberVm.java    |  2 ++
 .../dom/domain/objects/other/mixins/MixinVm.java   |  2 ++
 .../jdo/PropertyCommandPublishingJdo.java          |  4 ++-
 .../jpa/PropertyCommandPublishingJpa.java          |  2 ++
 .../domainEvent/PropertyDomainEventVm.java         |  7 +++--
 .../PropertyDomainEventVm_controlTextEditing.java  |  6 +++-
 .../Property/editing/PropertyEditingVm.java        |  5 +++-
 .../jdo/PropertyExecutionPublishingJdo.java        |  4 ++-
 .../jpa/PropertyExecutionPublishingJpa.java        |  2 ++
 .../Property/fileAccept/PropertyFileAcceptVm.java  |  5 +++-
 ...FileAcceptVm_updateClobWithParameterLayout.java |  3 ++
 ...pertyFileAcceptVm_updateWithMetaAnnotation.java |  3 ++
 ...cceptVm_updateWithMetaAnnotationOverridden.java |  3 ++
 ...ertyFileAcceptVm_updateWithParameterLayout.java |  3 ++
 .../Property/hidden/PropertyHiddenVm.java          |  7 +++--
 .../hidden/PropertyHiddenVm_returnsChildren.java   |  5 ++--
 .../hidden/child/PropertyHiddenChildVm.java        |  9 ++++--
 .../Property/maxLength/PropertyMaxLengthVm.java    |  5 +++-
 ...opertyMaxLengthVm_updateWithMetaAnnotation.java |  3 ++
 ...engthVm_updateWithMetaAnnotationOverridden.java |  3 ++
 ...pertyMaxLengthVm_updateWithParameterLayout.java |  3 ++
 .../mustSatisfy/PropertyMustSatisfyVm.java         |  5 +++-
 ...ertyMustSatisfyVm_updateWithMetaAnnotation.java |  3 ++
 ...tisfyVm_updateWithMetaAnnotationOverridden.java |  3 ++
 ...rtyMustSatisfyVm_updateWithParameterLayout.java |  3 ++
 .../optionality/PropertyOptionalityVm.java         |  5 +++-
 ...alityVm_updateMandatoryWithParameterLayout.java |  3 ++
 ...ertyOptionalityVm_updateWithMetaAnnotation.java |  3 ++
 ...alityVm_updateWithMetaAnnotationOverridden.java |  3 ++
 ...rtyOptionalityVm_updateWithParameterLayout.java |  3 ++
 .../Property/projecting/PropertyProjectingVm.java  |  7 +++--
 .../regexPattern/PropertyRegexPatternVm.java       |  5 +++-
 ...rtyRegexPatternVm_updateWithMetaAnnotation.java |  3 ++
 ...tternVm_updateWithMetaAnnotationOverridden.java |  3 ++
 ...tyRegexPatternVm_updateWithParameterLayout.java |  3 ++
 .../Property/snapshot/PropertySnapshotVm.java      |  7 +++--
 .../PropertySnapshotVm_takeXmlSnapshot.java        |  3 ++
 .../cssClass/PropertyLayoutCssClassVm.java         |  5 +++-
 ...yLayoutCssClassVm_updateWithMetaAnnotation.java |  3 ++
 ...ClassVm_updateWithMetaAnnotationOverridden.java |  3 ++
 ...LayoutCssClassVm_updateWithParameterLayout.java |  3 ++
 .../describedAs/PropertyLayoutDescribedAsVm.java   |  5 +++-
 ...youtDescribedAsVm_updateWithMetaAnnotation.java |  3 ++
 ...bedAsVm_updateWithMetaAnnotationOverridden.java |  3 ++
 ...outDescribedAsVm_updateWithParameterLayout.java |  3 ++
 .../hidden/PropertyLayoutHiddenVm.java             |  7 +++--
 .../PropertyLayoutHiddenVm_returnsChildren.java    |  5 ++--
 .../hidden/child/PropertyLayoutHiddenChildVm.java  |  9 ++++--
 .../PropertyLayoutLabelPositionVm.java             |  5 +++-
 ...rtyLayoutLabelPositionVm_updateVariantLeft.java |  3 ++
 ...rtyLayoutLabelPositionVm_updateVariantNone.java |  3 ++
 ...tLabelPositionVm_updateVariantNotSpecified.java |  3 ++
 ...tyLayoutLabelPositionVm_updateVariantRight.java |  3 ++
 ...ertyLayoutLabelPositionVm_updateVariantTop.java |  3 ++
 ...utLabelPositionVm_updateWithMetaAnnotation.java |  3 ++
 ...itionVm_updateWithMetaAnnotationOverridden.java |  3 ++
 ...tLabelPositionVm_updateWithParameterLayout.java |  3 ++
 .../multiLine/PropertyLayoutMultiLineVm.java       |  5 +++-
 ...LayoutMultiLineVm_updateWithMetaAnnotation.java |  3 ++
 ...iLineVm_updateWithMetaAnnotationOverridden.java |  3 ++
 ...ayoutMultiLineVm_updateWithParameterLayout.java |  3 ++
 .../named/PropertyLayoutNamedVm.java               |  2 ++
 ...ertyLayoutNamedVm_updateWithMetaAnnotation.java |  3 ++
 ...NamedVm_updateWithMetaAnnotationOverridden.java |  3 ++
 ...rtyLayoutNamedVm_updateWithParameterLayout.java |  3 ++
 .../PropertyLayout/navigable/FileNodeType.java     |  2 ++
 .../PropertyLayout/navigable/FileNodeVm.java       |  9 ++++--
 .../renderDay/PropertyLayoutRenderDayVm.java       |  7 +++--
 .../PropertyLayoutRenderDayVm_downloadAsXml.java   |  4 +++
 ...enderDayVm_updateEndDateWithMetaAnnotation.java |  3 ++
 ..._updateEndDateWithMetaAnnotationOverridden.java |  3 ++
 ...nderDayVm_updateEndDateWithParameterLayout.java |  3 ++
 .../repainting/PropertyLayoutRepaintingVm.java     |  5 +++-
 .../PropertyLayoutTypicalLengthVm.java             |  5 +++-
 ...utTypicalLengthVm_updateWithMetaAnnotation.java |  3 ++
 ...engthVm_updateWithMetaAnnotationOverridden.java |  3 ++
 ...tTypicalLengthVm_updateWithParameterLayout.java |  3 ++
 .../featured/customui/vm/WhereInTheWorldMenu.java  | 10 +++++--
 .../featured/layout/describedAs/DescribedAsVm.java | 16 +++++-----
 .../demoapp/dom/featured/layout/tabs/TabDemo.java  |  8 +++--
 .../java/demoapp/dom/homepage/DemoHomePage.java    |  2 ++
 .../ErrorReportingServiceDemoVm.java               |  2 ++
 .../eventbusservice/EventBusServiceDemoVm.java     |  2 ++
 .../core/eventbusservice/EventLogEntryJdo.java     |  6 ++--
 .../core/eventbusservice/EventLogEntryJpa.java     |  6 ++--
 .../core/messageservice/MessageServiceDemoVm.java  |  2 ++
 ...pperFactoryEntity_mixinUpdatePropertyAsync.java |  3 ++
 ...pperFactoryEntity_updatePropertyAsyncMixin.java |  3 ++
 .../core/wrapperFactory/jdo/WrapperFactoryJdo.java | 12 ++++++--
 .../core/wrapperFactory/jpa/WrapperFactoryJpa.java |  5 ++++
 .../xmlSnapshotService/XmlSnapshotParentVm.java    | 11 ++++---
 .../XmlSnapshotParentVm_takeXmlSnapshot.java       |  7 +++--
 .../extensions/secman/apptenancy/AppTenancyVm.java |  9 ++++--
 .../secman/apptenancy/jdo/TenantedJdo.java         |  7 +++--
 .../secman/apptenancy/jpa/TenantedJpa.java         |  2 ++
 .../demoapp/dom/types/isis/blobs/IsisBlobs.java    |  6 +++-
 ...sBlobHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 .../IsisBlobHolder_updateReadOnlyProperty.java     |  6 +++-
 ...obHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../dom/types/isis/blobs/vm/IsisBlobVm.java        |  9 ++++--
 .../demoapp/dom/types/isis/clobs/IsisClobs.java    |  6 +++-
 ...sClobHolder_updateReadOnlyOptionalProperty.java |  3 ++
 .../IsisClobHolder_updateReadOnlyProperty.java     |  6 +++-
 ...obHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../localresourcepaths/IsisLocalResourcePaths.java |  7 ++++-
 ...ePathHolder_updateReadOnlyOptionalProperty.java |  5 +++-
 ...lResourcePathHolder_updateReadOnlyProperty.java |  6 +++-
 ...thHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../dom/types/isis/markups/IsisMarkups.java        |  5 ++++
 ...arkupHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 .../IsisMarkupHolder_updateReadOnlyProperty.java   |  6 +++-
 ...upHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../dom/types/isis/markups/jdo/IsisMarkupJdo.java  |  8 +++--
 .../dom/types/isis/markups/jpa/IsisMarkupJpa.java  |  2 ++
 .../dom/types/isis/markups/vm/IsisMarkupVm.java    |  9 ++++--
 .../dom/types/isis/passwords/IsisPasswords.java    |  7 ++++-
 ...swordHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 .../IsisPasswordHolder_updateReadOnlyProperty.java |  6 +++-
 ...rdHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../dom/types/isisext/asciidocs/IsisAsciiDocs.java |  5 ++++
 ...iiDocHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 .../IsisAsciiDocHolder_updateReadOnlyProperty.java |  6 +++-
 ...ocHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../isisext/asciidocs/jdo/IsisAsciiDocJdo.java     | 10 +++++--
 .../isisext/asciidocs/jpa/IsisAsciiDocJpa.java     |  2 ++
 .../types/isisext/asciidocs/vm/IsisAsciiDocVm.java |  9 ++++--
 .../dom/types/isisext/markdowns/IsisMarkdowns.java |  5 ++++
 ...kdownHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 .../IsisMarkdownHolder_updateReadOnlyProperty.java |  6 +++-
 ...wnHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../isisext/markdowns/jdo/IsisMarkdownJdo.java     |  7 +++--
 .../isisext/markdowns/jpa/IsisMarkdownJpa.java     |  2 ++
 .../types/isisext/markdowns/vm/IsisMarkdownVm.java |  9 ++++--
 .../demoapp/dom/types/isisext/sse/DemoTask.java    |  4 ++-
 .../javaawt/images/JavaAwtBufferedImages.java      |  7 ++++-
 ...ImageHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 ...BufferedImageHolder_updateReadOnlyProperty.java |  6 +++-
 ...geHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../images/jdo/JavaAwtBufferedImageJdo.java        |  7 +++--
 .../images/jpa/JavaAwtBufferedImageJpa.java        |  2 ++
 .../javaawt/images/vm/JavaAwtBufferedImageVm.java  |  7 +++--
 .../types/javalang/booleans/WrapperBooleans.java   | 13 ++++----
 ...oleanHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 ...rapperBooleanHolder_updateReadOnlyProperty.java |  6 +++-
 ...anHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../dom/types/javalang/bytes/WrapperBytes.java     |  7 ++++-
 ...rByteHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 .../WrapperByteHolder_updateReadOnlyProperty.java  |  6 +++-
 ...teHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../javalang/characters/WrapperCharacters.java     |  6 +++-
 ...acterHolder_updateReadOnlyOptionalProperty.java |  5 +++-
 ...pperCharacterHolder_updateReadOnlyProperty.java |  5 +++-
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  9 ++++--
 .../dom/types/javalang/doubles/WrapperDoubles.java |  6 +++-
 ...oubleHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 ...WrapperDoubleHolder_updateReadOnlyProperty.java |  6 +++-
 ...leHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../dom/types/javalang/floats/WrapperFloats.java   |  6 +++-
 ...FloatHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 .../WrapperFloatHolder_updateReadOnlyProperty.java |  6 +++-
 ...atHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../types/javalang/integers/WrapperIntegers.java   |  6 +++-
 ...tegerHolder_updateReadOnlyOptionalProperty.java |  5 +++-
 ...rapperIntegerHolder_updateReadOnlyProperty.java |  6 +++-
 ...erHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../dom/types/javalang/longs/WrapperLongs.java     |  6 +++-
 ...rLongHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 .../WrapperLongHolder_updateReadOnlyProperty.java  |  6 +++-
 ...ngHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../dom/types/javalang/shorts/WrapperShorts.java   |  6 +++-
 ...ShortHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 .../WrapperShortHolder_updateReadOnlyProperty.java |  6 +++-
 ...rtHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../types/javalang/strings/JavaLangStrings.java    |  6 +++-
 ...tringHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 ...avaLangStringHolder_updateReadOnlyProperty.java |  6 +++-
 ...ngHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../dom/types/javalang/voids/JavaLangVoids.java    |  6 ++--
 .../javamath/bigdecimals/JavaMathBigDecimals.java  |  6 +++-
 ...cimalHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 ...athBigDecimalHolder_updateReadOnlyProperty.java |  6 +++-
 ...alHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../javamath/bigintegers/JavaMathBigIntegers.java  |  6 +++-
 ...tegerHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 ...athBigIntegerHolder_updateReadOnlyProperty.java |  6 +++-
 ...erHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../dom/types/javanet/urls/JavaNetUrls.java        |  6 +++-
 ...etUrlHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 .../JavaNetUrlHolder_updateReadOnlyProperty.java   |  6 +++-
 ...rlHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../types/javasql/javasqldate/JavaSqlDates.java    |  6 +++-
 ...lDateHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 .../JavaSqlDateHolder_updateReadOnlyProperty.java  |  6 +++-
 ...teHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../javasqltimestamp/JavaSqlTimestamps.java        |  6 +++-
 ...stampHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 ...aSqlTimestampHolder_updateReadOnlyProperty.java |  6 +++-
 ...mpHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../javatimelocaldate/JavaTimeLocalDates.java      |  6 +++-
 ...lDateHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 ...TimeLocalDateHolder_updateReadOnlyProperty.java |  6 +++-
 ...teHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../JavaTimeLocalDateTimes.java                    |  6 +++-
 ...eTimeHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 ...LocalDateTimeHolder_updateReadOnlyProperty.java |  6 +++-
 ...meHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../JavaTimeOffsetDateTimes.java                   |  6 +++-
 ...eTimeHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 ...ffsetDateTimeHolder_updateReadOnlyProperty.java |  6 +++-
 ...meHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../javatimeoffsettime/JavaTimeOffsetTimes.java    |  6 +++-
 ...tTimeHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 ...imeOffsetTimeHolder_updateReadOnlyProperty.java |  6 +++-
 ...meHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../JavaTimeZonedDateTimes.java                    |  6 +++-
 ...eTimeHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 ...ZonedDateTimeHolder_updateReadOnlyProperty.java |  6 +++-
 ...meHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../types/javautil/javautildate/JavaUtilDates.java |  6 +++-
 ...lDateHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 .../JavaUtilDateHolder_updateReadOnlyProperty.java |  6 +++-
 ...teHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../dom/types/javautil/uuids/JavaUtilUuids.java    |  6 +++-
 ...lUuidHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 .../JavaUtilUuidHolder_updateReadOnlyProperty.java |  6 +++-
 ...idHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../types/jodatime/jodadatetime/JodaDateTimes.java |  6 +++-
 ...eTimeHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 .../JodaDateTimeHolder_updateReadOnlyProperty.java |  6 +++-
 ...meHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../jodatime/jodalocaldate/JodaLocalDates.java     |  6 +++-
 ...lDateHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 ...JodaLocalDateHolder_updateReadOnlyProperty.java |  6 +++-
 ...teHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../jodalocaldatetime/JodaLocalDateTimes.java      |  6 +++-
 ...eTimeHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 ...LocalDateTimeHolder_updateReadOnlyProperty.java |  6 +++-
 ...meHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../jodatime/jodalocaltime/JodaLocalTimes.java     |  6 +++-
 ...lTimeHolder_updateReadOnlyOptionalProperty.java |  6 +++-
 ...JodaLocalTimeHolder_updateReadOnlyProperty.java |  6 +++-
 ...meHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../primitive/booleans/PrimitiveBooleans.java      |  6 +++-
 ...mitiveBooleanHolder_updateReadOnlyProperty.java |  6 +++-
 ...anHolder_updateReadOnlyPropertyWithChoices.java | 11 +++++--
 .../dom/types/primitive/bytes/PrimitiveBytes.java  |  6 +++-
 ...PrimitiveByteHolder_updateReadOnlyProperty.java |  6 +++-
 ...teHolder_updateReadOnlyPropertyWithChoices.java | 13 ++++++--
 .../dom/types/primitive/chars/PrimitiveChars.java  |  6 +++-
 ...PrimitiveCharHolder_updateReadOnlyProperty.java |  6 +++-
 ...arHolder_updateReadOnlyPropertyWithChoices.java | 13 ++++++--
 .../types/primitive/doubles/PrimitiveDoubles.java  |  6 +++-
 ...imitiveDoubleHolder_updateReadOnlyProperty.java |  6 +++-
 ...leHolder_updateReadOnlyPropertyWithChoices.java | 13 ++++++--
 .../types/primitive/floats/PrimitiveFloats.java    |  6 +++-
 ...rimitiveFloatHolder_updateReadOnlyProperty.java |  6 +++-
 ...atHolder_updateReadOnlyPropertyWithChoices.java | 13 ++++++--
 .../dom/types/primitive/ints/PrimitiveInts.java    |  6 +++-
 .../PrimitiveIntHolder_updateReadOnlyProperty.java |  6 +++-
 ...ntHolder_updateReadOnlyPropertyWithChoices.java | 13 ++++++--
 .../dom/types/primitive/longs/PrimitiveLongs.java  |  6 +++-
 ...PrimitiveLongHolder_updateReadOnlyProperty.java |  6 +++-
 ...ngHolder_updateReadOnlyPropertyWithChoices.java | 13 ++++++--
 .../types/primitive/shorts/PrimitiveShorts.java    |  6 +++-
 ...rimitiveShortHolder_updateReadOnlyProperty.java |  6 +++-
 ...rtHolder_updateReadOnlyPropertyWithChoices.java | 13 ++++++--
 .../PrototypeActionsVisibilityAdvisor.java         | 17 ++++++-----
 .../commandlog/jdo/entities/CommandJdo.java        | 24 ++++++++++-----
 .../commandlog/jdo/ui/CommandServiceMenu.java      |  8 ++++-
 .../commandlog/jpa/entities/CommandJpa.java        | 16 +++++-----
 .../feature/api/ApplicationFeatureChoices.java     | 12 ++++----
 .../app/ApplicationOrphanedPermissionManager.java  |  3 +-
 .../permission/dom/ApplicationPermission.java      |  4 ++-
 .../permission/menu/ApplicationPermissionMenu.java |  2 ++
 .../secman/applib/role/dom/ApplicationRole.java    |  4 ++-
 .../dom/mixins/ApplicationRole_updateName.java     |  3 ++
 .../applib/role/menu/ApplicationRoleMenu.java      |  2 ++
 .../applib/tenancy/dom/ApplicationTenancy.java     |  4 ++-
 .../tenancy/menu/ApplicationTenancyMenu.java       |  2 ++
 .../applib/user/app/ApplicationUserManager.java    |  2 ++
 .../secman/applib/user/dom/ApplicationUser.java    | 10 +++++--
 .../dom/mixins/perms/UserPermissionViewModel.java  |  7 ++++-
 .../applib/user/menu/ApplicationUserMenu.java      |  2 ++
 .../secman/applib/user/menu/MeService.java         |  4 ++-
 .../demomodule/dom/PdfJsDemoObjectWithBlob.java    |  8 ++---
 .../mixins/Persistable_downloadJdoMetadata.java    |  3 ++
 .../BulkUpdateManagerForDemoToDoItem.java          | 12 ++++++--
 .../demoapp/todomodule/dom/ExcelDemoToDoItem.java  |  7 ++++-
 .../demomodule/dom/FakeDataDemoObjectWithAll.java  | 35 ++++++++++++++++++++--
 .../applib/fixturescripts/FixtureScripts.java      | 15 +++++-----
 .../h2console/ui/services/H2ManagerMenu.java       |  3 +-
 .../valuetypes/asciidoc/applib/value/AsciiDoc.java |  8 ++---
 .../valuetypes/markdown/applib/value/Markdown.java |  4 ---
 .../service/swagger/SwaggerServiceMenu.java        |  9 ++++--
 402 files changed, 2019 insertions(+), 506 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/isis/applib/domain/DomainObjectList.java b/api/applib/src/main/java/org/apache/isis/applib/domain/DomainObjectList.java
index db66485..64be83f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/domain/DomainObjectList.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/domain/DomainObjectList.java
@@ -35,6 +35,7 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.jaxb.PersistentEntitiesAdapter;
 
 import lombok.Getter;
@@ -113,6 +114,7 @@ public class DomainObjectList {
 
     // -- title
     private String title;
+    @Title
     public String title() {
         return title;
     }
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 850a0a1..00a2af0 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
@@ -24,6 +24,7 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -78,6 +79,7 @@ public class Dto_downloadXsd {
      * common Apache Isis schemas; useful if there is only one other XSD schema
      * referenced by the DTO.
      */
+    @MemberSupport
     public Object act(
 
             @ParameterLayout(
@@ -119,6 +121,7 @@ public class Dto_downloadXsd {
     /**
      * Defaults to the fully qualified class name of the domain object.
      */
+    @MemberSupport
     public String default0Act() {
         return holder.getClass().getName();
     }
@@ -126,6 +129,7 @@ public class Dto_downloadXsd {
     /**
      * Defaults to {@link IsisSchemas#IGNORE}
      */
+    @MemberSupport
     public IsisSchemas default1Act() {
         return IsisSchemas.IGNORE;
     }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationFeatureMenu.java b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationFeatureMenu.java
index a02efcb..754b969 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationFeatureMenu.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationFeatureMenu.java
@@ -29,6 +29,7 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.DomainServiceLayout;
 import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.ObjectSupport;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -66,6 +67,7 @@ public class ApplicationFeatureMenu {
 
     // -- ICON NAME
 
+    @ObjectSupport
     public String iconName() {
         return "applicationFeature";
     }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationFeatureViewModel.java b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationFeatureViewModel.java
index 5628c41..97477c6 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationFeatureViewModel.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationFeatureViewModel.java
@@ -31,12 +31,15 @@ import javax.inject.Inject;
 import org.apache.isis.applib.IsisModuleApplib;
 import org.apache.isis.applib.ViewModel;
 import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Navigable;
+import org.apache.isis.applib.annotation.ObjectSupport;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.appfeat.ApplicationFeature;
 import org.apache.isis.applib.services.appfeat.ApplicationFeatureId;
@@ -129,9 +132,11 @@ public abstract class ApplicationFeatureViewModel implements ViewModel {
      * having a title() method (rather than using @Title annotation) is necessary as a workaround to be able to use
      * wrapperFactory#unwrap(...) method, which is otherwise broken in Isis 1.6.0
      */
+    @Title
     public String title() {
         return getFullyQualifiedName();
     }
+    @ObjectSupport
     public String iconName() {
         return "applicationFeature";
     }
@@ -245,6 +250,7 @@ public abstract class ApplicationFeatureViewModel implements ViewModel {
     public String getTypeSimpleName() {
         return getFeatureId().getTypeSimpleName();
     }
+    @MemberSupport
     public boolean hideTypeSimpleName() {
         return getSort().isNamespace();
     }
@@ -286,7 +292,7 @@ public abstract class ApplicationFeatureViewModel implements ViewModel {
     public String getMemberName() {
         return getFeatureId().getLogicalMemberName();
     }
-
+    @MemberSupport
     public boolean hideMemberName() {
         return !getSort().isMember();
     }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationNamespace.java b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationNamespace.java
index 72fd8b7..ea1eec0 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationNamespace.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationNamespace.java
@@ -30,6 +30,7 @@ import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.CollectionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.DomainObjectLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.services.appfeat.ApplicationFeatureId;
 import org.apache.isis.applib.services.appfeat.ApplicationFeatureSort;
 
@@ -75,6 +76,7 @@ public class ApplicationNamespace extends ApplicationFeatureViewModel {
         final SortedSet<ApplicationFeatureId> contents = getFeature().getContents();
         return asViewModels(contents, ApplicationFeatureViewModel.class);
     }
+    @MemberSupport
     public boolean hideContents() {
         return getSort() != ApplicationFeatureSort.NAMESPACE;
     }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationTypeProperty.java b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationTypeProperty.java
index 147f23d..7574ed4 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationTypeProperty.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/appfeatui/ApplicationTypeProperty.java
@@ -26,6 +26,7 @@ import java.lang.annotation.Target;
 import org.apache.isis.applib.IsisModuleApplib;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.DomainObjectLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
@@ -131,7 +132,7 @@ public class ApplicationTypeProperty extends ApplicationTypeMember {
                 ? maxLen.getAsInt()
                 : null; // unexpected code path, as this case should be hidden
     }
-
+    @MemberSupport
     public boolean hideMaxLength() {
         if(!getFeature().getPropertyMaxLength().isPresent()) {
             return true;
@@ -164,7 +165,7 @@ public class ApplicationTypeProperty extends ApplicationTypeMember {
                 ? maxLen.getAsInt()
                 : null; // unexpected code path, as this case should be hidden
     }
-
+    @MemberSupport
     public boolean hideTypicalLength() {
         if(!getFeature().getPropertyTypicalLength().isPresent()) {
             return true;
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationViewmodel.java b/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationViewmodel.java
index 4639f2a..7fa4d2b 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationViewmodel.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationViewmodel.java
@@ -27,6 +27,7 @@ import org.apache.isis.applib.IsisModuleApplib;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Title;
 
 @DomainObject(
         nature = Nature.VIEW_MODEL,
@@ -38,6 +39,7 @@ public class ConfigurationViewmodel {
     @Autowired(required = false)
     private ConfigurationViewService configurationService;
 
+    @Title
     public String title() {
         return "Configuration";
     }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java b/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java
index fd94f8e..ee56a91 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.DomainServiceLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.annotation.RestrictTo;
@@ -85,10 +86,10 @@ public class LayoutServiceMenu {
 
         final byte[] zipBytes = layoutService.toZip(style);
         return new Blob(fileName, mimeTypeApplicationZip, zipBytes);
-
         // ...
     }
 
+    @MemberSupport
     public Style default0DownloadLayouts() {
         return Style.NORMALIZED;
     }
@@ -115,10 +116,12 @@ public class LayoutServiceMenu {
         // ...
     }
 
+    @MemberSupport
     public String default0DownloadMenuBarsLayout() {
         return "menubars.layout.xml";
     }
 
+    @MemberSupport
     public MenuBarsService.Type default1DownloadMenuBarsLayout() {
         return MenuBarsService.Type.DEFAULT;
     }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/user/ImpersonateStopMenu.java b/api/applib/src/main/java/org/apache/isis/applib/services/user/ImpersonateStopMenu.java
index 21e74ef..3aa69e0 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/user/ImpersonateStopMenu.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/user/ImpersonateStopMenu.java
@@ -25,6 +25,7 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.DomainServiceLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.annotation.Publishing;
@@ -85,6 +86,7 @@ public class ImpersonateStopMenu {
         this.userService.stopImpersonating();
         this.messageService.informUser("No longer impersonating another user");
     }
+    @MemberSupport
     public boolean hideStopImpersonating() {
         return ! isImpersonating();
     }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/userui/UserMenu.java b/api/applib/src/main/java/org/apache/isis/applib/services/userui/UserMenu.java
index 09d4cfe..8727cc1 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/userui/UserMenu.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/userui/UserMenu.java
@@ -25,6 +25,7 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.DomainServiceLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -68,12 +69,10 @@ public class UserMenu {
     public UserMemento me() {
         return userService.currentUser().orElse(null);
     }
-
+    @MemberSupport
     public String disableMe() {
         return userService.currentUser().isPresent() ? null : "Current user not available";
     }
 
 
-
-
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/ActionNode.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/ActionNode.java
index 8417326..f455d4e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/ActionNode.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/ActionNode.java
@@ -56,7 +56,7 @@ public class ActionNode extends MMNode {
     }
 
     @Override
-    public String iconName() {
+    protected String iconSuffix() {
         return "";
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/CollectionNode.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/CollectionNode.java
index aead7bf..761a184 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/CollectionNode.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/CollectionNode.java
@@ -56,7 +56,7 @@ public class CollectionNode extends MMNode {
     }
 
     @Override
-    public String iconName() {
+    protected String iconSuffix() {
         return "";
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/FacetAttrNode.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/FacetAttrNode.java
index eb89d53..32aa0a2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/FacetAttrNode.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/FacetAttrNode.java
@@ -56,7 +56,7 @@ public class FacetAttrNode extends MMNode {
     }
 
     @Override
-    public String iconName() {
+    protected String iconSuffix() {
         return "";
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/FacetGroupNode.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/FacetGroupNode.java
index 1f63a78..060a05d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/FacetGroupNode.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/FacetGroupNode.java
@@ -58,7 +58,7 @@ public class FacetGroupNode extends MMNode {
     }
 
     @Override
-    public String iconName() {
+    protected String iconSuffix() {
         return "";
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/FacetNode.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/FacetNode.java
index fb51d04..abeb7b3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/FacetNode.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/FacetNode.java
@@ -64,7 +64,7 @@ public class FacetNode extends MMNode {
     }
 
     @Override
-    public String iconName() {
+    protected String iconSuffix() {
         return "";
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/MMNode.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/MMNode.java
index 2302895..e109725 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/MMNode.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/MMNode.java
@@ -28,7 +28,9 @@ import javax.xml.bind.annotation.XmlSeeAlso;
 
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.Navigable;
+import org.apache.isis.applib.annotation.ObjectSupport;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.schema.metamodel.v2.DomainClassDto;
@@ -62,16 +64,23 @@ public abstract class MMNode {
     protected abstract Stream<MMNode> streamChildNodes();
 
     protected String title;
+
+    @Title
     public final String title() {
         return title==null
                 ? title = createTitle()
                 : title;
     }
-    public abstract String createTitle();
+    protected abstract String createTitle();
+
+    protected abstract String iconSuffix();
 
-    public abstract String iconName();
+    @ObjectSupport
+    public final String iconName() {
+        return iconSuffix();
+    }
 
-    protected String typeToString(Object type) {
+    protected String typeToString(final Object type) {
         if(type instanceof DomainClassDto) {
             return typeToString((DomainClassDto) type);
         }
@@ -80,13 +89,13 @@ public abstract class MMNode {
                 : "void";
     }
 
-    protected String typeToString(DomainClassDto type) {
+    protected String typeToString(final DomainClassDto type) {
         return type!=null
                 ? abbreviate(type.getId())
                 : "void";
     }
 
-    protected String abbreviate(String input) {
+    protected String abbreviate(final String input) {
         return (""+input)
                 .replace("org.apache.isis.core.metamodel.facets.", "».c.m.f.")
                 .replace("org.apache.isis.core.metamodel.", "».c.m.")
@@ -96,7 +105,7 @@ public abstract class MMNode {
                 .replace("java.lang.", "");
     }
 
-    protected String simpleName(String name) {
+    protected String simpleName(final String name) {
         return _Strings.splitThenStream(""+name, ".")
         .reduce((first, second) -> second) // get the last
         .orElse("null");
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/ParameterNode.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/ParameterNode.java
index 9cae6b4..3715d42 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/ParameterNode.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/ParameterNode.java
@@ -56,7 +56,7 @@ public class ParameterNode extends MMNode {
     }
 
     @Override
-    public String iconName() {
+    protected String iconSuffix() {
         return "";
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/PropertyNode.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/PropertyNode.java
index ef8ce0a..629a88a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/PropertyNode.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/PropertyNode.java
@@ -55,7 +55,7 @@ public class PropertyNode extends MMNode {
     }
 
     @Override
-    public String iconName() {
+    protected String iconSuffix() {
         return "";
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/TypeNode.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/TypeNode.java
index 49e9123..cbe53d4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/TypeNode.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/inspect/model/TypeNode.java
@@ -57,7 +57,7 @@ public class TypeNode extends MMNode {
     }
 
     @Override
-    public String iconName() {
+    protected String iconSuffix() {
         return "";
     }
 
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/i18n/po/TranslationServicePoMenu.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/i18n/po/TranslationServicePoMenu.java
index b82628e..16cb1fc 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/i18n/po/TranslationServicePoMenu.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/i18n/po/TranslationServicePoMenu.java
@@ -26,6 +26,7 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.DomainServiceLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.annotation.RestrictTo;
@@ -69,9 +70,11 @@ public class TranslationServicePoMenu {
                 .map(chars->new Clob(Util.withSuffix(potFileName, "pot"), "text/plain", chars))
                 .orElse(null);
     }
+    @MemberSupport
     public String default0DownloadTranslations() {
         return "translations.pot";
     }
+    @MemberSupport
     public String disableDownloadTranslations() {
         return !translationService.getMode().isWrite()
                 ? notAvailableForCurrentMode()
@@ -94,6 +97,7 @@ public class TranslationServicePoMenu {
     public void resetTranslationCache() {
         translationService.clearCache();
     }
+    @MemberSupport
     public String disableResetTranslationCache() {
         return !translationService.getMode().isRead()
                 ? notAvailableForCurrentMode()
@@ -115,6 +119,7 @@ public class TranslationServicePoMenu {
     public void switchToReadingTranslations() {
         translationService.toggleMode();
     }
+    @MemberSupport
     public String disableSwitchToReadingTranslations() {
         return !translationService.getMode().isWrite()
                 ? notAvailableForCurrentMode()
@@ -137,6 +142,7 @@ public class TranslationServicePoMenu {
     public void switchToWritingTranslations() {
         translationService.toggleMode();
     }
+    @MemberSupport
     public String disableSwitchToWritingTranslations() {
         return !translationService.getMode().isRead()
                 ? notAvailableForCurrentMode()
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/InteractionDtoVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/InteractionDtoVm.java
index 6b15d10..a0e2102 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/InteractionDtoVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/InteractionDtoVm.java
@@ -27,6 +27,7 @@ import org.apache.isis.applib.annotation.LabelPosition;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.services.urlencoding.UrlEncodingService;
 import org.apache.isis.applib.util.TitleBuffer;
 import org.apache.isis.applib.util.schema.InteractionDtoUtils;
@@ -50,6 +51,7 @@ public class InteractionDtoVm implements ViewModel {
 
     private final static UrlEncodingService encodingService = new UrlEncodingServiceWithCompression();
 
+    @Title
     public String title() {
         // nb: not thread-safe
         // formats defined in https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
@@ -75,7 +77,7 @@ public class InteractionDtoVm implements ViewModel {
     }
 
     @Override
-    public void viewModelInit(String memento) {
+    public void viewModelInit(final String memento) {
         interactionDto =  InteractionDtoUtils.fromXml(encodingService.decodeToString(memento));
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm.java
index e204205..8bd87e1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm.java
@@ -33,18 +33,21 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.CollectionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.domain.actions.Action.associateWith.child.ActionAssociateWithChildVm;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 import lombok.val;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.domain.actions.Action.associateWith.child.ActionAssociateWithChildVm;
+
 @XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -61,10 +64,11 @@ public class ActionAssociateWithVm implements HasAsciiDocDescription {
 //end::class-properties[]
 //end::class-collections-children[]
 //end::class-collections-favorites[]
-    public ActionAssociateWithVm(String text) {
+    public ActionAssociateWithVm(final String text) {
         this.text = text;
     }
 
+    @Title
     public String title() {
         return "Action#associateWith";
     }
@@ -118,6 +122,7 @@ public class ActionAssociateWithVm implements HasAsciiDocDescription {
         setText(text);
         return this;
     }
+    @MemberSupport
     public String default0UpdateText() {
         return getText();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm_updateOtherProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm_updateOtherProperty.java
index 11faa73..ad62917 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm_updateOtherProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm_updateOtherProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.associateWith;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 
 import lombok.RequiredArgsConstructor;
 
@@ -37,10 +38,12 @@ public class ActionAssociateWithVm_updateOtherProperty {
 
     private final ActionAssociateWithVm actionAssociateWithVm;
 
-    public ActionAssociateWithVm act(String newValue) {
+    @MemberSupport
+    public ActionAssociateWithVm act(final String newValue) {
         actionAssociateWithVm.setOtherProperty(newValue);
         return actionAssociateWithVm;
     }
+    @MemberSupport
     public String default0Act() {
         return actionAssociateWithVm.getOtherProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithChildVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithChildVm.java
index 5d3a7ae..ad9c7ac 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithChildVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithChildVm.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
 import lombok.Getter;
 import lombok.NoArgsConstructor;
@@ -46,10 +47,11 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 @NoArgsConstructor
 public class ActionAssociateWithChildVm implements HasAsciiDocDescription {
 
-    public ActionAssociateWithChildVm(String value) {
+    public ActionAssociateWithChildVm(final String value) {
         setValue(value);
     }
 
+    @Title
     public String title() {
         return getValue();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingEntity_mixinUpdateProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingEntity_mixinUpdateProperty.java
index 7550009..2dca2ee 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingEntity_mixinUpdateProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingEntity_mixinUpdateProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.commandPublishing;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Publishing;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -40,14 +41,16 @@ public class ActionCommandPublishingEntity_mixinUpdateProperty {
 
     private final ActionCommandPublishingEntity actionCommandEntity;
 
-    public ActionCommandPublishingEntity_mixinUpdateProperty(ActionCommandPublishingEntity actionCommandEntity) {
+    public ActionCommandPublishingEntity_mixinUpdateProperty(final ActionCommandPublishingEntity actionCommandEntity) {
         this.actionCommandEntity = actionCommandEntity;
     }
 
+    @MemberSupport
     public ActionCommandPublishingEntity act(final String value) {
         actionCommandEntity.setProperty(value);
         return actionCommandEntity;
     }
+    @MemberSupport
     public String default0Act() {
         return actionCommandEntity.getProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingEntity_mixinUpdatePropertyCommandDisabled.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingEntity_mixinUpdatePropertyCommandDisabled.java
index 1d84129..c0bd20c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingEntity_mixinUpdatePropertyCommandDisabled.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingEntity_mixinUpdatePropertyCommandDisabled.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.commandPublishing;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Publishing;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -44,10 +45,12 @@ public class ActionCommandPublishingEntity_mixinUpdatePropertyCommandDisabled {
 
     private final ActionCommandPublishingEntity actionCommandEntity;
 
+    @MemberSupport
     public ActionCommandPublishingEntity act(final String value) {
         actionCommandEntity.setPropertyCommandDisabled(value);
         return actionCommandEntity;
     }
+    @MemberSupport
     public String default0Act() {
         return actionCommandEntity.getPropertyCommandDisabled();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingEntity_mixinUpdatePropertyMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingEntity_mixinUpdatePropertyMetaAnnotation.java
index 5616c64..cbbefba 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingEntity_mixinUpdatePropertyMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingEntity_mixinUpdatePropertyMetaAnnotation.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.commandPublishing;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -42,10 +43,12 @@ public class ActionCommandPublishingEntity_mixinUpdatePropertyMetaAnnotation {
 
     private final ActionCommandPublishingEntity actionCommandEntity;
 
+    @MemberSupport
     public ActionCommandPublishingEntity act(final String value) {
         actionCommandEntity.setPropertyMetaAnnotated(value);
         return actionCommandEntity;
     }
+    @MemberSupport
     public String default0Act() {
         return actionCommandEntity.getPropertyMetaAnnotated();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingEntity_mixinUpdatePropertyMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingEntity_mixinUpdatePropertyMetaAnnotationOverridden.java
index 71c0d02..324bbd9 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingEntity_mixinUpdatePropertyMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/ActionCommandPublishingEntity_mixinUpdatePropertyMetaAnnotationOverridden.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.commandPublishing;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Publishing;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -46,10 +47,12 @@ public class ActionCommandPublishingEntity_mixinUpdatePropertyMetaAnnotationOver
 
     private final ActionCommandPublishingEntity actionCommandEntity;
 
+    @MemberSupport
     public ActionCommandPublishingEntity act(final String value) {
         actionCommandEntity.setPropertyMetaAnnotatedOverridden(value);
         return actionCommandEntity;
     }
+    @MemberSupport
     public String default0Act() {
         return actionCommandEntity.getPropertyMetaAnnotatedOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/jdo/ActionCommandPublishingJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/jdo/ActionCommandPublishingJdo.java
index ba2b94d..3f99b9a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/jdo/ActionCommandPublishingJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/jdo/ActionCommandPublishingJdo.java
@@ -29,11 +29,13 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Publishing;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -56,13 +58,14 @@ public class ActionCommandPublishingJdo
     // ...
 //end::class[]
 
-    public ActionCommandPublishingJdo(String initialValue) {
+    public ActionCommandPublishingJdo(final String initialValue) {
         this.property = initialValue;
         this.propertyCommandDisabled = initialValue;
         this.propertyMetaAnnotated = initialValue;
         this.propertyMetaAnnotatedOverridden = initialValue;
     }
 
+    @Title
     public String title() {
         return "Action#commandPublishing (JDO)";
     }
@@ -106,6 +109,7 @@ public class ActionCommandPublishingJdo
         setProperty(value);
         return this;
     }
+    @MemberSupport
     public String default0UpdatePropertyUsingAnnotation() {
         return getProperty();
 //tag::annotation[]
@@ -129,6 +133,7 @@ public class ActionCommandPublishingJdo
         setPropertyCommandDisabled(value);
         return this;
     }
+    @MemberSupport
     public String default0UpdatePropertyCommandDisabledUsingAnnotation() {
         return getPropertyCommandDisabled();
 //tag::annotation-2[]
@@ -152,6 +157,7 @@ public class ActionCommandPublishingJdo
         setPropertyMetaAnnotated(value);
         return this;
     }
+    @MemberSupport
     public String default0UpdatePropertyUsingMetaAnnotation() {
         return getPropertyMetaAnnotated();
 //tag::meta-annotation[]
@@ -177,6 +183,7 @@ public class ActionCommandPublishingJdo
         setPropertyMetaAnnotatedOverridden(value);
         return this;
     }
+    @MemberSupport
     public String default0UpdatePropertyUsingMetaAnnotationButOverridden() {
         return getPropertyMetaAnnotatedOverridden();
 //tag::meta-annotation-overridden[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/jpa/ActionCommandPublishingJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/jpa/ActionCommandPublishingJpa.java
index 302d30c..e9ffe8a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/jpa/ActionCommandPublishingJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/jpa/ActionCommandPublishingJpa.java
@@ -30,10 +30,12 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Publishing;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.persistence.jpa.applib.integration.IsisEntityListener;
 
 import lombok.Getter;
@@ -69,6 +71,7 @@ public class ActionCommandPublishingJpa
         this.propertyMetaAnnotatedOverridden = initialValue;
     }
 
+    @Title
     public String title() {
         return "Action#commandPublishing (JPA)";
     }
@@ -116,6 +119,7 @@ public class ActionCommandPublishingJpa
         setProperty(value);
         return this;
     }
+    @MemberSupport
     public String default0UpdatePropertyUsingAnnotation() {
         return getProperty();
 //tag::annotation[]
@@ -139,6 +143,7 @@ public class ActionCommandPublishingJpa
         setPropertyCommandDisabled(value);
         return this;
     }
+    @MemberSupport
     public String default0UpdatePropertyCommandDisabledUsingAnnotation() {
         return getPropertyCommandDisabled();
 //tag::annotation-2[]
@@ -162,6 +167,7 @@ public class ActionCommandPublishingJpa
         setPropertyMetaAnnotated(value);
         return this;
     }
+    @MemberSupport
     public String default0UpdatePropertyUsingMetaAnnotation() {
         return getPropertyMetaAnnotated();
 //tag::meta-annotation[]
@@ -187,6 +193,7 @@ public class ActionCommandPublishingJpa
         setPropertyMetaAnnotatedOverridden(value);
         return this;
     }
+    @MemberSupport
     public String default0UpdatePropertyUsingMetaAnnotationButOverridden() {
         return getPropertyMetaAnnotatedOverridden();
 //tag::meta-annotation-overridden[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/ActionDomainEventVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/ActionDomainEventVm.java
index 01cf76c..3a84f2a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/ActionDomainEventVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/ActionDomainEventVm.java
@@ -27,17 +27,20 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.events.domain.ActionDomainEvent;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 @XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -51,10 +54,11 @@ public class ActionDomainEventVm implements HasAsciiDocDescription {
     // ...
 //end::class[]
 
-    public ActionDomainEventVm(String text) {
+    public ActionDomainEventVm(final String text) {
         this.text = text;
     }
 
+    @Title
     public String title() {
         return "Action#domainEvent";
     }
@@ -83,6 +87,7 @@ public class ActionDomainEventVm implements HasAsciiDocDescription {
         setText(text);
         return this;
     }
+    @MemberSupport
     public String default0UpdateText() {
         return getText();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/ActionDomainEventVm_mixinUpdateText.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/ActionDomainEventVm_mixinUpdateText.java
index cc24382..da391c9 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/ActionDomainEventVm_mixinUpdateText.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/ActionDomainEventVm_mixinUpdateText.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.domainEvent;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.events.domain.ActionDomainEvent;
 
@@ -46,10 +47,12 @@ public class ActionDomainEventVm_mixinUpdateText {
 
     private final ActionDomainEventVm actionDomainEventVm;
 
+    @MemberSupport
     public ActionDomainEventVm act(final String text) {
         actionDomainEventVm.setText(text);
         return actionDomainEventVm;
     }
+    @MemberSupport
     public String default0Act() {
         return actionDomainEventVm.getText();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/subscribers/ActionDomainEventVm_controlUpdateTextInvocation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/subscribers/ActionDomainEventVm_controlUpdateTextInvocation.java
index 1f51c7b..1f91b62 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/subscribers/ActionDomainEventVm_controlUpdateTextInvocation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/domainEvent/subscribers/ActionDomainEventVm_controlUpdateTextInvocation.java
@@ -22,12 +22,14 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import demoapp.dom.domain.actions.Action.domainEvent.ActionDomainEventVm;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.domain.actions.Action.domainEvent.ActionDomainEventVm;
+
 
 //tag::class[]
 @Action(
@@ -42,10 +44,12 @@ public class ActionDomainEventVm_controlUpdateTextInvocation {
 
     private final ActionDomainEventVm actionDomainEventVm;
 
+    @MemberSupport
     public ActionDomainEventVm act(final ActionDomainEventControlStrategy controlStrategy) {
         eventActionDomainEventControlService.controlStrategy = controlStrategy;
         return actionDomainEventVm;
     }
+    @MemberSupport
     public ActionDomainEventControlStrategy default0Act() {
         return eventActionDomainEventControlService.controlStrategy;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingEntity_mixinUpdateProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingEntity_mixinUpdateProperty.java
index 9671cb5..39bec46 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingEntity_mixinUpdateProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingEntity_mixinUpdateProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.executionPublishing;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Publishing;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -42,15 +43,17 @@ public class ActionExecutionPublishingEntity_mixinUpdateProperty {
 
     private final ActionExecutionPublishingEntity actionPublishingEntity;
 
-    public ActionExecutionPublishingEntity_mixinUpdateProperty(ActionExecutionPublishingJdo actionPublishingJdo) {
+    public ActionExecutionPublishingEntity_mixinUpdateProperty(final ActionExecutionPublishingJdo actionPublishingJdo) {
         this.actionPublishingEntity = actionPublishingJdo;
     }
 
 //tag::class[]
+    @MemberSupport
     public ActionExecutionPublishingEntity act(final String value) {
         actionPublishingEntity.setProperty(value);
         return actionPublishingEntity;
     }
+    @MemberSupport
     public String default0Act() {
         return actionPublishingEntity.getProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingEntity_mixinUpdatePropertyMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingEntity_mixinUpdatePropertyMetaAnnotation.java
index 9e015cb..1b5bb2c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingEntity_mixinUpdatePropertyMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingEntity_mixinUpdatePropertyMetaAnnotation.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.executionPublishing;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import demoapp.dom.domain.actions.Action.executionPublishing.jdo.ActionExecutionPublishingJdo;
@@ -41,15 +42,17 @@ public class ActionExecutionPublishingEntity_mixinUpdatePropertyMetaAnnotation {
 
     private final ActionExecutionPublishingEntity actionPublishingEntity;
 
-    public ActionExecutionPublishingEntity_mixinUpdatePropertyMetaAnnotation(ActionExecutionPublishingJdo actionPublishingJdo) {
+    public ActionExecutionPublishingEntity_mixinUpdatePropertyMetaAnnotation(final ActionExecutionPublishingJdo actionPublishingJdo) {
         this.actionPublishingEntity = actionPublishingJdo;
     }
 
 //tag::class[]
+    @MemberSupport
     public ActionExecutionPublishingEntity act(final String value) {
         actionPublishingEntity.setPropertyMetaAnnotated(value);
         return actionPublishingEntity;
     }
+    @MemberSupport
     public String default0Act() {
         return actionPublishingEntity.getPropertyMetaAnnotated();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingEntity_mixinUpdatePropertyMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingEntity_mixinUpdatePropertyMetaAnnotationOverridden.java
index bc015c3..975a045 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingEntity_mixinUpdatePropertyMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingEntity_mixinUpdatePropertyMetaAnnotationOverridden.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.executionPublishing;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Publishing;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -45,15 +46,17 @@ public class ActionExecutionPublishingEntity_mixinUpdatePropertyMetaAnnotationOv
 
     private final ActionExecutionPublishingEntity actionPublishingEntity;
 
-    public ActionExecutionPublishingEntity_mixinUpdatePropertyMetaAnnotationOverridden(ActionExecutionPublishingJdo actionPublishingJdo) {
+    public ActionExecutionPublishingEntity_mixinUpdatePropertyMetaAnnotationOverridden(final ActionExecutionPublishingJdo actionPublishingJdo) {
         this.actionPublishingEntity = actionPublishingJdo;
     }
 
 //tag::class[]
+    @MemberSupport
     public ActionExecutionPublishingEntity act(final String value) {
         actionPublishingEntity.setPropertyMetaAnnotatedOverridden(value);
         return actionPublishingEntity;
     }
+    @MemberSupport
     public String default0Act() {
         return actionPublishingEntity.getPropertyMetaAnnotatedOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/jdo/ActionExecutionPublishingJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/jdo/ActionExecutionPublishingJdo.java
index e4bdbed..413bb90 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/jdo/ActionExecutionPublishingJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/jdo/ActionExecutionPublishingJdo.java
@@ -29,11 +29,13 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Publishing;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -56,12 +58,13 @@ public class ActionExecutionPublishingJdo
     // ...
 //end::class[]
 
-    public ActionExecutionPublishingJdo(String initialValue) {
+    public ActionExecutionPublishingJdo(final String initialValue) {
         this.property = initialValue;
         this.propertyMetaAnnotated = initialValue;
         this.propertyMetaAnnotatedOverridden = initialValue;
     }
 
+    @Title
     public String title() {
         return "Action#executionPublishing (JDO)";
     }
@@ -98,6 +101,7 @@ public class ActionExecutionPublishingJdo
         setProperty(value);
         return this;
     }
+    @MemberSupport
     public String default0UpdatePropertyUsingAnnotation() {
         return getProperty();
     }
@@ -119,6 +123,7 @@ public class ActionExecutionPublishingJdo
         setPropertyMetaAnnotated(value);
         return this;
     }
+    @MemberSupport
     public String default0UpdatePropertyUsingMetaAnnotation() {
         return getPropertyMetaAnnotated();
     }
@@ -142,6 +147,7 @@ public class ActionExecutionPublishingJdo
         setPropertyMetaAnnotatedOverridden(value);
         return this;
     }
+    @MemberSupport
     public String default0UpdatePropertyUsingMetaAnnotationButOverridden() {
         return getPropertyMetaAnnotatedOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/jpa/ActionExecutionPublishingJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/jpa/ActionExecutionPublishingJpa.java
index 7465884..2835c88 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/jpa/ActionExecutionPublishingJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/jpa/ActionExecutionPublishingJpa.java
@@ -30,10 +30,12 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Publishing;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.persistence.jpa.applib.integration.IsisEntityListener;
 
 import lombok.Getter;
@@ -68,6 +70,7 @@ public class ActionExecutionPublishingJpa
         this.propertyMetaAnnotatedOverridden = initialValue;
     }
 
+    @Title
     public String title() {
         return "Action#executionPublishing (JPA)";
     }
@@ -108,6 +111,7 @@ public class ActionExecutionPublishingJpa
         setProperty(value);
         return this;
     }
+    @MemberSupport
     public String default0UpdatePropertyUsingAnnotation() {
         return getProperty();
     }
@@ -129,6 +133,7 @@ public class ActionExecutionPublishingJpa
         setPropertyMetaAnnotated(value);
         return this;
     }
+    @MemberSupport
     public String default0UpdatePropertyUsingMetaAnnotation() {
         return getPropertyMetaAnnotated();
     }
@@ -152,6 +157,7 @@ public class ActionExecutionPublishingJpa
         setPropertyMetaAnnotatedOverridden(value);
         return this;
     }
+    @MemberSupport
     public String default0UpdatePropertyUsingMetaAnnotationButOverridden() {
         return getPropertyMetaAnnotatedOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm.java
index 8fb056a..5632d5b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm.java
@@ -27,17 +27,20 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 @XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -51,11 +54,12 @@ public class ActionHiddenVm implements HasAsciiDocDescription {
     // ...
 //end::class[]
 
-    public ActionHiddenVm(String value) {
+    public ActionHiddenVm(final String value) {
         this.text = value;
         this.otherText = value;
     }
 
+    @Title
     public String title() {
         return "Action#hidden";
     }
@@ -87,6 +91,7 @@ public class ActionHiddenVm implements HasAsciiDocDescription {
         setText(text);
         return this;
     }
+    @MemberSupport
     public String default0UpdateTextNoAnnotation() {
         return getText();
     }
@@ -107,6 +112,7 @@ public class ActionHiddenVm implements HasAsciiDocDescription {
         setText(text);
         return this;
     }
+    @MemberSupport
     public String default0UpdateTextAndHiddenNowhere() {
         return getText();
     }
@@ -127,6 +133,7 @@ public class ActionHiddenVm implements HasAsciiDocDescription {
         setText(text);
         return this;
     }
+    @MemberSupport
     public String default0UpdateTextButHiddenOnForms() {
         return getText();
     }
@@ -148,6 +155,7 @@ public class ActionHiddenVm implements HasAsciiDocDescription {
         setText(text);
         return this;
     }
+    @MemberSupport
     public String default0UpdateTextButHiddenEverywhere() {
         return getText();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm_mixinUpdateTextAndHiddenNowhere.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm_mixinUpdateTextAndHiddenNowhere.java
index 83e128b..6a260e1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm_mixinUpdateTextAndHiddenNowhere.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm_mixinUpdateTextAndHiddenNowhere.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.hidden;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Where;
 
@@ -42,10 +43,12 @@ public class ActionHiddenVm_mixinUpdateTextAndHiddenNowhere {
 
     private final ActionHiddenVm actionHiddenVm;
 
+    @MemberSupport
     public ActionHiddenVm act(final String text) {
         actionHiddenVm.setOtherText(text);
         return actionHiddenVm;
     }
+    @MemberSupport
     public String default0Act() {
         return actionHiddenVm.getOtherText();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm_mixinUpdateTextButHiddenEverywhere.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm_mixinUpdateTextButHiddenEverywhere.java
index f8ab001..6b89355 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm_mixinUpdateTextButHiddenEverywhere.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm_mixinUpdateTextButHiddenEverywhere.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.hidden;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Where;
 
@@ -42,10 +43,12 @@ public class ActionHiddenVm_mixinUpdateTextButHiddenEverywhere {
 
     private final ActionHiddenVm actionHiddenVm;
 
+    @MemberSupport
     public ActionHiddenVm act(final String text) {
         actionHiddenVm.setOtherText(text);
         return actionHiddenVm;
     }
+    @MemberSupport
     public String default0Act() {
         return actionHiddenVm.getOtherText();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm_mixinUpdateTextButHiddenObjectForms.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm_mixinUpdateTextButHiddenObjectForms.java
index 495dd5d..6066888 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm_mixinUpdateTextButHiddenObjectForms.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm_mixinUpdateTextButHiddenObjectForms.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.hidden;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Where;
 
@@ -42,10 +43,12 @@ public class ActionHiddenVm_mixinUpdateTextButHiddenObjectForms {
 
     private final ActionHiddenVm actionHiddenVm;
 
+    @MemberSupport
     public ActionHiddenVm act(final String text) {
         actionHiddenVm.setOtherText(text);
         return actionHiddenVm;
     }
+    @MemberSupport
     public String default0Act() {
         return actionHiddenVm.getOtherText();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm_mixinUpdateTextNoAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm_mixinUpdateTextNoAnnotation.java
index 004e678..804566b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm_mixinUpdateTextNoAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/hidden/ActionHiddenVm_mixinUpdateTextNoAnnotation.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.hidden;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -41,10 +42,12 @@ public class ActionHiddenVm_mixinUpdateTextNoAnnotation {
 
     private final ActionHiddenVm actionHiddenVm;
 
+    @MemberSupport
     public ActionHiddenVm act(final String text) {
         actionHiddenVm.setOtherText(text);
         return actionHiddenVm;
     }
+    @MemberSupport
     public String default0Act() {
         return actionHiddenVm.getOtherText();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm.java
index 8afff49..d5c569f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm.java
@@ -27,17 +27,20 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 @XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -51,7 +54,7 @@ public class ActionRestrictToVm implements HasAsciiDocDescription {
     // ...
 //end::class[]
 
-    public ActionRestrictToVm(String value) {
+    public ActionRestrictToVm(final String value) {
         this.propertyNoAnnotation = value;
         this.propertyForPrototyping = value;
         this.propertyForNoRestrictions = value;
@@ -59,6 +62,7 @@ public class ActionRestrictToVm implements HasAsciiDocDescription {
         this.propertyForMetaAnnotationsOverridden = value;
     }
 
+    @Title
     public String title() {
         return "Action#restrictTo";
     }
@@ -108,6 +112,7 @@ public class ActionRestrictToVm implements HasAsciiDocDescription {
         setPropertyNoAnnotation(text);
         return this;
     }
+    @MemberSupport
     public String default0UpdateNoAnnotation() {
         return getPropertyNoAnnotation();
     }
@@ -128,6 +133,7 @@ public class ActionRestrictToVm implements HasAsciiDocDescription {
         setPropertyForPrototyping(text);
         return this;
     }
+    @MemberSupport
     public String default0UpdateRestrictToPrototyping() {
         return getPropertyForPrototyping();
     }
@@ -148,6 +154,7 @@ public class ActionRestrictToVm implements HasAsciiDocDescription {
         setPropertyForNoRestrictions(text);
         return this;
     }
+    @MemberSupport
     public String default0UpdateRestrictToNoRestrictions() {
         return getPropertyForNoRestrictions();
     }
@@ -168,6 +175,7 @@ public class ActionRestrictToVm implements HasAsciiDocDescription {
         setPropertyForMetaAnnotations(text);
         return this;
     }
+    @MemberSupport
     public String default0UpdateMetaAnnotated() {
         return getPropertyForMetaAnnotations();
     }
@@ -190,6 +198,7 @@ public class ActionRestrictToVm implements HasAsciiDocDescription {
         setPropertyForMetaAnnotationsOverridden(text);
         return this;
     }
+    @MemberSupport
     public String default0UpdateMetaAnnotatedOverridden() {
         return getPropertyForMetaAnnotationsOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateMetaAnnotated.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateMetaAnnotated.java
index c8c9b1a..22faf20 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateMetaAnnotated.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateMetaAnnotated.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.restrictTo;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -41,10 +42,12 @@ public class ActionRestrictToVm_mixinUpdateMetaAnnotated {
 
     private final ActionRestrictToVm actionRestrictToVm;
 
+    @MemberSupport
     public ActionRestrictToVm act(final String text) {
         actionRestrictToVm.setPropertyForMetaAnnotations(text);
         return actionRestrictToVm;
     }
+    @MemberSupport
     public String default0Act() {
         return actionRestrictToVm.getPropertyForMetaAnnotations();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateMetaAnnotatedOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateMetaAnnotatedOverridden.java
index 276bf58..03317ea 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateMetaAnnotatedOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateMetaAnnotatedOverridden.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.restrictTo;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -44,10 +45,12 @@ public class ActionRestrictToVm_mixinUpdateMetaAnnotatedOverridden {
 
     private final ActionRestrictToVm actionRestrictToVm;
 
+    @MemberSupport
     public ActionRestrictToVm act(final String text) {
         actionRestrictToVm.setPropertyForMetaAnnotationsOverridden(text);
         return actionRestrictToVm;
     }
+    @MemberSupport
     public String default0Act() {
         return actionRestrictToVm.getPropertyForMetaAnnotationsOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateNoAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateNoAnnotation.java
index 9f97633..37d14f1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateNoAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateNoAnnotation.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.restrictTo;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -40,10 +41,12 @@ public class ActionRestrictToVm_mixinUpdateNoAnnotation {
 
     private final ActionRestrictToVm actionRestrictToVm;
 
+    @MemberSupport
     public ActionRestrictToVm act(final String text) {
         actionRestrictToVm.setPropertyNoAnnotation(text);
         return actionRestrictToVm;
     }
+    @MemberSupport
     public String default0Act() {
         return actionRestrictToVm.getPropertyNoAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateRestrictToNoRestrictions.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateRestrictToNoRestrictions.java
index 3959e6b..55e1f0f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateRestrictToNoRestrictions.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateRestrictToNoRestrictions.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.restrictTo;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -42,10 +43,12 @@ public class ActionRestrictToVm_mixinUpdateRestrictToNoRestrictions {
 
     private final ActionRestrictToVm actionRestrictToVm;
 
+    @MemberSupport
     public ActionRestrictToVm act(final String text) {
         actionRestrictToVm.setPropertyForNoRestrictions(text);
         return actionRestrictToVm;
     }
+    @MemberSupport
     public String default0Act() {
         return actionRestrictToVm.getPropertyForNoRestrictions();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateRestrictToPrototyping.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateRestrictToPrototyping.java
index 880145b..adad79e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateRestrictToPrototyping.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/restrictTo/ActionRestrictToVm_mixinUpdateRestrictToPrototyping.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.restrictTo;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -42,10 +43,12 @@ public class ActionRestrictToVm_mixinUpdateRestrictToPrototyping {
 
     private final ActionRestrictToVm actionRestrictToVm;
 
+    @MemberSupport
     public ActionRestrictToVm act(final String text) {
         actionRestrictToVm.setPropertyForPrototyping(text);
         return actionRestrictToVm;
     }
+    @MemberSupport
     public String default0Act() {
         return actionRestrictToVm.getPropertyForPrototyping();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm.java
index b98c45a..968128d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm.java
@@ -29,21 +29,24 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.message.MessageService;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 
 import static org.apache.isis.applib.services.wrapper.control.SyncControl.control;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 @XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -75,6 +78,7 @@ public class ActionSemanticsVm implements HasAsciiDocDescription {
         this.propertyForMetaAnnotationsOverridden = value;
     }
 
+    @Title
     public String title() {
         return "Action#semantics";
     }
@@ -148,6 +152,7 @@ public class ActionSemanticsVm implements HasAsciiDocDescription {
         setPropertyNoAnnotation(getPropertyNoAnnotation() + amount);
         return this;
     }
+    @MemberSupport
     public int default0IncrementByAmountNoAnnotation() {
         return 1;
     }
@@ -222,6 +227,7 @@ public class ActionSemanticsVm implements HasAsciiDocDescription {
         setPropertyForIdempotent(value);
         return this;
     }
+    @MemberSupport
     public int default0SetToValuePropertyForIdempotent() {
         return getPropertyForIdempotent();
     }
@@ -241,6 +247,7 @@ public class ActionSemanticsVm implements HasAsciiDocDescription {
         setPropertyForIdempotentAreYouSure(value);
         return this;
     }
+    @MemberSupport
     public int default0SetToValuePropertyForIdempotentAreYouSure() {
         return getPropertyForIdempotentAreYouSure();
     }
@@ -261,6 +268,7 @@ public class ActionSemanticsVm implements HasAsciiDocDescription {
         setPropertyForNonIdempotent(getPropertyForNonIdempotent() + amount);
         return this;
     }
+    @MemberSupport
     public int default0IncrementByAmountPropertyForNonIdempotent() {
         return 1;
     }
@@ -297,6 +305,7 @@ public class ActionSemanticsVm implements HasAsciiDocDescription {
         setPropertyForNonIdempotentAreYouSure(getPropertyForNonIdempotentAreYouSure() + amount);
         return this;
     }
+    @MemberSupport
     public int default0IncrementByAmountPropertyForNonIdempotentAreYouSure() {
         return 1;
     }
@@ -318,6 +327,7 @@ public class ActionSemanticsVm implements HasAsciiDocDescription {
         setPropertyForMetaAnnotations(value);
         return this;
     }
+    @MemberSupport
     public int default0SetToValueMetaAnnotated() {
         return getPropertyForMetaAnnotations();
     }
@@ -340,6 +350,7 @@ public class ActionSemanticsVm implements HasAsciiDocDescription {
         setPropertyForMetaAnnotationsOverridden(val);
         return this;
     }
+    @MemberSupport
     public int default0SetToValueMetaAnnotatedOverridden() {
         return getPropertyForMetaAnnotationsOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinIncrementByAmountNonIdempotent.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinIncrementByAmountNonIdempotent.java
index cedb943..013054b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinIncrementByAmountNonIdempotent.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinIncrementByAmountNonIdempotent.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.semantics;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -40,12 +41,14 @@ public class ActionSemanticsVm_mixinIncrementByAmountNonIdempotent {
 
     private final ActionSemanticsVm actionSemanticsVm;
 
+    @MemberSupport
     public ActionSemanticsVm act(final int incrementBy) {
         actionSemanticsVm.setPropertyForNonIdempotent(
                 actionSemanticsVm.getPropertyForNonIdempotent() + incrementBy
         );
         return actionSemanticsVm;
     }
+    @MemberSupport
     public int default0Act() {
         return 1;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinIncrementNoAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinIncrementNoAnnotation.java
index 5a44460..cb2fea7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinIncrementNoAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinIncrementNoAnnotation.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.semantics;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 
 import lombok.RequiredArgsConstructor;
 
@@ -38,11 +39,13 @@ public class ActionSemanticsVm_mixinIncrementNoAnnotation {
 
     private final ActionSemanticsVm actionSemanticsVm;
 
+    @MemberSupport
     public ActionSemanticsVm act(final int incrementBy) {
         actionSemanticsVm.setPropertyNoAnnotation(
                 actionSemanticsVm.getPropertyNoAnnotation() + incrementBy);
         return actionSemanticsVm;
     }
+    @MemberSupport
     public int default0Act() {
         return 1;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinIncrementNonIdempotent.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinIncrementNonIdempotent.java
index 9a3c493..c0c84f3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinIncrementNonIdempotent.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinIncrementNonIdempotent.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.semantics;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -39,14 +40,12 @@ public class ActionSemanticsVm_mixinIncrementNonIdempotent {
 
     private final ActionSemanticsVm actionSemanticsVm;
 
+    @MemberSupport
     public ActionSemanticsVm act() {
         actionSemanticsVm.setPropertyForNonIdempotent(
                 actionSemanticsVm.getPropertyForNonIdempotent() + 1
         );
         return actionSemanticsVm;
     }
-    public int default0Act() {
-        return 1;
-    }
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinIncrementNonIdempotentAreYouSure.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinIncrementNonIdempotentAreYouSure.java
index ce220ee..1f4039b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinIncrementNonIdempotentAreYouSure.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinIncrementNonIdempotentAreYouSure.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.semantics;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -39,14 +40,12 @@ public class ActionSemanticsVm_mixinIncrementNonIdempotentAreYouSure {
 
     private final ActionSemanticsVm actionSemanticsVm;
 
+    @MemberSupport
     public ActionSemanticsVm act() {
         actionSemanticsVm.setPropertyForNonIdempotentAreYouSure(
                 actionSemanticsVm.getPropertyForNonIdempotentAreYouSure() + 1
         );
         return actionSemanticsVm;
     }
-    public int default0Act() {
-        return 1;
-    }
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinSetToValueForPropertyMetaAnnotated.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinSetToValueForPropertyMetaAnnotated.java
index 805334d..fe9350a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinSetToValueForPropertyMetaAnnotated.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinSetToValueForPropertyMetaAnnotated.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.semantics;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -41,10 +42,12 @@ public class ActionSemanticsVm_mixinSetToValueForPropertyMetaAnnotated {
 
     private final ActionSemanticsVm actionSemanticsVm;
 
+    @MemberSupport
     public ActionSemanticsVm act(final int value) {
         actionSemanticsVm.setPropertyForMetaAnnotations(value);
         return actionSemanticsVm;
     }
+    @MemberSupport
     public int default0Act() {
         return actionSemanticsVm.getPropertyForMetaAnnotations();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinSetToValueForPropertyMetaAnnotatedOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinSetToValueForPropertyMetaAnnotatedOverridden.java
index 83fa5ce..20c439e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinSetToValueForPropertyMetaAnnotatedOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinSetToValueForPropertyMetaAnnotatedOverridden.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.semantics;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -42,10 +43,12 @@ public class ActionSemanticsVm_mixinSetToValueForPropertyMetaAnnotatedOverridden
 
     private final ActionSemanticsVm actionSemanticsVm;
 
+    @MemberSupport
     public ActionSemanticsVm act(final int value) {
         actionSemanticsVm.setPropertyForMetaAnnotationsOverridden(value);
         return actionSemanticsVm;
     }
+    @MemberSupport
     public int default0Act() {
         return actionSemanticsVm.getPropertyForMetaAnnotationsOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinSetToValueForPropertySemanticsIdempotent.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinSetToValueForPropertySemanticsIdempotent.java
index 4781cf7..21b5bfa 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinSetToValueForPropertySemanticsIdempotent.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinSetToValueForPropertySemanticsIdempotent.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.semantics;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -40,10 +41,12 @@ public class ActionSemanticsVm_mixinSetToValueForPropertySemanticsIdempotent {
 
     private final ActionSemanticsVm actionSemanticsVm;
 
+    @MemberSupport
     public ActionSemanticsVm act(final int value) {
         actionSemanticsVm.setPropertyForIdempotent(value);
         return actionSemanticsVm;
     }
+    @MemberSupport
     public int default0Act() {
         return actionSemanticsVm.getPropertyForIdempotent();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinSetToValueForPropertySemanticsIdempotentAreYouSure.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinSetToValueForPropertySemanticsIdempotentAreYouSure.java
index b4410a2..e243eb9 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinSetToValueForPropertySemanticsIdempotentAreYouSure.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/semantics/ActionSemanticsVm_mixinSetToValueForPropertySemanticsIdempotentAreYouSure.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.Action.semantics;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -41,10 +42,12 @@ public class ActionSemanticsVm_mixinSetToValueForPropertySemanticsIdempotentAreY
 
     private final ActionSemanticsVm actionSemanticsVm;
 
+    @MemberSupport
     public ActionSemanticsVm act(final int value) {
         actionSemanticsVm.setPropertyForIdempotentAreYouSure(value);
         return actionSemanticsVm;
     }
+    @MemberSupport
     public int default0Act() {
         return actionSemanticsVm.getPropertyForIdempotentAreYouSure();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/typeOf/ActionTypeOfVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/typeOf/ActionTypeOfVm.java
index 8636bcc..25b6450 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/typeOf/ActionTypeOfVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/typeOf/ActionTypeOfVm.java
@@ -34,12 +34,14 @@ import org.apache.isis.applib.annotation.CollectionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.domain.actions.Action.typeOf.child.ActionTypeOfChildVm;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.domain.actions.Action.typeOf.child.ActionTypeOfChildVm;
+
 @XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -53,6 +55,7 @@ public class ActionTypeOfVm implements HasAsciiDocDescription {
 
 //end::class-collections-children[]
 
+    @Title
     public String title() {
         return "Action#typeOf";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/typeOf/child/ActionTypeOfChildVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/typeOf/child/ActionTypeOfChildVm.java
index 1fcd4ce..32db599 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/typeOf/child/ActionTypeOfChildVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/typeOf/child/ActionTypeOfChildVm.java
@@ -28,12 +28,14 @@ import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 //tag::class[]
 @XmlRootElement(name = "child")
 @XmlType
@@ -45,13 +47,14 @@ import lombok.Setter;
 @NoArgsConstructor
 public class ActionTypeOfChildVm implements HasAsciiDocDescription {
 
-    public ActionTypeOfChildVm(String value) {
+    public ActionTypeOfChildVm(final String value) {
         setValue(value);
         setValueUpper(value.toUpperCase());
         setValueLower(value.toLowerCase());
         setValueReversed(reverse(value));
     }
 
+    @Title
     public String title() {
         return getValue();
     }
@@ -80,7 +83,7 @@ public class ActionTypeOfChildVm implements HasAsciiDocDescription {
     @Getter @Setter
     private String valueReversed;
 
-    private static String reverse(String value) {
+    private static String reverse(final String value) {
         return new StringBuilder(value).reverse().toString();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/ActionLayoutMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/ActionLayoutMenu.java
index 3d15599..a83d413 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/ActionLayoutMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/ActionLayoutMenu.java
@@ -21,15 +21,14 @@ package demoapp.dom.domain.actions.ActionLayout;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import lombok.extern.log4j.Log4j2;
-
 @DomainService(nature=NatureOfService.VIEW, logicalTypeName = "demo.ActionLayoutMenu")
 @javax.annotation.Priority(PriorityPrecedence.EARLY)
-@Log4j2
+//@Log4j2
 public class ActionLayoutMenu {
 
     @Action(semantics = SemanticsOf.SAFE)
@@ -37,6 +36,7 @@ public class ActionLayoutMenu {
     )
     public void bookmarking(){
     }
+    @MemberSupport
     public String disableBookmarking(){
         return "Add link to action prompt as a bookmark" +
                 " (not supported by Wicket viewer)";
@@ -48,6 +48,7 @@ public class ActionLayoutMenu {
     @ActionLayout(cssClassFa="fa-pen-nib", describedAs = "CSS class to wrap the UI component representing this action")
     public void cssClass(){
     }
+    @MemberSupport
     public String disableCssClass(){
         return "CSS class to wrap the UI component representing this action" +
                 " (not yet implemented in demo)";
@@ -59,6 +60,7 @@ public class ActionLayoutMenu {
     @ActionLayout(cssClassFa="fa-font-awesome-flag", describedAs = "Font awesome icon to represent action")
     public void cssClassFa(){
     }
+    @MemberSupport
     public String disableCssClassFa(){
         return "Font awesome icon to represent action" +
                 " (not yet implemented in demo)";
@@ -71,6 +73,7 @@ public class ActionLayoutMenu {
     @ActionLayout(cssClassFa="fa-comment", describedAs = "Description of the action, shown as a tooltip")
     public void describedAs(){
     }
+    @MemberSupport
     public String disableDescribedAs(){
         return "Description of the action, shown as a tooltip" +
                 " (not yet implemented in demo)";
@@ -82,6 +85,7 @@ public class ActionLayoutMenu {
     @ActionLayout(cssClassFa="fa-glasses", describedAs = "Visibility of the action in different contexts")
     public void hidden(){
     }
+    @MemberSupport
     public String disableHidden(){
         return "Visibility of the action in different contexts" +
                 " (not yet implemented in demo)";
@@ -93,6 +97,7 @@ public class ActionLayoutMenu {
     @ActionLayout(cssClassFa="fa-signature", describedAs = "Custom text for the action's label")
     public void named(){
     }
+    @MemberSupport
     public String disableNamed(){
         return "Custom text for the action's label" +
                 " (not yet implemented in demo)";
@@ -120,6 +125,7 @@ public class ActionLayoutMenu {
     @ActionLayout(cssClassFa="fa-random", describedAs = "Whether to redraw page if action returns same object")
     public void redirectPolicy(){
     }
+    @MemberSupport
     public String disableRedirectPolicy(){
         return "Whether to redraw page if action returns same object" +
                 " (not yet implemented in demo)";
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm.java
index bcc5058..8d6357a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm.java
@@ -29,11 +29,13 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -44,6 +46,7 @@ import lombok.Setter;
 )
 public class ActionLayoutPositionVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "ActionLayout#position";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_annotatedBelow.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_annotatedBelow.java
index 10aed97..f781b21 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_annotatedBelow.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_annotatedBelow.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.ActionLayout.position;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -39,10 +40,12 @@ public class ActionLayoutPositionVm_annotatedBelow {
 
     private final ActionLayoutPositionVm stringViewModel;
 
-    public ActionLayoutPositionVm act(String newValue) {
+    @MemberSupport
+    public ActionLayoutPositionVm act(final String newValue) {
         stringViewModel.setReadOnlyProperty1(newValue);
         return stringViewModel;
     }
+    @MemberSupport
     public String default0Act() {
         return stringViewModel.getReadOnlyProperty1();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_annotatedPanel.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_annotatedPanel.java
index 36c6d45..fc46f92 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_annotatedPanel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_annotatedPanel.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.ActionLayout.position;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -40,10 +41,12 @@ public class ActionLayoutPositionVm_annotatedPanel {
 
     private final ActionLayoutPositionVm stringViewModel;
 
-    public ActionLayoutPositionVm act(String newValue) {
+    @MemberSupport
+    public ActionLayoutPositionVm act(final String newValue) {
         stringViewModel.setReadOnlyProperty1(newValue);
         return stringViewModel;
     }
+    @MemberSupport
     public String default0Act() {
         return stringViewModel.getReadOnlyProperty1();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_annotatedPanelDropDown.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_annotatedPanelDropDown.java
index 44dfa86..acd83f1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_annotatedPanelDropDown.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_annotatedPanelDropDown.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.ActionLayout.position;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -40,10 +41,12 @@ public class ActionLayoutPositionVm_annotatedPanelDropDown {
 
     private final ActionLayoutPositionVm stringViewModel;
 
-    public ActionLayoutPositionVm act(String newValue) {
+    @MemberSupport
+    public ActionLayoutPositionVm act(final String newValue) {
         stringViewModel.setReadOnlyProperty1(newValue);
         return stringViewModel;
     }
+    @MemberSupport
     public String default0Act() {
         return stringViewModel.getReadOnlyProperty1();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_annotatedRight.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_annotatedRight.java
index 4dd9f0b..c4825df 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_annotatedRight.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_annotatedRight.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.ActionLayout.position;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -40,10 +41,12 @@ public class ActionLayoutPositionVm_annotatedRight {
 
     private final ActionLayoutPositionVm stringViewModel;
 
-    public ActionLayoutPositionVm act(String newValue) {
+    @MemberSupport
+    public ActionLayoutPositionVm act(final String newValue) {
         stringViewModel.setReadOnlyProperty1(newValue);
         return stringViewModel;
     }
+    @MemberSupport
     public String default0Act() {
         return stringViewModel.getReadOnlyProperty1();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_layoutBelow.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_layoutBelow.java
index e6d4243..bdcaf28 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_layoutBelow.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_layoutBelow.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.ActionLayout.position;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -39,10 +40,12 @@ public class ActionLayoutPositionVm_layoutBelow {
 
     private final ActionLayoutPositionVm stringViewModel;
 
-    public ActionLayoutPositionVm act(String newValue) {
+    @MemberSupport
+    public ActionLayoutPositionVm act(final String newValue) {
         stringViewModel.setReadOnlyProperty2(newValue);
         return stringViewModel;
     }
+    @MemberSupport
     public String default0Act() {
         return stringViewModel.getReadOnlyProperty2();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_layoutPanel.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_layoutPanel.java
index d4cf2a6..3505fc0 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_layoutPanel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_layoutPanel.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.ActionLayout.position;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -39,10 +40,12 @@ public class ActionLayoutPositionVm_layoutPanel {
 
     private final ActionLayoutPositionVm stringViewModel;
 
-    public ActionLayoutPositionVm act(String newValue) {
+    @MemberSupport
+    public ActionLayoutPositionVm act(final String newValue) {
         stringViewModel.setReadOnlyProperty2(newValue);
         return stringViewModel;
     }
+    @MemberSupport
     public String default0Act() {
         return stringViewModel.getReadOnlyProperty2();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_layoutPanelDropDown.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_layoutPanelDropDown.java
index ccaadaa..5d629a5 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_layoutPanelDropDown.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_layoutPanelDropDown.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.ActionLayout.position;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -39,10 +40,12 @@ public class ActionLayoutPositionVm_layoutPanelDropDown {
 
     private final ActionLayoutPositionVm stringViewModel;
 
-    public ActionLayoutPositionVm act(String newValue) {
+    @MemberSupport
+    public ActionLayoutPositionVm act(final String newValue) {
         stringViewModel.setReadOnlyProperty2(newValue);
         return stringViewModel;
     }
+    @MemberSupport
     public String default0Act() {
         return stringViewModel.getReadOnlyProperty2();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_layoutRight.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_layoutRight.java
index 0268ee0..9f8ba07 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_layoutRight.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/position/ActionLayoutPositionVm_layoutRight.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.ActionLayout.position;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -39,10 +40,12 @@ public class ActionLayoutPositionVm_layoutRight {
 
     private final ActionLayoutPositionVm stringViewModel;
 
-    public ActionLayoutPositionVm act(String newValue) {
+    @MemberSupport
+    public ActionLayoutPositionVm act(final String newValue) {
         stringViewModel.setReadOnlyProperty2(newValue);
         return stringViewModel;
     }
+    @MemberSupport
     public String default0Act() {
         return stringViewModel.getReadOnlyProperty2();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm.java
index 7938f89..88ceff5 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm.java
@@ -32,10 +32,11 @@ import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -46,6 +47,7 @@ import lombok.Setter;
 )
 public class ActionLayoutPromptStyleVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "ActionLayout#promptStyle";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedInline.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedInline.java
index c908aa9..9c38b89 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedInline.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedInline.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.ActionLayout.promptStyle;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -41,10 +42,12 @@ public class ActionLayoutPromptStyleVm_annotatedInline {
 
     private final ActionLayoutPromptStyleVm stringViewModel;
 
-    public ActionLayoutPromptStyleVm act(String newValue) {
+    @MemberSupport
+    public ActionLayoutPromptStyleVm act(final String newValue) {
         stringViewModel.setReadOnlyProperty1(newValue);
         return stringViewModel;
     }
+    @MemberSupport
     public String default0Act() {
         return stringViewModel.getReadOnlyProperty1();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedInlineAsIfEdit.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedInlineAsIfEdit.java
index 59c955c..b4d347c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedInlineAsIfEdit.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedInlineAsIfEdit.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.ActionLayout.promptStyle;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -41,10 +42,12 @@ public class ActionLayoutPromptStyleVm_annotatedInlineAsIfEdit {
 
     private final ActionLayoutPromptStyleVm stringViewModel;
 
-    public ActionLayoutPromptStyleVm act(String newValue) {
+    @MemberSupport
+    public ActionLayoutPromptStyleVm act(final String newValue) {
         stringViewModel.setReadOnlyProperty2(newValue);
         return stringViewModel;
     }
+    @MemberSupport
     public String default0Act() {
         return stringViewModel.getReadOnlyProperty2();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedModal.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedModal.java
index d98f98c..f3fee90 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedModal.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedModal.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.ActionLayout.promptStyle;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -41,10 +42,12 @@ public class ActionLayoutPromptStyleVm_annotatedModal {
 
     private final ActionLayoutPromptStyleVm stringViewModel;
 
-    public ActionLayoutPromptStyleVm act(String newValue) {
+    @MemberSupport
+    public ActionLayoutPromptStyleVm act(final String newValue) {
         stringViewModel.setReadOnlyProperty1(newValue);
         return stringViewModel;
     }
+    @MemberSupport
     public String default0Act() {
         return stringViewModel.getReadOnlyProperty1();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedSidebar.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedSidebar.java
index fd74663..d8fe417 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedSidebar.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_annotatedSidebar.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.ActionLayout.promptStyle;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -41,10 +42,12 @@ public class ActionLayoutPromptStyleVm_annotatedSidebar {
 
     private final ActionLayoutPromptStyleVm stringViewModel;
 
-    public ActionLayoutPromptStyleVm act(String newValue) {
+    @MemberSupport
+    public ActionLayoutPromptStyleVm act(final String newValue) {
         stringViewModel.setReadOnlyProperty1(newValue);
         return stringViewModel;
     }
+    @MemberSupport
     public String default0Act() {
         return stringViewModel.getReadOnlyProperty1();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutDialog.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutDialog.java
index e10d1a1..0f718ea 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutDialog.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutDialog.java
@@ -21,6 +21,7 @@ package demoapp.dom.domain.actions.ActionLayout.promptStyle;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObjectLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -43,10 +44,12 @@ public class ActionLayoutPromptStyleVm_layoutDialog {
 
     private final ActionLayoutPromptStyleVm stringViewModel;
 
-    public ActionLayoutPromptStyleVm act(String newValue) {
+    @MemberSupport
+    public ActionLayoutPromptStyleVm act(final String newValue) {
         stringViewModel.setReadOnlyProperty3(newValue);
         return stringViewModel;
     }
+    @MemberSupport
     public String default0Act() {
         return stringViewModel.getReadOnlyProperty3();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutInline.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutInline.java
index 0cd14b5..a3348af 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutInline.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutInline.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.ActionLayout.promptStyle;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -38,10 +39,12 @@ public class ActionLayoutPromptStyleVm_layoutInline {
 
     private final ActionLayoutPromptStyleVm stringViewModel;
 
-    public ActionLayoutPromptStyleVm act(String newValue) {
+    @MemberSupport
+    public ActionLayoutPromptStyleVm act(final String newValue) {
         stringViewModel.setReadOnlyProperty3(newValue);
         return stringViewModel;
     }
+    @MemberSupport
     public String default0Act() {
         return stringViewModel.getReadOnlyProperty3();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutInlineAsIfEdit.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutInlineAsIfEdit.java
index 81c7c07..5dced46 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutInlineAsIfEdit.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/ActionLayout/promptStyle/ActionLayoutPromptStyleVm_layoutInlineAsIfEdit.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.actions.ActionLayout.promptStyle;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -38,10 +39,12 @@ public class ActionLayoutPromptStyleVm_layoutInlineAsIfEdit {
 
     private final ActionLayoutPromptStyleVm stringViewModel;
 
-    public ActionLayoutPromptStyleVm act(String newValue) {
+    @MemberSupport
+    public ActionLayoutPromptStyleVm act(final String newValue) {
         stringViewModel.setReadOnlyProperty4(newValue);
         return stringViewModel;
     }
+    @MemberSupport
     public String default0Act() {
         return stringViewModel.getReadOnlyProperty4();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/assoc/DemoItem.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/assoc/DemoItem.java
index c942e3b..98cf45c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/assoc/DemoItem.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/assoc/DemoItem.java
@@ -25,6 +25,7 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
@@ -38,6 +39,7 @@ import lombok.Setter;
 @AllArgsConstructor(staticName="of")
 public class DemoItem {
 
+    @Title
     public String title() {
         return String.format("DemoItem '%s'", getName());
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DemoItem.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DemoItem.java
index ad756ed..14e7012 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DemoItem.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DemoItem.java
@@ -25,6 +25,7 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
 import lombok.AllArgsConstructor;
 import lombok.EqualsAndHashCode;
@@ -39,6 +40,7 @@ import lombok.Setter;
 @EqualsAndHashCode // required for the Dependent Arguments demo to work properly
 public class DemoItem {
 
+    @Title
     public String title() {
         return String.format("DemoItem '%s' (%s)", getName(), getParity());
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useAutoComplete.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useAutoComplete.java
index f901862..dcb44bf 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useAutoComplete.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useAutoComplete.java
@@ -52,14 +52,15 @@ public class DependentArgsActionDemo_useAutoComplete {
         DemoItem item1;
     }
 
+    @MemberSupport
     public DependentArgsActionDemo act(
 
             // PARAM 0
-            @Parameter(optionality = Optionality.MANDATORY)
+            @Parameter(optionality = Optionality.MANDATORY) final
             Parity parity,
 
             // PARAM 1
-            @Parameter(optionality = Optionality.MANDATORY)
+            @Parameter(optionality = Optionality.MANDATORY) final
             DemoItem item
 
             ) {
@@ -79,8 +80,8 @@ public class DependentArgsActionDemo_useAutoComplete {
 
     @MemberSupport
     public Collection<DemoItem> autoComplete1Act(
-            Parameters params,
-            @MinLength(3) String search) {
+            final Parameters params,
+            @MinLength(3) final String search) {
 
         val parity = params.parity(); // <-- the refining parameter from the dialog above
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useChoices.java
index cd1c0a8..95b7905 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useChoices.java
@@ -52,14 +52,15 @@ public class DependentArgsActionDemo_useChoices {
         DemoItem item1;
     }
 
+    @MemberSupport
     public DependentArgsActionDemo act(
 
             // PARAM 0
-            @Parameter(optionality = Optionality.MANDATORY)
+            @Parameter(optionality = Optionality.MANDATORY) final
             Parity parity,
 
             // PARAM 1
-            @Parameter(optionality = Optionality.MANDATORY)
+            @Parameter(optionality = Optionality.MANDATORY) final
             DemoItem item
 
             ) {
@@ -78,7 +79,7 @@ public class DependentArgsActionDemo_useChoices {
     // -- PARAM 1 (DemoItem)
 
     @MemberSupport
-    public Collection<DemoItem> choices1Act(Parameters params) {
+    public Collection<DemoItem> choices1Act(final Parameters params) {
 
         val parity = params.parity(); // <-- the refining parameter from the dialog above
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useDisable.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useDisable.java
index 7d93fdb..73ad229 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useDisable.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useDisable.java
@@ -48,15 +48,16 @@ public class DependentArgsActionDemo_useDisable {
         String message;
     }
 
+    @MemberSupport
     public DependentArgsActionDemo act(
 
             // PARAM 0
-            @ParameterLayout(named = "Disable Message Field")
+            @ParameterLayout(named = "Disable Message Field") final
             boolean disableMessageField,
 
             // PARAM 1
             @Parameter(optionality = Optionality.MANDATORY)
-            @ParameterLayout(named = "Message")
+            @ParameterLayout(named = "Message") final
             String message
 
             ) {
@@ -75,7 +76,7 @@ public class DependentArgsActionDemo_useDisable {
     // -- PARAM 1 (String message)
 
     @MemberSupport
-    public String disable1Act(boolean disableMessageField) {
+    public String disable1Act(final boolean disableMessageField) {
         return disableMessageField
                 ? "disabled by dependent argument"
                         : null;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useHide.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useHide.java
index aca2edc..19ec351 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useHide.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useHide.java
@@ -48,15 +48,16 @@ public class DependentArgsActionDemo_useHide {
         String message;
     }
 
+    @MemberSupport
     public DependentArgsActionDemo act(
 
             // PARAM 0
-            @ParameterLayout(named = "Hide Message Field")
+            @ParameterLayout(named = "Hide Message Field") final
             boolean hideMessageField,
 
             // PARAM 1
             @Parameter(optionality = Optionality.MANDATORY)
-            @ParameterLayout(named = "Message")
+            @ParameterLayout(named = "Message") final
             String message
 
             ) {
@@ -75,12 +76,12 @@ public class DependentArgsActionDemo_useHide {
     // -- PARAM 1 (String message)
 
     @MemberSupport
-    public boolean hide1Act(boolean hideMessageField) {
+    public boolean hide1Act(final boolean hideMessageField) {
         return hideMessageField;
     }
 
 
-    public boolean hide1Act(Parameters params) {
+    public boolean hide1Act(final Parameters params) {
         return params.hideMessageField();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useIndependent.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useIndependent.java
index 3263eb0..7fa4ce4 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useIndependent.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/DependentArgsActionDemo_useIndependent.java
@@ -42,18 +42,19 @@ public class DependentArgsActionDemo_useIndependent {
 
     private final DependentArgsActionDemo holder;
 
+    @MemberSupport
     public DependentArgsActionDemo act(
 
             // PARAM 0
-            @Parameter(optionality = Optionality.MANDATORY)
+            @Parameter(optionality = Optionality.MANDATORY) final
             Parity parity,
 
             // PARAM 1
-            @Parameter(optionality = Optionality.MANDATORY)
+            @Parameter(optionality = Optionality.MANDATORY) final
             DemoItem item1,
 
             // PARAM 2
-            @Parameter(optionality = Optionality.MANDATORY)
+            @Parameter(optionality = Optionality.MANDATORY) final
             DemoItem item2
 
             ) {
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/Parity.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/Parity.java
index a3a7cd6..4d182cf 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/Parity.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/progmodel/depargs/Parity.java
@@ -18,10 +18,13 @@
  */
 package demoapp.dom.domain.actions.progmodel.depargs;
 
+import org.apache.isis.applib.annotation.Title;
+
 public enum Parity {
     EVEN,
     ODD;
 
+    @Title
     public String title() {
         return name();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/CollectionMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/CollectionMenu.java
index caefa00..74c003d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/CollectionMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/CollectionMenu.java
@@ -23,6 +23,7 @@ import javax.inject.Inject;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -30,7 +31,6 @@ import org.apache.isis.applib.services.factory.FactoryService;
 
 import lombok.RequiredArgsConstructor;
 import lombok.val;
-import lombok.extern.log4j.Log4j2;
 
 import demoapp.dom.domain.collections.Collection.domainEvent.CollectionDomainEventVm;
 import demoapp.dom.domain.collections.Collection.domainEvent.CollectionDomainEventVm_addChild;
@@ -40,8 +40,8 @@ import demoapp.dom.domain.collections.Collection.domainEvent.CollectionDomainEve
         logicalTypeName = "demo.CollectionMenu"
 )
 @javax.annotation.Priority(PriorityPrecedence.EARLY)
-@Log4j2
 @RequiredArgsConstructor(onConstructor_ = {@Inject})
+//@Log4j2
 public class CollectionMenu {
 
     final FactoryService factoryService;
@@ -64,6 +64,7 @@ public class CollectionMenu {
     @ActionLayout(cssClassFa="fa-glasses", describedAs = "Visibility of collections")
     public void hidden(){
     }
+    @MemberSupport
     public String disableHidden(){
         return "Visibility of collections" +
                  " (not yet implemented in demo)";
@@ -75,14 +76,13 @@ public class CollectionMenu {
     @ActionLayout(cssClassFa="fa-shapes", describedAs = "Element type of collections")
     public void typeOf(){
     }
+    @MemberSupport
     public String disableTypeOf(){
         return "Element type of collections" +
                  " (not yet implemented in demo)";
     }
 
-
-
-    private CollectionDomainEventVm_addChild addChild(CollectionDomainEventVm collectionDomainEventVm) {
+    private CollectionDomainEventVm_addChild addChild(final CollectionDomainEventVm collectionDomainEventVm) {
         return factoryService.mixin(CollectionDomainEventVm_addChild.class, collectionDomainEventVm);
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/CollectionDomainEventVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/CollectionDomainEventVm.java
index a1f434f..9224f76 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/CollectionDomainEventVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/CollectionDomainEventVm.java
@@ -33,6 +33,7 @@ import org.apache.isis.applib.annotation.CollectionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.events.domain.CollectionDomainEvent;
 
 import lombok.Getter;
@@ -54,6 +55,7 @@ public class CollectionDomainEventVm implements HasAsciiDocDescription {
     // ...
 //end::class[]
 
+    @Title
     public String title() {
         return "Collection#domainEvent";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/CollectionDomainEventVm_removeChild.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/CollectionDomainEventVm_removeChild.java
index 323043d..04e38bb 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/CollectionDomainEventVm_removeChild.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/CollectionDomainEventVm_removeChild.java
@@ -23,11 +23,13 @@ import java.util.Objects;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
+import lombok.RequiredArgsConstructor;
+
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.domain.collections.Collection.domainEvent.child.CollectionDomainEventChildVm;
-import lombok.RequiredArgsConstructor;
 
 //tag::class[]
 @Action(
@@ -44,18 +46,22 @@ public class CollectionDomainEventVm_removeChild implements HasAsciiDocDescripti
         return collectionDomainEventVm.getChildren();
     }
 
-    public CollectionDomainEventVm_removeChild act(CollectionDomainEventChildVm child) {
+    @MemberSupport
+    public CollectionDomainEventVm_removeChild act(final CollectionDomainEventChildVm child) {
         getChildren().removeIf(
                 x -> Objects.equals(x.getValue(), child.getValue()));
         return this;
     }
 
+    @MemberSupport
     public CollectionDomainEventChildVm default0Act() {
         return getChildren().isEmpty() ? null : getChildren().get(0);
     }
+    @MemberSupport
     public List<CollectionDomainEventChildVm> choices0Act() {
         return getChildren();
     }
+    @MemberSupport
     public String disableAct() {
         return getChildren().isEmpty() ? "No children to remove": null;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/subscribers/CollectionDomainEventVm_controlChildrenVisibility.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/subscribers/CollectionDomainEventVm_controlChildrenVisibility.java
index 65f9f29..f06783b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/subscribers/CollectionDomainEventVm_controlChildrenVisibility.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/Collection/domainEvent/subscribers/CollectionDomainEventVm_controlChildrenVisibility.java
@@ -22,13 +22,15 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.Redirect;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import demoapp.dom.domain.collections.Collection.domainEvent.CollectionDomainEventVm;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.domain.collections.Collection.domainEvent.CollectionDomainEventVm;
+
 
 //tag::class[]
 @Action(
@@ -44,10 +46,12 @@ public class CollectionDomainEventVm_controlChildrenVisibility {
 
     private final CollectionDomainEventVm collectionDomainEventVm;
 
+    @MemberSupport
     public CollectionDomainEventVm act(final CollectionDomainEventControlStrategy controlStrategy) {
         eventControlService.controlStrategy = controlStrategy;
         return collectionDomainEventVm;
     }
+    @MemberSupport
     public CollectionDomainEventControlStrategy default0Act() {
         return eventControlService.controlStrategy;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/CollectionLayout/CollectionLayoutMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/CollectionLayout/CollectionLayoutMenu.java
index 1209221..492f455 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/CollectionLayout/CollectionLayoutMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/collections/CollectionLayout/CollectionLayoutMenu.java
@@ -21,24 +21,24 @@ package demoapp.dom.domain.collections.CollectionLayout;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import lombok.extern.log4j.Log4j2;
-
 @DomainService(
         nature=NatureOfService.VIEW,
         logicalTypeName = "demo.CollectionLayoutMenu"
 )
 @javax.annotation.Priority(PriorityPrecedence.EARLY)
-@Log4j2
+//@Log4j2
 public class CollectionLayoutMenu {
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-pen-nib", describedAs = "CSS class to wrap the UI component representing this collection")
     public void cssClass(){
     }
+    @MemberSupport
     public String disableCssClass(){
         return "CSS class to wrap the UI component representing this collection" +
                 " (not yet implemented in demo)";
@@ -50,6 +50,7 @@ public class CollectionLayoutMenu {
     @ActionLayout(cssClassFa="fa-atom", describedAs = "View collection as a table, or collapsed, or some other representation if available")
     public void defaultView(){
     }
+    @MemberSupport
     public String disableDefaultView(){
         return "View collection as a table, or collapsed, or some other representation if available" +
                 " (not yet implemented in demo)";
@@ -61,6 +62,7 @@ public class CollectionLayoutMenu {
     @ActionLayout(cssClassFa="fa-comment", describedAs = "Description of the collection, shown as a tooltip")
     public void describedAs(){
     }
+    @MemberSupport
     public String disableDescribedAs(){
         return "Description of the collection, shown as a tooltip" +
                 " (not yet implemented in demo)";
@@ -72,6 +74,7 @@ public class CollectionLayoutMenu {
     @ActionLayout(cssClassFa="fa-glasses", describedAs = "Visibility of the collection in different contexts")
     public void hidden(){
     }
+    @MemberSupport
     public String disableHidden(){
         return "Visibility of the collection in different contexts" +
                 " (not yet implemented in demo)";
@@ -83,6 +86,7 @@ public class CollectionLayoutMenu {
     @ActionLayout(cssClassFa="fa-signature", describedAs = "Custom text for the collection's label")
     public void named(){
     }
+    @MemberSupport
     public String disableNamed(){
         return "Custom text for the collection's label" +
                 " (not yet implemented in demo)";
@@ -93,6 +97,7 @@ public class CollectionLayoutMenu {
     @ActionLayout(cssClassFa="fa-fast-forward", describedAs = "Number of domain objects per page in this collection")
     public void paged(){
     }
+    @MemberSupport
     public String disablePaged(){
         return "Number of domain objects per page in this collection" +
                 " (not yet implemented in demo)";
@@ -104,11 +109,10 @@ public class CollectionLayoutMenu {
     @ActionLayout(cssClassFa="fa-sort", describedAs = "Sort domain objects in this collection, overriding their default comparator")
     public void sortedBy(){
     }
+    @MemberSupport
     public String disableSortedBy(){
         return "Sort domain objects in this collection, overriding their default comparator" +
                 " (not yet implemented in demo)";
     }
 
-
-
 }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/DomainObjectMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/DomainObjectMenu.java
index 364058d..709c36d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/DomainObjectMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/DomainObjectMenu.java
@@ -23,6 +23,7 @@ import javax.inject.Inject;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -46,6 +47,7 @@ public class DomainObjectMenu {
     @ActionLayout(cssClassFa="fa-question-circle", describedAs = "Search object in prompt")
     public void autoComplete(){
     }
+    @MemberSupport
     public String disableAutoComplete(){
         return "Search object in prompt" +
                  " (not yet implemented in demo)";
@@ -57,6 +59,7 @@ public class DomainObjectMenu {
     @ActionLayout(cssClassFa="fa-list-ul", describedAs = "Choose 'reference data' object (one of a bounded set) in prompt")
     public void bounded(){
     }
+    @MemberSupport
     public String disableBounded(){
         return "Choose 'reference data' object (one of a bounded set) in prompt" +
                  " (not yet implemented in demo)";
@@ -68,6 +71,7 @@ public class DomainObjectMenu {
     @ActionLayout(cssClassFa="fa-pencil-alt", describedAs = "Default editability of properties")
     public void editing() {
     }
+    @MemberSupport
     public String disableEditing(){
         return "Default editability of properties" +
                  " (not yet implemented in demo)";
@@ -87,6 +91,7 @@ public class DomainObjectMenu {
     @ActionLayout(cssClassFa="fa-tools", describedAs = "For mixins, override the default method name")
     public void mixinMethod() {
     }
+    @MemberSupport
     public String disableMixinMethod(){
         return "For mixins, override the default method name" +
                  " (not yet implemented in demo)";
@@ -101,6 +106,7 @@ public class DomainObjectMenu {
         viewModel.setMessage(message);
         return viewModel;
     }
+    @MemberSupport
     public String default0NatureStateful() {
         return "Some initial state";
     }
@@ -114,6 +120,7 @@ public class DomainObjectMenu {
         viewModel.setMessage(message);
         return viewModel;
     }
+    @MemberSupport
     public String default0NatureStatefulRefsEntity() {
         return "Some initial state";
     }
@@ -124,6 +131,7 @@ public class DomainObjectMenu {
     @ActionLayout(cssClassFa="fa-circle", describedAs = "Explicitly specify the logical type name")
     public void logicalTypeName() {
     }
+    @MemberSupport
     public String disableLogicalTypeName(){
         return "Explicitly specify the object type alias" +
                  " (not yet implemented in demo)";
@@ -135,6 +143,7 @@ public class DomainObjectMenu {
     @ActionLayout(cssClassFa="fa-asterisk", describedAs = "Default class of the domain event emitted when interacting with the domain object's actions, properties or collections")
     public void xxxDomainEvent() {
     }
+    @MemberSupport
     public String disableXxxDomainEvent(){
         return "Default class of the domain event emitted when interacting with the domain object's actions, properties or collections" +
                  " (not yet implemented in demo)";
@@ -146,6 +155,7 @@ public class DomainObjectMenu {
     @ActionLayout(cssClassFa="fa-redo", describedAs = "Class of the lifecycle event emitted when the domain entity transitions through its persistence lifecycle")
     public void xxxLifecycleEvent() {
     }
+    @MemberSupport
     public String disableXxxLifecycleEvent(){
         return "Class of the lifecycle event emitted when the domain entity transitions through its persistence lifecycle" +
                  " (not yet implemented in demo)";
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingEntity_updatePropertyUsingAction.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingEntity_updatePropertyUsingAction.java
index 0e863d8..5fae66e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingEntity_updatePropertyUsingAction.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingEntity_updatePropertyUsingAction.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.objects.DomainObject.entityChangePublishing;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
@@ -35,16 +36,18 @@ public class DomainObjectEntityChangePublishingEntity_updatePropertyUsingAction
 //end::class[]
     private final DomainObjectEntityChangePublishingEntity domainObjectAuditingEntity;
 
-    public DomainObjectEntityChangePublishingEntity_updatePropertyUsingAction(DomainObjectEntityChangePublishingEntity domainObjectAuditingEntity) {
+    public DomainObjectEntityChangePublishingEntity_updatePropertyUsingAction(final DomainObjectEntityChangePublishingEntity domainObjectAuditingEntity) {
         this.domainObjectAuditingEntity = domainObjectAuditingEntity;
     }
 
 //tag::class[]
-    public DomainObjectEntityChangePublishingEntity_updatePropertyUsingAction updateProperty(final String value) {
+    @MemberSupport
+    public DomainObjectEntityChangePublishingEntity_updatePropertyUsingAction act(final String value) {
         domainObjectAuditingEntity.setPropertyUpdatedByAction(value);
         return this;
     }
-    public String default0UpdateProperty() {
+    @MemberSupport
+    public String default0Act() {
         return domainObjectAuditingEntity.getPropertyUpdatedByAction();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm.java
index ffb5c4f..a1ead07 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm.java
@@ -25,6 +25,7 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Title;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 
@@ -38,6 +39,7 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 )
 public class DomainObjectEntityChangePublishingVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "DomainObject#entityChangePublishing";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_create.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_create.java
index 8d991f9..fb4faa2 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_create.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_create.java
@@ -22,6 +22,7 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import demoapp.dom._infra.samples.NameSamples;
@@ -39,17 +40,17 @@ import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotO
 public class DomainObjectEntityChangePublishingVm_create {
 
     private final DomainObjectEntityChangePublishingVm domainObjectAuditingVm;
-    public DomainObjectEntityChangePublishingVm_create(DomainObjectEntityChangePublishingVm domainObjectAuditingVm) {
+    public DomainObjectEntityChangePublishingVm_create(final DomainObjectEntityChangePublishingVm domainObjectAuditingVm) {
         this.domainObjectAuditingVm = domainObjectAuditingVm;
     }
 
-
+    @MemberSupport
     public DomainObjectEntityChangePublishingVm act(
-            String newValue
-            , boolean publishingEnabled
-            , boolean publishingDisabled
-            , boolean publishingEnabledMetaAnnotated
-            , boolean publishingEnabledMetaAnnotOverridden
+            final String newValue
+            , final boolean publishingEnabled
+            , final boolean publishingDisabled
+            , final boolean publishingEnabledMetaAnnotated
+            , final boolean publishingEnabledMetaAnnotOverridden
     ) {
         if(publishingEnabled) {
             publishingEnabledEntities.create(newValue);
@@ -65,18 +66,23 @@ public class DomainObjectEntityChangePublishingVm_create {
         }
         return domainObjectAuditingVm;
     }
+    @MemberSupport
     public String default0Act() {
         return nameSamples.random();
     }
+    @MemberSupport
     public boolean default1Act() {
         return true;
     }
+    @MemberSupport
     public boolean default2Act() {
         return true;
     }
+    @MemberSupport
     public boolean default3Act() {
         return true;
     }
+    @MemberSupport
     public boolean default4Act() {
         return true;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_delete.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_delete.java
index 91de8eb..ebf29e9 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_delete.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_delete.java
@@ -18,11 +18,13 @@
  */
 package demoapp.dom.domain.objects.DomainObject.entityChangePublishing;
 
-import org.springframework.lang.Nullable;
 import javax.inject.Inject;
 
+import org.springframework.lang.Nullable;
+
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import demoapp.dom._infra.values.ValueHolderRepository;
@@ -39,15 +41,16 @@ import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotO
 public class DomainObjectEntityChangePublishingVm_delete {
 
     private final DomainObjectEntityChangePublishingVm domainObjectAuditingVm;
-    public DomainObjectEntityChangePublishingVm_delete(DomainObjectEntityChangePublishingVm domainObjectAuditingVm) {
+    public DomainObjectEntityChangePublishingVm_delete(final DomainObjectEntityChangePublishingVm domainObjectAuditingVm) {
         this.domainObjectAuditingVm = domainObjectAuditingVm;
     }
 
+    @MemberSupport
     public DomainObjectEntityChangePublishingVm act(
-            @Nullable DomainObjectEntityChangePublishingEnabledEntity enabledEntity
-            , @Nullable DomainObjectEntityChangePublishingDisabledEntity disabledEntity
-            , @Nullable DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity metaAnnotatedEntity
-            , @Nullable DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity metaAnnotOverriddenEntity
+            @Nullable final DomainObjectEntityChangePublishingEnabledEntity enabledEntity
+            , @Nullable final DomainObjectEntityChangePublishingDisabledEntity disabledEntity
+            , @Nullable final DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity metaAnnotatedEntity
+            , @Nullable final DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity metaAnnotOverriddenEntity
             ) {
         if(enabledEntity != null) {
             publishingEnabledEntities.remove(enabledEntity);
@@ -63,18 +66,23 @@ public class DomainObjectEntityChangePublishingVm_delete {
         }
         return domainObjectAuditingVm;
     }
+    @MemberSupport
     public DomainObjectEntityChangePublishingEnabledEntity default0Act() {
         return publishingEnabledEntities.first().orElse(null);
     }
+    @MemberSupport
     public DomainObjectEntityChangePublishingDisabledEntity default1Act() {
         return publishingDisabledEntities.first().orElse(null);
     }
+    @MemberSupport
     public DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity default2Act() {
         return publishingEnabledMetaAnnotatedEntities.first().orElse(null);
     }
+    @MemberSupport
     public DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity default3Act() {
         return publishingEnabledMetaAnnotOverriddenEntities.first().orElse(null);
     }
+    @MemberSupport
     public String disableAct() {
         if(!publishingEnabledEntities.first().isPresent()) { return "No EnabledJdo to delete"; }
         if(!publishingDisabledEntities.first().isPresent()) { return "No DisabledJdo to delete"; }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_updateAll.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_updateAll.java
index 9cd13fa..545a7a7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_updateAll.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_updateAll.java
@@ -25,6 +25,7 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -45,12 +46,12 @@ public class DomainObjectEntityChangePublishingVm_updateAll {
 
     private final DomainObjectEntityChangePublishingVm domainObjectAuditingVm;
 
+    @MemberSupport
     public DomainObjectEntityChangePublishingVm act(
-            boolean publishingEnabled
-            , boolean publishingDisabled
-            , boolean publishingEnabledMetaAnnotated
-            , boolean publishingEnabledMetaAnnotOverridden
-    ) {
+            final boolean publishingEnabled
+            , final boolean publishingDisabled
+            , final boolean publishingEnabledMetaAnnotated
+            , final boolean publishingEnabledMetaAnnotOverridden) {
 
         if(publishingEnabled) {
             renumber((List)publishingEnabledEntities.all());
@@ -67,21 +68,25 @@ public class DomainObjectEntityChangePublishingVm_updateAll {
 
         return domainObjectAuditingVm;
     }
+    @MemberSupport
     public boolean default0Act() {
         return true;
     }
+    @MemberSupport
     public boolean default1Act() {
         return true;
     }
+    @MemberSupport
     public boolean default2Act() {
         return true;
     }
+    @MemberSupport
     public boolean default3Act() {
         return true;
     }
 
     final static AtomicInteger counter = new AtomicInteger(0);
-    private static void renumber(List<DomainObjectEntityChangePublishingEntity> all) {
+    private static void renumber(final List<DomainObjectEntityChangePublishingEntity> all) {
         all.forEach(x -> x.setPropertyUpdatedByAction("Object #" + counter.incrementAndGet()));
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/nature/viewmodels/jaxbrefentity/StatefulVmJaxbRefsEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/nature/viewmodels/jaxbrefentity/StatefulVmJaxbRefsEntity.java
index b9b4997..ad465a4 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/nature/viewmodels/jaxbrefentity/StatefulVmJaxbRefsEntity.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/nature/viewmodels/jaxbrefentity/StatefulVmJaxbRefsEntity.java
@@ -36,10 +36,12 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -63,6 +65,7 @@ public class StatefulVmJaxbRefsEntity implements HasAsciiDocDescription {
     @XmlTransient @Inject
     private ValueHolderRepository<String, ? extends JaxbRefEntity> childEntities;
 
+    @Title
     public String title() {
         return String.format("%s; %s children", getMessage(), getChildren().size());
     }
@@ -79,15 +82,17 @@ public class StatefulVmJaxbRefsEntity implements HasAsciiDocDescription {
 
     @Action(semantics = SemanticsOf.IDEMPOTENT)
     @ActionLayout(associateWith = "favoriteChild", sequence = "1")
-    public StatefulVmJaxbRefsEntity changeFavoriteChild(JaxbRefEntity newFavorite) {
+    public StatefulVmJaxbRefsEntity changeFavoriteChild(final JaxbRefEntity newFavorite) {
         favoriteChild = newFavorite;
         return this;
     }
+    @MemberSupport
     public List<JaxbRefEntity> choices0ChangeFavoriteChild() {
         List<JaxbRefEntity> children = new ArrayList<>(getChildren());
         children.remove(getFavoriteChild());
         return children;
     }
+    @MemberSupport
     public String disableChangeFavoriteChild() {
         switch (getChildren().size()) {
             case 0: return "no children";
@@ -100,7 +105,7 @@ public class StatefulVmJaxbRefsEntity implements HasAsciiDocDescription {
 
     //XXX[ISIS-2384] potentially fails with NPE
     @Action(choicesFrom = "children")
-    public StatefulVmJaxbRefsEntity suffixSelected(List<JaxbRefEntity> children) {
+    public StatefulVmJaxbRefsEntity suffixSelected(final List<JaxbRefEntity> children) {
         for(JaxbRefEntity child : children) {
             child.setName(child.getName() + ", Jr");
         }
@@ -120,9 +125,11 @@ public class StatefulVmJaxbRefsEntity implements HasAsciiDocDescription {
     }
 
     //XXX[ISIS-2383] in support of an editable property ...
+    @MemberSupport
     public List<JaxbRefEntity> choicesFavoriteChild() {
         return choices0ChangeFavoriteChild(); // reuse logic from above
     }
+    @MemberSupport
     public String disableFavoriteChild() {
         return disableChangeFavoriteChild(); // reuse logic from above
     }
@@ -150,7 +157,9 @@ public class StatefulVmJaxbRefsEntity implements HasAsciiDocDescription {
         children.remove(child);
         return this;
     }
+    @MemberSupport
     public List<JaxbRefEntity> choices0RemoveChild() { return getChildren(); }
+    @MemberSupport
     public String disableRemoveChild() {
         return choices0RemoveChild().isEmpty()? "No children to remove" : null;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/nature/viewmodels/usingjaxb/StatefulVmUsingJaxb.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/nature/viewmodels/usingjaxb/StatefulVmUsingJaxb.java
index 6272e5c..53f40dd 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/nature/viewmodels/usingjaxb/StatefulVmUsingJaxb.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/nature/viewmodels/usingjaxb/StatefulVmUsingJaxb.java
@@ -33,17 +33,19 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Data;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.val;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 //tag::class[]
 @XmlRootElement(name = "root")                              // <.>
 @XmlType                                                    // <.>
@@ -54,6 +56,7 @@ import lombok.val;
 )
 public class StatefulVmUsingJaxb implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return String.format("%s; %s children", getMessage(), getChildren().size());
     }
@@ -100,7 +103,9 @@ public class StatefulVmUsingJaxb implements HasAsciiDocDescription {
         children.remove(child);
         return this;
     }
+    @MemberSupport
     public List<Child> choices0RemoveChild() { return getChildren(); }
+    @MemberSupport
     public String disableRemoveChild() {
         return choices0RemoveChild().isEmpty()? "No children to remove" : null;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObjectLayout/DomainObjectLayoutMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObjectLayout/DomainObjectLayoutMenu.java
index 1bace2c..bfddb15 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObjectLayout/DomainObjectLayoutMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObjectLayout/DomainObjectLayoutMenu.java
@@ -21,24 +21,24 @@ package demoapp.dom.domain.objects.DomainObjectLayout;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import lombok.extern.log4j.Log4j2;
-
 @DomainService(
         nature=NatureOfService.VIEW,
         logicalTypeName = "demo.DomainObjectLayoutMenu"
 )
 @javax.annotation.Priority(PriorityPrecedence.EARLY)
-@Log4j2
+//@Log4j2
 public class DomainObjectLayoutMenu {
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-bookmark", describedAs = "Add link to object once visited as a bookmark")
     public void bookmarking(){
     }
+    @MemberSupport
     public String disableBookmarking(){
         return "Add link to object once visited as a bookmark" +
                  " (not yet implemented in demo)";
@@ -51,6 +51,7 @@ public class DomainObjectLayoutMenu {
     )
     public void cssClass(){
     }
+    @MemberSupport
     public String disableCssClass(){
         return "CSS class to wrap the UI component representing the domain object" +
                  " (not yet implemented in demo)";
@@ -62,6 +63,7 @@ public class DomainObjectLayoutMenu {
     @ActionLayout(cssClassFa="fa-font-awesome-flag", describedAs = "Font awesome icon to represent domain object")
     public void cssClassFa(){
     }
+    @MemberSupport
     public String disableCssClassFa(){
         return "Font awesome icon to represent domain object" +
                 " (not yet implemented in demo)";
@@ -73,6 +75,7 @@ public class DomainObjectLayoutMenu {
     @ActionLayout(cssClassFa="fa-comment", describedAs = "Description of the property, shown as a tooltip")
     public void describedAs(){
     }
+    @MemberSupport
     public String disableDescribedAs(){
         return "Description of the property, shown as a tooltip" +
                 " (not yet implemented in demo)";
@@ -84,6 +87,7 @@ public class DomainObjectLayoutMenu {
     @ActionLayout(cssClassFa="fa-signature", describedAs = "Custom text for the domain object's type wherever labelled")
     public void named(){
     }
+    @MemberSupport
     public String disableNamed(){
         return "Custom text for the domain object's type wherever labelled" +
                 " (not yet implemented in demo)";
@@ -95,6 +99,7 @@ public class DomainObjectLayoutMenu {
     @ActionLayout(cssClassFa="fa-fast-forward", describedAs = "Number of domain objects per page in collections")
     public void paged(){
     }
+    @MemberSupport
     public String disablePaged(){
         return "Number of domain objects per page in collections" +
                 " (not yet implemented in demo)";
@@ -106,6 +111,7 @@ public class DomainObjectLayoutMenu {
     @ActionLayout(cssClassFa="fa-signature", describedAs = "Overrides plural form for the domain object's type, eg for irregular plurals")
     public void plural(){
     }
+    @MemberSupport
     public String disablePlural(){
         return "Overrides plural form for the domain object's type, eg for irregular plurals" +
                 " (not yet implemented in demo)";
@@ -117,6 +123,7 @@ public class DomainObjectLayoutMenu {
     @ActionLayout(cssClassFa="fa-desktop", describedAs = "Class of the UI events emitted to allow subscribers to specify title, icon etc")
     public void xxxUiEvent(){
     }
+    @MemberSupport
     public String disableXxxUiEvent(){
         return "Class of the UI events emitted to allow subscribers to specify title, icon etc" +
                 " (not yet implemented in demo)";
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/EmbeddedTypeVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/EmbeddedTypeVm.java
index a821e823..5586d34 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/EmbeddedTypeVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/EmbeddedTypeVm.java
@@ -25,6 +25,7 @@ import javax.inject.Inject;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Title;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolderRepository;
@@ -38,6 +39,7 @@ public class EmbeddedTypeVm implements HasAsciiDocDescription {
 // end::class[]
     @Inject private ValueHolderRepository<ComplexNumber, ? extends NumberConstantEntity> numberConstantRepo;
 
+    @Title
     public String title() {
         return "Embedded Types";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/ComplexNumberJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/ComplexNumberJdo.java
index 6cd2163..6663f48 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/ComplexNumberJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/ComplexNumberJdo.java
@@ -22,12 +22,14 @@ import java.util.Optional;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Value;
 
-import demoapp.dom.domain.objects.other.embedded.ComplexNumber;
 import lombok.AccessLevel;
 import lombok.val;
 
+import demoapp.dom.domain.objects.other.embedded.ComplexNumber;
+
 // tag::class[]
 @javax.jdo.annotations.PersistenceCapable                               // <.>
 @javax.jdo.annotations.EmbeddedOnly                                     // <.>
@@ -47,6 +49,7 @@ public class ComplexNumberJdo
 // end::class[]
 
 // tag::title[]
+    @Title
     public String title() {
         return im >= 0
                 ? "" + re + " + " +  im + "i"
@@ -66,13 +69,13 @@ public class ComplexNumberJdo
                 : Optional.empty();
     }
 
-    private static double realFrom(Matcher m) {
+    private static double realFrom(final Matcher m) {
         return Double.parseDouble(m.group("re"));
     }
-    private static double signFrom(Matcher m) {
+    private static double signFrom(final Matcher m) {
         return m.group("sign").equals("-") ? -1.0d : +1.0d;
     }
-    private static double imaginaryFrom(Matcher m) {
+    private static double imaginaryFrom(final Matcher m) {
         return Double.parseDouble(m.group("im"));
     }
 // end::parse[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/NumberConstantJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/NumberConstantJdo.java
index a547b8e..5a9e219 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/NumberConstantJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/NumberConstantJdo.java
@@ -30,12 +30,14 @@ import org.springframework.context.annotation.Profile;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom.domain.objects.other.embedded.ComplexNumber;
-import demoapp.dom.domain.objects.other.embedded.persistence.NumberConstantEntity;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom.domain.objects.other.embedded.ComplexNumber;
+import demoapp.dom.domain.objects.other.embedded.persistence.NumberConstantEntity;
+
 @Profile("demo-jdo")
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo" )
@@ -47,6 +49,7 @@ public class NumberConstantJdo
     // ...
 
 //end::class[]
+    @Title
     public String title() {
         return getName();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/NumberConstantJdo_updateNumber.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/NumberConstantJdo_updateNumber.java
index 1cf1a5e..3268040 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/NumberConstantJdo_updateNumber.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/NumberConstantJdo_updateNumber.java
@@ -22,6 +22,7 @@ import org.springframework.context.annotation.Profile;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 
 import lombok.RequiredArgsConstructor;
@@ -37,11 +38,13 @@ public class NumberConstantJdo_updateNumber {
 
     private final NumberConstantJdo numberConstantJdo;
 
-    public NumberConstantJdo act(ComplexNumberJdo complexNumberJdo) {
+    @MemberSupport
+    public NumberConstantJdo act(final ComplexNumberJdo complexNumberJdo) {
         numberConstantJdo.setNumber(complexNumberJdo);
         return numberConstantJdo;
     }
 
+    @MemberSupport
     public ComplexNumberJdo default0Act() {
         return numberConstantJdo.getNumber();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/ComplexNumberJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/ComplexNumberJpa.java
index c983268..18e4c95 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/ComplexNumberJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/ComplexNumberJpa.java
@@ -22,12 +22,14 @@ import java.util.Optional;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Value;
 
-import demoapp.dom.domain.objects.other.embedded.ComplexNumber;
 import lombok.AccessLevel;
 import lombok.val;
 
+import demoapp.dom.domain.objects.other.embedded.ComplexNumber;
+
 // tag::class[]
 //@Entity                                                                 // <.>
 @javax.persistence.Embeddable                                                             // <.>
@@ -48,6 +50,7 @@ public class ComplexNumberJpa
 // end::class[]
 
 // tag::title[]
+    @Title
     public String title() {
         return im >= 0
                 ? "" + re + " + " +  im + "i"
@@ -67,13 +70,13 @@ public class ComplexNumberJpa
                 : Optional.empty();
     }
 
-    private static double realFrom(Matcher m) {
+    private static double realFrom(final Matcher m) {
         return Double.parseDouble(m.group("re"));
     }
-    private static double signFrom(Matcher m) {
+    private static double signFrom(final Matcher m) {
         return m.group("sign").equals("-") ? -1.0d : +1.0d;
     }
-    private static double imaginaryFrom(Matcher m) {
+    private static double imaginaryFrom(final Matcher m) {
         return Double.parseDouble(m.group("im"));
     }
 // end::parse[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/NumberConstantJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/NumberConstantJpa.java
index 1e33f49..a396a87 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/NumberConstantJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/NumberConstantJpa.java
@@ -29,6 +29,7 @@ import org.springframework.context.annotation.Profile;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.persistence.jpa.applib.integration.IsisEntityListener;
 
 import lombok.Getter;
@@ -54,6 +55,7 @@ public class NumberConstantJpa
     // ...
 
 //end::class[]
+    @Title
     public String title() {
         return getName();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/NumberConstantJpa_updateNumber.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/NumberConstantJpa_updateNumber.java
index 1299ad4..4798f32 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/NumberConstantJpa_updateNumber.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/NumberConstantJpa_updateNumber.java
@@ -22,6 +22,7 @@ import org.springframework.context.annotation.Profile;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 
 import lombok.RequiredArgsConstructor;
@@ -37,11 +38,13 @@ public class NumberConstantJpa_updateNumber {
 
     private final NumberConstantJpa numberConstantJdo;
 
-    public NumberConstantJpa act(ComplexNumberJpa complexNumberJdo) {
+    @MemberSupport
+    public NumberConstantJpa act(final ComplexNumberJpa complexNumberJdo) {
         numberConstantJdo.setNumber(complexNumberJdo);
         return numberConstantJdo;
     }
 
+    @MemberSupport
     public ComplexNumberJpa default0Act() {
         return numberConstantJdo.getNumber();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/CountHolder_updateCount.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/CountHolder_updateCount.java
index 991a529..e9e3ba8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/CountHolder_updateCount.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/CountHolder_updateCount.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.objects.other.mixins;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 
 import lombok.RequiredArgsConstructor;
 
@@ -33,15 +34,18 @@ public class CountHolder_updateCount {
 
     private final CountHolder holder;   // <.>
 
-    public CountHolder act(int count) {
+    @MemberSupport
+    public CountHolder act(final int count) {
         holder.setCount(count);
         return holder;
     }
 
+    @MemberSupport
     public int default0Act() {
         return holder.getCount();
     }
 
+    @MemberSupport
     public String validate0Act(final int proposedCount) {
         return proposedCount >= 0 && proposedCount <= 46
                 ? null
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/FibonacciNumberVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/FibonacciNumberVm.java
index 7ec775d..08def91 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/FibonacciNumberVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/FibonacciNumberVm.java
@@ -22,6 +22,7 @@ import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 
 import lombok.AllArgsConstructor;
@@ -39,6 +40,7 @@ import lombok.Setter;
 @AllArgsConstructor(staticName = "of")
 public class FibonacciNumberVm {
 
+    @Title
     public String title() {
         return String.format("%d ! = %d", getNumber(), getFibonacci());
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/MixinVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/MixinVm.java
index ab74d27..8047e90 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/MixinVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/MixinVm.java
@@ -27,6 +27,7 @@ import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.Title;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -40,6 +41,7 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 @DomainObject(nature=Nature.VIEW_MODEL, logicalTypeName = "demo.MixinVm")
 public class MixinVm implements HasAsciiDocDescription, CountHolder {
 
+    @Title
     public String title() {
         return "Mixins";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/jdo/PropertyCommandPublishingJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/jdo/PropertyCommandPublishingJdo.java
index 9a1f6b0..d9d7082 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/jdo/PropertyCommandPublishingJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/jdo/PropertyCommandPublishingJdo.java
@@ -31,6 +31,7 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Publishing;
+import org.apache.isis.applib.annotation.Title;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -53,13 +54,14 @@ public class PropertyCommandPublishingJdo
     // ...
 //end::class[]
 
-    public PropertyCommandPublishingJdo(String initialValue) {
+    public PropertyCommandPublishingJdo(final String initialValue) {
         this.property = initialValue;
         this.propertyCommandPublishingDisabled = initialValue;
         this.propertyMetaAnnotated = initialValue;
         this.propertyMetaAnnotatedOverridden = initialValue;
     }
 
+    @Title
     public String title() {
         return "Property#commandPublishing (JDO)";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/jpa/PropertyCommandPublishingJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/jpa/PropertyCommandPublishingJpa.java
index 932a82d..59fd72f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/jpa/PropertyCommandPublishingJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/jpa/PropertyCommandPublishingJpa.java
@@ -31,6 +31,7 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Publishing;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.persistence.jpa.applib.integration.IsisEntityListener;
 
 import lombok.Getter;
@@ -66,6 +67,7 @@ public class PropertyCommandPublishingJpa
         this.propertyMetaAnnotatedOverridden = initialValue;
     }
 
+    @Title
     public String title() {
         return "Property#commandPublishing (JPA)";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/domainEvent/PropertyDomainEventVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/domainEvent/PropertyDomainEventVm.java
index 42da163..7ef33b5 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/domainEvent/PropertyDomainEventVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/domainEvent/PropertyDomainEventVm.java
@@ -29,13 +29,15 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.events.domain.PropertyDomainEvent;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 @XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -50,10 +52,11 @@ public class PropertyDomainEventVm implements HasAsciiDocDescription {
     // ...
 //end::class[]
 
-    public PropertyDomainEventVm(String text) {
+    public PropertyDomainEventVm(final String text) {
         this.text = text;
     }
 
+    @Title
     public String title() {
         return "Property#domainEvent";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/domainEvent/subscribers/PropertyDomainEventVm_controlTextEditing.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/domainEvent/subscribers/PropertyDomainEventVm_controlTextEditing.java
index f88c00b..c979f0f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/domainEvent/subscribers/PropertyDomainEventVm_controlTextEditing.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/domainEvent/subscribers/PropertyDomainEventVm_controlTextEditing.java
@@ -22,13 +22,15 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.Redirect;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import demoapp.dom.domain.properties.Property.domainEvent.PropertyDomainEventVm;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.domain.properties.Property.domainEvent.PropertyDomainEventVm;
+
 //tag::class[]
 @Action(
     semantics = SemanticsOf.IDEMPOTENT
@@ -44,10 +46,12 @@ public class PropertyDomainEventVm_controlTextEditing {
 
     private final PropertyDomainEventVm propertyDomainEventVm;
 
+    @MemberSupport
     public PropertyDomainEventVm act(final PropertyDomainEventControlStrategy controlStrategy) {
         eventControlService.controlStrategy = controlStrategy;
         return propertyDomainEventVm;
     }
+    @MemberSupport
     public PropertyDomainEventControlStrategy default0Act() {
         return eventControlService.controlStrategy;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/editing/PropertyEditingVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/editing/PropertyEditingVm.java
index 59f0414..d98c192 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/editing/PropertyEditingVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/editing/PropertyEditingVm.java
@@ -29,11 +29,13 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -47,6 +49,7 @@ public class PropertyEditingVm implements HasAsciiDocDescription {
     // ...
 //end::class[]
 
+    @Title
     public String title() {
         return "Property#editing";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/jdo/PropertyExecutionPublishingJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/jdo/PropertyExecutionPublishingJdo.java
index bb64f4c..244ab0e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/jdo/PropertyExecutionPublishingJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/jdo/PropertyExecutionPublishingJdo.java
@@ -32,6 +32,7 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Publishing;
+import org.apache.isis.applib.annotation.Title;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -54,12 +55,13 @@ public class PropertyExecutionPublishingJdo
     // ...
 //end::class[]
 
-    public PropertyExecutionPublishingJdo(String initialValue) {
+    public PropertyExecutionPublishingJdo(final String initialValue) {
         this.property = initialValue;
         this.propertyMetaAnnotated = initialValue;
         this.propertyMetaAnnotatedOverridden = initialValue;
     }
 
+    @Title
     public String title() {
         return "Property#executionPublishing (JDO)";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/jpa/PropertyExecutionPublishingJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/jpa/PropertyExecutionPublishingJpa.java
index e3917bf..f13c3cd 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/jpa/PropertyExecutionPublishingJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/jpa/PropertyExecutionPublishingJpa.java
@@ -32,6 +32,7 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Publishing;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.persistence.jpa.applib.integration.IsisEntityListener;
 
 import lombok.Getter;
@@ -66,6 +67,7 @@ public class PropertyExecutionPublishingJpa
         this.propertyMetaAnnotatedOverridden = initialValue;
     }
 
+    @Title
     public String title() {
         return "Property#executionPublishing (JDO)";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm.java
index 3912d35..ece9c08 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm.java
@@ -29,13 +29,15 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.value.Blob;
 import org.apache.isis.applib.value.Clob;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -47,6 +49,7 @@ import lombok.Setter;
 )
 public class PropertyFileAcceptVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Property#fileAccept";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm_updateClobWithParameterLayout.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm_updateClobWithParameterLayout.java
index 959148a..4de6351 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm_updateClobWithParameterLayout.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm_updateClobWithParameterLayout.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.Property.fileAccept;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -40,6 +41,7 @@ public class PropertyFileAcceptVm_updateClobWithParameterLayout {
     private final PropertyFileAcceptVm propertyFileAcceptVm;
 
 //tag::annotation[]
+    @MemberSupport
     public PropertyFileAcceptVm act(
             @Parameter(
                 fileAccept = ".txt"                     // <.>
@@ -54,6 +56,7 @@ public class PropertyFileAcceptVm_updateClobWithParameterLayout {
         return propertyFileAcceptVm;
     }
 //end::annotation[]
+    @MemberSupport
     public Clob default0Act() {
         return propertyFileAcceptVm.getTxtPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm_updateWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm_updateWithMetaAnnotation.java
index 735dddc..0e27eda 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm_updateWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm_updateWithMetaAnnotation.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.Property.fileAccept;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -39,6 +40,7 @@ public class PropertyFileAcceptVm_updateWithMetaAnnotation {
     private final PropertyFileAcceptVm propertyFileAcceptVm;
 
 //tag::meta-annotation[]
+    @MemberSupport
     public PropertyFileAcceptVm act(
             @FileAcceptPdfMetaAnnotation                            // <.>
             @Parameter()
@@ -50,6 +52,7 @@ public class PropertyFileAcceptVm_updateWithMetaAnnotation {
         return propertyFileAcceptVm;
     }
 //end::meta-annotation[]
+    @MemberSupport
     public Blob default0Act() {
         return propertyFileAcceptVm.getPdfPropertyUsingMetaAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm_updateWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm_updateWithMetaAnnotationOverridden.java
index 2328c07..82bab81 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm_updateWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm_updateWithMetaAnnotationOverridden.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.Property.fileAccept;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -39,6 +40,7 @@ public class PropertyFileAcceptVm_updateWithMetaAnnotationOverridden {
     private final PropertyFileAcceptVm propertyFileAcceptVm;
 
 //tag::meta-annotation-overridden[]
+    @MemberSupport
     public PropertyFileAcceptVm act(
             @FileAcceptPdfMetaAnnotation                    // <.>
             @Parameter(
@@ -54,6 +56,7 @@ public class PropertyFileAcceptVm_updateWithMetaAnnotationOverridden {
         return propertyFileAcceptVm;
     }
 //end::meta-annotation-overridden[]
+    @MemberSupport
     public Blob default0Act() {
         return propertyFileAcceptVm.getDocxPropertyUsingMetaAnnotationButOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm_updateWithParameterLayout.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm_updateWithParameterLayout.java
index b91984b..2c9db51 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm_updateWithParameterLayout.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/fileAccept/PropertyFileAcceptVm_updateWithParameterLayout.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.Property.fileAccept;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -40,6 +41,7 @@ public class PropertyFileAcceptVm_updateWithParameterLayout {
     private final PropertyFileAcceptVm propertyFileAcceptVm;
 
 //tag::annotation[]
+    @MemberSupport
     public PropertyFileAcceptVm act(
             @Parameter(
                 fileAccept = ".pdf"                     // <.>
@@ -54,6 +56,7 @@ public class PropertyFileAcceptVm_updateWithParameterLayout {
         return propertyFileAcceptVm;
     }
 //end::annotation[]
+    @MemberSupport
     public Blob default0Act() {
         return propertyFileAcceptVm.getPdfPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm.java
index 5fa467d..d5e39de 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm.java
@@ -34,14 +34,16 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.domain.properties.Property.hidden.child.PropertyHiddenChildVm;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.domain.properties.Property.hidden.child.PropertyHiddenChildVm;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -54,6 +56,7 @@ import lombok.Setter;
 @NoArgsConstructor
 public class PropertyHiddenVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Property#hidden";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm_returnsChildren.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm_returnsChildren.java
index c73fb15..df95265 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm_returnsChildren.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/PropertyHiddenVm_returnsChildren.java
@@ -21,6 +21,7 @@ package demoapp.dom.domain.properties.Property.hidden;
 import java.util.List;
 
 import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -36,12 +37,10 @@ public class PropertyHiddenVm_returnsChildren {
     private final PropertyHiddenVm propertyHiddenVm;
 
 //tag::meta-annotation[]
+    @MemberSupport
     public List<PropertyHiddenChildVm> act() {
         return propertyHiddenVm.getChildren();
     }
 //end::meta-annotation[]
-    public String default0Act() {
-        return propertyHiddenVm.getPropertyUsingMetaAnnotation();
-    }
 
 }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/child/PropertyHiddenChildVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/child/PropertyHiddenChildVm.java
index 8489881..d9c7fa1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/child/PropertyHiddenChildVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/hidden/child/PropertyHiddenChildVm.java
@@ -29,14 +29,16 @@ import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.domain.properties.Property.hidden.PropertyHiddenVm;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.domain.properties.Property.hidden.PropertyHiddenVm;
+
 //tag::class[]
 @XmlRootElement(name = "child")
 @XmlType
@@ -48,7 +50,7 @@ import lombok.Setter;
 @NoArgsConstructor
 public class PropertyHiddenChildVm implements HasAsciiDocDescription {
 
-    public PropertyHiddenChildVm(String value, PropertyHiddenVm parent) {
+    public PropertyHiddenChildVm(final String value, final PropertyHiddenVm parent) {
         setPropertyHiddenNowhere(value);
         setPropertyHiddenEverywhere(value);
         setPropertyHiddenAnywhere(value);
@@ -63,6 +65,7 @@ public class PropertyHiddenChildVm implements HasAsciiDocDescription {
         setPropertyHiddenReferencesParent(parent);
     }
 
+    @Title
     public String title() {
         return "Property#hidden (child object)";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm.java
index 8d19eed..9c53ca6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm.java
@@ -29,11 +29,13 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -45,6 +47,7 @@ import lombok.Setter;
 )
 public class PropertyMaxLengthVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Property#maxLength";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm_updateWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm_updateWithMetaAnnotation.java
index 88c90a2..76a7ed7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm_updateWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm_updateWithMetaAnnotation.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.Property.maxLength;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -38,6 +39,7 @@ public class PropertyMaxLengthVm_updateWithMetaAnnotation {
     private final PropertyMaxLengthVm propertyMaxLengthVm;
 
 //tag::meta-annotation[]
+    @MemberSupport
     public PropertyMaxLengthVm act(
             @MaxLength10MetaAnnotation                            // <.>
             @Parameter()
@@ -49,6 +51,7 @@ public class PropertyMaxLengthVm_updateWithMetaAnnotation {
         return propertyMaxLengthVm;
     }
 //end::meta-annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyMaxLengthVm.getPropertyUsingMetaAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm_updateWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm_updateWithMetaAnnotationOverridden.java
index b33d2e2..c4c6034 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm_updateWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm_updateWithMetaAnnotationOverridden.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.Property.maxLength;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -38,6 +39,7 @@ public class PropertyMaxLengthVm_updateWithMetaAnnotationOverridden {
     private final PropertyMaxLengthVm propertyMaxLengthVm;
 
 //tag::meta-annotation-overridden[]
+    @MemberSupport
     public PropertyMaxLengthVm act(
             @MaxLength10MetaAnnotation                          // <.>
             @Parameter(
@@ -53,6 +55,7 @@ public class PropertyMaxLengthVm_updateWithMetaAnnotationOverridden {
         return propertyMaxLengthVm;
     }
 //end::meta-annotation-overridden[]
+    @MemberSupport
     public String default0Act() {
         return propertyMaxLengthVm.getPropertyUsingMetaAnnotationButOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm_updateWithParameterLayout.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm_updateWithParameterLayout.java
index 4ec2d8e..27411ef 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm_updateWithParameterLayout.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/maxLength/PropertyMaxLengthVm_updateWithParameterLayout.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.Property.maxLength;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -38,6 +39,7 @@ public class PropertyMaxLengthVm_updateWithParameterLayout {
     private final PropertyMaxLengthVm propertyMaxLengthVm;
 
 //tag::annotation[]
+    @MemberSupport
     public PropertyMaxLengthVm act(
             @Parameter(
                 maxLength = 10                                 // <.>
@@ -51,6 +53,7 @@ public class PropertyMaxLengthVm_updateWithParameterLayout {
         return propertyMaxLengthVm;
     }
 //end::annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyMaxLengthVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm.java
index 2770c75..8da0f48 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm.java
@@ -29,11 +29,13 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -45,6 +47,7 @@ import lombok.Setter;
 )
 public class PropertyMustSatisfyVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Property#mustSatisfy";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm_updateWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm_updateWithMetaAnnotation.java
index fe9110a..ec168c6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm_updateWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm_updateWithMetaAnnotation.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.Property.mustSatisfy;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyMustSatisfyVm_updateWithMetaAnnotation {
     private final PropertyMustSatisfyVm propertyMustSatisfyVm;
 
 //tag::meta-annotation[]
+    @MemberSupport
     public PropertyMustSatisfyVm act(
             @MustSatisfyOfWorkingAgeMetaAnnotation                            // <.>
             @Parameter(optionality = Optionality.OPTIONAL)
@@ -50,6 +52,7 @@ public class PropertyMustSatisfyVm_updateWithMetaAnnotation {
         return propertyMustSatisfyVm;
     }
 //end::meta-annotation[]
+    @MemberSupport
     public Integer default0Act() {
         return propertyMustSatisfyVm.getCustomerAgePropertyUsingMetaAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm_updateWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm_updateWithMetaAnnotationOverridden.java
index 168dc45..733654e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm_updateWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm_updateWithMetaAnnotationOverridden.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.Property.mustSatisfy;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -38,6 +39,7 @@ public class PropertyMustSatisfyVm_updateWithMetaAnnotationOverridden {
     private final PropertyMustSatisfyVm propertyMustSatisfyVm;
 
 //tag::meta-annotation-overridden[]
+    @MemberSupport
     public PropertyMustSatisfyVm act(
             @MustSatisfyOfWorkingAgeMetaAnnotation                  // <.>
             @Parameter(
@@ -53,6 +55,7 @@ public class PropertyMustSatisfyVm_updateWithMetaAnnotationOverridden {
         return propertyMustSatisfyVm;
     }
 //end::meta-annotation-overridden[]
+    @MemberSupport
     public Integer default0Act() {
         return propertyMustSatisfyVm.getCustomerAgePropertyUsingMetaAnnotationButOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm_updateWithParameterLayout.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm_updateWithParameterLayout.java
index 0bedad4..85049ae 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm_updateWithParameterLayout.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/mustSatisfy/PropertyMustSatisfyVm_updateWithParameterLayout.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.Property.mustSatisfy;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -38,6 +39,7 @@ public class PropertyMustSatisfyVm_updateWithParameterLayout {
     private final PropertyMustSatisfyVm propertyMustSatisfyVm;
 
 //tag::annotation[]
+    @MemberSupport
     public PropertyMustSatisfyVm act(
             @Parameter(
                 mustSatisfy = OfWorkingAgeSpecification.class   // <.>
@@ -51,6 +53,7 @@ public class PropertyMustSatisfyVm_updateWithParameterLayout {
         return propertyMustSatisfyVm;
     }
 //end::annotation[]
+    @MemberSupport
     public Integer default0Act() {
         return propertyMustSatisfyVm.getCustomerAgePropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm.java
index 9ef0a57..4064f94 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm.java
@@ -30,11 +30,13 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -48,6 +50,7 @@ public class PropertyOptionalityVm implements HasAsciiDocDescription {
     // ...
 //end::class[]
 
+    @Title
     public String title() {
         return "Property#optionality";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm_updateMandatoryWithParameterLayout.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm_updateMandatoryWithParameterLayout.java
index f70af4c..9a80f25 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm_updateMandatoryWithParameterLayout.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm_updateMandatoryWithParameterLayout.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.Property.optionality;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyOptionalityVm_updateMandatoryWithParameterLayout {
     private final PropertyOptionalityVm propertyOptionalityVm;
 
 //tag::annotation[]
+    @MemberSupport
     public PropertyOptionalityVm act(
             @Parameter(
                 optionality = Optionality.MANDATORY             // <.>
@@ -52,6 +54,7 @@ public class PropertyOptionalityVm_updateMandatoryWithParameterLayout {
         return propertyOptionalityVm;
     }
 //end::annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyOptionalityVm.getMandatoryPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm_updateWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm_updateWithMetaAnnotation.java
index 73e8e31..a41b961 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm_updateWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm_updateWithMetaAnnotation.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.Property.optionality;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyOptionalityVm_updateWithMetaAnnotation {
     private final PropertyOptionalityVm propertyOptionalityVm;
 
 //tag::meta-annotation[]
+    @MemberSupport
     public PropertyOptionalityVm act(
             @OptionalityOptionalMetaAnnotation                            // <.>
             @Parameter(optionality = Optionality.OPTIONAL)
@@ -50,6 +52,7 @@ public class PropertyOptionalityVm_updateWithMetaAnnotation {
         return propertyOptionalityVm;
     }
 //end::meta-annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyOptionalityVm.getPropertyUsingMetaAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm_updateWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm_updateWithMetaAnnotationOverridden.java
index 471019d..e77990d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm_updateWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm_updateWithMetaAnnotationOverridden.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.Property.optionality;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyOptionalityVm_updateWithMetaAnnotationOverridden {
     private final PropertyOptionalityVm propertyOptionalityVm;
 
 //tag::meta-annotation-overridden[]
+    @MemberSupport
     public PropertyOptionalityVm act(
             @OptionalityOptionalMetaAnnotation                  // <.>
             @Parameter(
@@ -54,6 +56,7 @@ public class PropertyOptionalityVm_updateWithMetaAnnotationOverridden {
         return propertyOptionalityVm;
     }
 //end::meta-annotation-overridden[]
+    @MemberSupport
     public String default0Act() {
         return propertyOptionalityVm.getPropertyUsingMetaAnnotationButOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm_updateWithParameterLayout.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm_updateWithParameterLayout.java
index 86bf6c2..f1c50ad 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm_updateWithParameterLayout.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/optionality/PropertyOptionalityVm_updateWithParameterLayout.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.Property.optionality;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyOptionalityVm_updateWithParameterLayout {
     private final PropertyOptionalityVm propertyOptionalityVm;
 
 //tag::annotation[]
+    @MemberSupport
     public PropertyOptionalityVm act(
             @Parameter(
                 optionality = Optionality.OPTIONAL
@@ -52,6 +54,7 @@ public class PropertyOptionalityVm_updateWithParameterLayout {
         return propertyOptionalityVm;
     }
 //end::annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyOptionalityVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/PropertyProjectingVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/PropertyProjectingVm.java
index 73f66e5..0cfcdb8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/PropertyProjectingVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/projecting/PropertyProjectingVm.java
@@ -33,13 +33,15 @@ import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.domain.properties.Property.projecting.child.PropertyProjectingChildVm;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.domain.properties.Property.projecting.child.PropertyProjectingChildVm;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -52,6 +54,7 @@ import lombok.Setter;
 @NoArgsConstructor
 public class PropertyProjectingVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Property#projecting";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm.java
index 38559d8..677d40d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm.java
@@ -31,11 +31,13 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -47,6 +49,7 @@ import lombok.Setter;
 )
 public class PropertyRegexPatternVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Property#regexPattern";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm_updateWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm_updateWithMetaAnnotation.java
index 85330b3..6c56df2 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm_updateWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm_updateWithMetaAnnotation.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.Property.regexPattern;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyRegexPatternVm_updateWithMetaAnnotation {
     private final PropertyRegexPatternVm propertyRegexPatternVm;
 
 //tag::meta-annotation[]
+    @MemberSupport
     public PropertyRegexPatternVm act(
             @RegexPatternEmailComMetaAnnotation                            // <.>
             @Parameter(optionality = Optionality.OPTIONAL)
@@ -50,6 +52,7 @@ public class PropertyRegexPatternVm_updateWithMetaAnnotation {
         return propertyRegexPatternVm;
     }
 //end::meta-annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyRegexPatternVm.getEmailAddressPropertyUsingMetaAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm_updateWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm_updateWithMetaAnnotationOverridden.java
index bef85b6..99a0530 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm_updateWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm_updateWithMetaAnnotationOverridden.java
@@ -22,6 +22,7 @@ import java.util.regex.Pattern;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -40,6 +41,7 @@ public class PropertyRegexPatternVm_updateWithMetaAnnotationOverridden {
     private final PropertyRegexPatternVm propertyRegexPatternVm;
 
 //tag::meta-annotation-overridden[]
+    @MemberSupport
     public PropertyRegexPatternVm act(
             @RegexPatternEmailComMetaAnnotation                             // <.>
             @Parameter(
@@ -57,6 +59,7 @@ public class PropertyRegexPatternVm_updateWithMetaAnnotationOverridden {
         return propertyRegexPatternVm;
     }
 //end::meta-annotation-overridden[]
+    @MemberSupport
     public String default0Act() {
         return propertyRegexPatternVm.getEmailAddressPropertyUsingMetaAnnotationButOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm_updateWithParameterLayout.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm_updateWithParameterLayout.java
index b50eed3..a6422ce 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm_updateWithParameterLayout.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/regexPattern/PropertyRegexPatternVm_updateWithParameterLayout.java
@@ -22,6 +22,7 @@ import java.util.regex.Pattern;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -40,6 +41,7 @@ public class PropertyRegexPatternVm_updateWithParameterLayout {
     private final PropertyRegexPatternVm propertyRegexPatternVm;
 
 //tag::annotation[]
+    @MemberSupport
     public PropertyRegexPatternVm act(
             @Parameter(
                 regexPattern = "^\\w+@\\w+[.]com$"                  // <.>
@@ -55,6 +57,7 @@ public class PropertyRegexPatternVm_updateWithParameterLayout {
         return propertyRegexPatternVm;
     }
 //end::annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyRegexPatternVm.getEmailAddressPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/snapshot/PropertySnapshotVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/snapshot/PropertySnapshotVm.java
index ec00e57..310b7e9 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/snapshot/PropertySnapshotVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/snapshot/PropertySnapshotVm.java
@@ -30,12 +30,14 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Snapshot;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 @XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -47,7 +49,7 @@ import lombok.Setter;
 @NoArgsConstructor
 public class PropertySnapshotVm implements HasAsciiDocDescription {
 
-    public PropertySnapshotVm(String text) {
+    public PropertySnapshotVm(final String text) {
         this.text = text;
         this.excludedProperty = text;
         this.includedProperty = text;
@@ -56,6 +58,7 @@ public class PropertySnapshotVm implements HasAsciiDocDescription {
         this.metaAnnotatedPropertyOverridden = text;
     }
 
+    @Title
     public String title() {
         return "PropertySnapshotVm";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/snapshot/PropertySnapshotVm_takeXmlSnapshot.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/snapshot/PropertySnapshotVm_takeXmlSnapshot.java
index 7bb0673..4916710 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/snapshot/PropertySnapshotVm_takeXmlSnapshot.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/snapshot/PropertySnapshotVm_takeXmlSnapshot.java
@@ -21,6 +21,7 @@ package demoapp.dom.domain.properties.Property.snapshot;
 import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.services.xml.XmlService;
 import org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotService;
@@ -41,6 +42,7 @@ public class PropertySnapshotVm_takeXmlSnapshot {
 
     private final PropertySnapshotVm vm;
 //tag::class[]
+    @MemberSupport
     public Clob act(final String fileName) {
         val builder = xmlSnapshotService.builderFor(vm);
         val snapshot = builder.build();
@@ -49,6 +51,7 @@ public class PropertySnapshotVm_takeXmlSnapshot {
     }
     // ...
 //end::class[]
+    @MemberSupport
     public String default0Act() {
         return "snapshot.xml";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm.java
index de5328c..2bdfd02 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm.java
@@ -30,11 +30,13 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -46,6 +48,7 @@ import lombok.Setter;
 )
 public class PropertyLayoutCssClassVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "PropertyLayout#cssClass";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_updateWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_updateWithMetaAnnotation.java
index ce56a69..10f9265 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_updateWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_updateWithMetaAnnotation.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.PropertyLayout.cssClass;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyLayoutCssClassVm_updateWithMetaAnnotation {
     private final PropertyLayoutCssClassVm propertyLayoutCssClassVm;
 
 //tag::meta-annotation[]
+    @MemberSupport
     public PropertyLayoutCssClassVm act(
             @Parameter(optionality = Optionality.OPTIONAL)
             @CssClassRedMetaAnnotation                            // <.>
@@ -50,6 +52,7 @@ public class PropertyLayoutCssClassVm_updateWithMetaAnnotation {
         return propertyLayoutCssClassVm;
     }
 //end::meta-annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutCssClassVm.getPropertyUsingMetaAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_updateWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_updateWithMetaAnnotationOverridden.java
index 0f3da02..200b915 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_updateWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_updateWithMetaAnnotationOverridden.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.PropertyLayout.cssClass;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyLayoutCssClassVm_updateWithMetaAnnotationOverridden {
     private final PropertyLayoutCssClassVm propertyLayoutCssClassVm;
 
 //tag::meta-annotation-overridden[]
+    @MemberSupport
     public PropertyLayoutCssClassVm act(
             @CssClassRedMetaAnnotation                             // <.>
             @Parameter(optionality = Optionality.OPTIONAL)
@@ -53,6 +55,7 @@ public class PropertyLayoutCssClassVm_updateWithMetaAnnotationOverridden {
         return propertyLayoutCssClassVm;
     }
 //end::meta-annotation-overridden[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutCssClassVm.getPropertyUsingMetaAnnotationButOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_updateWithParameterLayout.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_updateWithParameterLayout.java
index dbdc2fa..95f5241 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_updateWithParameterLayout.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/cssClass/PropertyLayoutCssClassVm_updateWithParameterLayout.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.PropertyLayout.cssClass;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyLayoutCssClassVm_updateWithParameterLayout {
     private final PropertyLayoutCssClassVm propertyLayoutCssClassVm;
 
 //tag::annotation[]
+    @MemberSupport
     public PropertyLayoutCssClassVm act(
             @Parameter(optionality = Optionality.OPTIONAL)
             @ParameterLayout(
@@ -51,6 +53,7 @@ public class PropertyLayoutCssClassVm_updateWithParameterLayout {
         return propertyLayoutCssClassVm;
     }
 //end::annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutCssClassVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm.java
index 47a5db2..bfa64e7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm.java
@@ -30,11 +30,13 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -46,6 +48,7 @@ import lombok.Setter;
 )
 public class PropertyLayoutDescribedAsVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "PropertyLayout#describedAs";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_updateWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_updateWithMetaAnnotation.java
index f4bc6af..98d850e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_updateWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_updateWithMetaAnnotation.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.PropertyLayout.describedAs;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyLayoutDescribedAsVm_updateWithMetaAnnotation {
     private final PropertyLayoutDescribedAsVm propertyLayoutDescribedAsVm;
 
 //tag::meta-annotation[]
+    @MemberSupport
     public PropertyLayoutDescribedAsVm act(
             @Parameter(optionality = Optionality.OPTIONAL)
             @DescribedAsMetaAnnotation                            // <.>
@@ -50,6 +52,7 @@ public class PropertyLayoutDescribedAsVm_updateWithMetaAnnotation {
         return propertyLayoutDescribedAsVm;
     }
 //end::meta-annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutDescribedAsVm.getPropertyUsingMetaAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_updateWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_updateWithMetaAnnotationOverridden.java
index 6061c35..ad77462 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_updateWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_updateWithMetaAnnotationOverridden.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.PropertyLayout.describedAs;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyLayoutDescribedAsVm_updateWithMetaAnnotationOverridden {
     private final PropertyLayoutDescribedAsVm propertyLayoutDescribedAsVm;
 
 //tag::meta-annotation-overridden[]
+    @MemberSupport
     public PropertyLayoutDescribedAsVm act(
             @DescribedAsMetaAnnotation                                      // <.>
             @Parameter(optionality = Optionality.OPTIONAL)
@@ -51,6 +53,7 @@ public class PropertyLayoutDescribedAsVm_updateWithMetaAnnotationOverridden {
         return propertyLayoutDescribedAsVm;
     }
 //end::meta-annotation-overridden[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutDescribedAsVm.getPropertyUsingMetaAnnotationButOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_updateWithParameterLayout.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_updateWithParameterLayout.java
index 34ce644..d3c4486 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_updateWithParameterLayout.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/describedAs/PropertyLayoutDescribedAsVm_updateWithParameterLayout.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.PropertyLayout.describedAs;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyLayoutDescribedAsVm_updateWithParameterLayout {
     private final PropertyLayoutDescribedAsVm propertyLayoutDescribedAsVm;
 
 //tag::annotation[]
+    @MemberSupport
     public PropertyLayoutDescribedAsVm act(
             @Parameter(optionality = Optionality.OPTIONAL)
             @ParameterLayout(
@@ -50,6 +52,7 @@ public class PropertyLayoutDescribedAsVm_updateWithParameterLayout {
         return propertyLayoutDescribedAsVm;
     }
 //end::annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutDescribedAsVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm.java
index 264b204..d83643f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm.java
@@ -35,14 +35,16 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.domain.properties.PropertyLayout.hidden.child.PropertyLayoutHiddenChildVm;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.domain.properties.PropertyLayout.hidden.child.PropertyLayoutHiddenChildVm;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -55,6 +57,7 @@ import lombok.Setter;
 @NoArgsConstructor
 public class PropertyLayoutHiddenVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "PropertyLayout#hidden";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm_returnsChildren.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm_returnsChildren.java
index e843694..6e35747 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm_returnsChildren.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/PropertyLayoutHiddenVm_returnsChildren.java
@@ -21,6 +21,7 @@ package demoapp.dom.domain.properties.PropertyLayout.hidden;
 import java.util.List;
 
 import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -36,12 +37,10 @@ public class PropertyLayoutHiddenVm_returnsChildren {
     private final PropertyLayoutHiddenVm propertyLayoutHiddenVm;
 
 //tag::meta-annotation[]
+    @MemberSupport
     public List<PropertyLayoutHiddenChildVm> act() {
         return propertyLayoutHiddenVm.getChildren();
     }
 //end::meta-annotation[]
-    public String default0Act() {
-        return propertyLayoutHiddenVm.getPropertyUsingMetaAnnotation();
-    }
 
 }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/child/PropertyLayoutHiddenChildVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/child/PropertyLayoutHiddenChildVm.java
index 05547e5..6ec3b6c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/child/PropertyLayoutHiddenChildVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/hidden/child/PropertyLayoutHiddenChildVm.java
@@ -30,14 +30,16 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.domain.properties.PropertyLayout.hidden.PropertyLayoutHiddenVm;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.domain.properties.PropertyLayout.hidden.PropertyLayoutHiddenVm;
+
 //tag::class[]
 @XmlRootElement(name = "child")
 @XmlType
@@ -49,7 +51,7 @@ import lombok.Setter;
 @NoArgsConstructor
 public class PropertyLayoutHiddenChildVm implements HasAsciiDocDescription {
 
-    public PropertyLayoutHiddenChildVm(String value, PropertyLayoutHiddenVm parent) {
+    public PropertyLayoutHiddenChildVm(final String value, final PropertyLayoutHiddenVm parent) {
         setPropertyHiddenNowhere(value);
         setPropertyHiddenEverywhere(value);
         setPropertyHiddenAnywhere(value);
@@ -64,6 +66,7 @@ public class PropertyLayoutHiddenChildVm implements HasAsciiDocDescription {
         setPropertyHiddenReferencesParent(parent);
     }
 
+    @Title
     public String title() {
         return "PropertyLayout#hidden (child object)";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm.java
index 70c1188..15aaed9 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm.java
@@ -31,11 +31,13 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -47,6 +49,7 @@ import lombok.Setter;
 )
 public class PropertyLayoutLabelPositionVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "PropertyLayout#labelPosition";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantLeft.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantLeft.java
index d4e740a..7c7d1b4 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantLeft.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantLeft.java
@@ -21,6 +21,7 @@ package demoapp.dom.domain.properties.PropertyLayout.labelPosition;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -40,6 +41,7 @@ public class PropertyLayoutLabelPositionVm_updateVariantLeft {
     private final PropertyLayoutLabelPositionVm propertyLayoutLabelPositionVm;
 
 //tag::annotation[]
+    @MemberSupport
     public PropertyLayoutLabelPositionVm act(
             @Parameter(optionality = Optionality.OPTIONAL)
             @ParameterLayout(
@@ -52,6 +54,7 @@ public class PropertyLayoutLabelPositionVm_updateVariantLeft {
         return propertyLayoutLabelPositionVm;
     }
 //end::annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutLabelPositionVm.getPropertyLabelPositionLeft();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantNone.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantNone.java
index cf0afc4..e8f6b1a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantNone.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantNone.java
@@ -21,6 +21,7 @@ package demoapp.dom.domain.properties.PropertyLayout.labelPosition;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -40,6 +41,7 @@ public class PropertyLayoutLabelPositionVm_updateVariantNone {
     private final PropertyLayoutLabelPositionVm propertyLayoutLabelPositionVm;
 
 //tag::annotation[]
+    @MemberSupport
     public PropertyLayoutLabelPositionVm act(
             @Parameter(optionality = Optionality.OPTIONAL)
             @ParameterLayout(
@@ -52,6 +54,7 @@ public class PropertyLayoutLabelPositionVm_updateVariantNone {
         return propertyLayoutLabelPositionVm;
     }
 //end::annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutLabelPositionVm.getPropertyLabelPositionNone();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantNotSpecified.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantNotSpecified.java
index 3c51e14..e8908b1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantNotSpecified.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantNotSpecified.java
@@ -21,6 +21,7 @@ package demoapp.dom.domain.properties.PropertyLayout.labelPosition;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -40,6 +41,7 @@ public class PropertyLayoutLabelPositionVm_updateVariantNotSpecified {
     private final PropertyLayoutLabelPositionVm propertyLayoutLabelPositionVm;
 
 //tag::annotation[]
+    @MemberSupport
     public PropertyLayoutLabelPositionVm act(
             @Parameter(optionality = Optionality.OPTIONAL)
             @ParameterLayout(
@@ -52,6 +54,7 @@ public class PropertyLayoutLabelPositionVm_updateVariantNotSpecified {
         return propertyLayoutLabelPositionVm;
     }
 //end::annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutLabelPositionVm.getPropertyLabelPositionNotSpecified();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantRight.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantRight.java
index b6048b2..30f69dc 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantRight.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantRight.java
@@ -21,6 +21,7 @@ package demoapp.dom.domain.properties.PropertyLayout.labelPosition;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -40,6 +41,7 @@ public class PropertyLayoutLabelPositionVm_updateVariantRight {
     private final PropertyLayoutLabelPositionVm propertyLayoutLabelPositionVm;
 
 //tag::annotation[]
+    @MemberSupport
     public PropertyLayoutLabelPositionVm act(
             @Parameter(optionality = Optionality.OPTIONAL)
             @ParameterLayout(
@@ -52,6 +54,7 @@ public class PropertyLayoutLabelPositionVm_updateVariantRight {
         return propertyLayoutLabelPositionVm;
     }
 //end::annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutLabelPositionVm.getPropertyLabelPositionRight();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantTop.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantTop.java
index 35ecdac..2054196 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantTop.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateVariantTop.java
@@ -21,6 +21,7 @@ package demoapp.dom.domain.properties.PropertyLayout.labelPosition;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -40,6 +41,7 @@ public class PropertyLayoutLabelPositionVm_updateVariantTop {
     private final PropertyLayoutLabelPositionVm propertyLayoutLabelPositionVm;
 
 //tag::annotation[]
+    @MemberSupport
     public PropertyLayoutLabelPositionVm act(
             @Parameter(optionality = Optionality.OPTIONAL)
             @ParameterLayout(
@@ -52,6 +54,7 @@ public class PropertyLayoutLabelPositionVm_updateVariantTop {
         return propertyLayoutLabelPositionVm;
     }
 //end::annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutLabelPositionVm.getPropertyLabelPositionTop();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateWithMetaAnnotation.java
index 35873aa..229fb1e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateWithMetaAnnotation.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.PropertyLayout.labelPosition;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyLayoutLabelPositionVm_updateWithMetaAnnotation {
     private final PropertyLayoutLabelPositionVm propertyLayoutLabelPositionVm;
 
 //tag::meta-annotation[]
+    @MemberSupport
     public PropertyLayoutLabelPositionVm act(
             @Parameter(optionality = Optionality.OPTIONAL)
             @LabelPositionTopMetaAnnotation                            // <.>
@@ -50,6 +52,7 @@ public class PropertyLayoutLabelPositionVm_updateWithMetaAnnotation {
         return propertyLayoutLabelPositionVm;
     }
 //end::meta-annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutLabelPositionVm.getPropertyUsingMetaAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateWithMetaAnnotationOverridden.java
index 130a8a2..60af78c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateWithMetaAnnotationOverridden.java
@@ -21,6 +21,7 @@ package demoapp.dom.domain.properties.PropertyLayout.labelPosition;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -40,6 +41,7 @@ public class PropertyLayoutLabelPositionVm_updateWithMetaAnnotationOverridden {
     private final PropertyLayoutLabelPositionVm propertyLayoutLabelPositionVm;
 
 //tag::meta-annotation-overridden[]
+    @MemberSupport
     public PropertyLayoutLabelPositionVm act(
             @LabelPositionTopMetaAnnotation                             // <.>
             @Parameter(optionality = Optionality.OPTIONAL)
@@ -53,6 +55,7 @@ public class PropertyLayoutLabelPositionVm_updateWithMetaAnnotationOverridden {
         return propertyLayoutLabelPositionVm;
     }
 //end::meta-annotation-overridden[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutLabelPositionVm.getPropertyUsingMetaAnnotationButOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateWithParameterLayout.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateWithParameterLayout.java
index 3b5ab4c..c02a7ee 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateWithParameterLayout.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/labelPosition/PropertyLayoutLabelPositionVm_updateWithParameterLayout.java
@@ -21,6 +21,7 @@ package demoapp.dom.domain.properties.PropertyLayout.labelPosition;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -40,6 +41,7 @@ public class PropertyLayoutLabelPositionVm_updateWithParameterLayout {
     private final PropertyLayoutLabelPositionVm propertyLayoutLabelPositionVm;
 
 //tag::annotation[]
+    @MemberSupport
     public PropertyLayoutLabelPositionVm act(
             @Parameter(optionality = Optionality.OPTIONAL)
             @ParameterLayout(
@@ -52,6 +54,7 @@ public class PropertyLayoutLabelPositionVm_updateWithParameterLayout {
         return propertyLayoutLabelPositionVm;
     }
 //end::annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutLabelPositionVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm.java
index 3597c10..a18777b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm.java
@@ -30,11 +30,13 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -46,6 +48,7 @@ import lombok.Setter;
 )
 public class PropertyLayoutMultiLineVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "PropertyLayout#multiLine";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_updateWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_updateWithMetaAnnotation.java
index 07e5760..f863188 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_updateWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_updateWithMetaAnnotation.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.PropertyLayout.multiLine;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyLayoutMultiLineVm_updateWithMetaAnnotation {
     private final PropertyLayoutMultiLineVm propertyLayoutMultiLineVm;
 
 //tag::meta-annotation[]
+    @MemberSupport
     public PropertyLayoutMultiLineVm act(
             @Parameter(optionality = Optionality.OPTIONAL)
             @MultiLine10MetaAnnotation                            // <.>
@@ -50,6 +52,7 @@ public class PropertyLayoutMultiLineVm_updateWithMetaAnnotation {
         return propertyLayoutMultiLineVm;
     }
 //end::meta-annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutMultiLineVm.getPropertyUsingMetaAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_updateWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_updateWithMetaAnnotationOverridden.java
index 8fd6d6b..2bc8634 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_updateWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_updateWithMetaAnnotationOverridden.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.PropertyLayout.multiLine;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyLayoutMultiLineVm_updateWithMetaAnnotationOverridden {
     private final PropertyLayoutMultiLineVm propertyLayoutMultiLineVm;
 
 //tag::meta-annotation-overridden[]
+    @MemberSupport
     public PropertyLayoutMultiLineVm act(
             @MultiLine10MetaAnnotation                            // <.>
             @Parameter(optionality = Optionality.OPTIONAL)
@@ -53,6 +55,7 @@ public class PropertyLayoutMultiLineVm_updateWithMetaAnnotationOverridden {
         return propertyLayoutMultiLineVm;
     }
 //end::meta-annotation-overridden[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutMultiLineVm.getPropertyUsingMetaAnnotationButOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_updateWithParameterLayout.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_updateWithParameterLayout.java
index 9d7cc0f..a028932 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_updateWithParameterLayout.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/multiLine/PropertyLayoutMultiLineVm_updateWithParameterLayout.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.PropertyLayout.multiLine;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyLayoutMultiLineVm_updateWithParameterLayout {
     private final PropertyLayoutMultiLineVm propertyLayoutMultiLineVm;
 
 //tag::annotation[]
+    @MemberSupport
     public PropertyLayoutMultiLineVm act(
             @Parameter(optionality = Optionality.OPTIONAL)
             @ParameterLayout(
@@ -51,6 +53,7 @@ public class PropertyLayoutMultiLineVm_updateWithParameterLayout {
         return propertyLayoutMultiLineVm;
     }
 //end::annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutMultiLineVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm.java
index 175ce6d..3f4f154 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm.java
@@ -30,6 +30,7 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -47,6 +48,7 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 )
 public class PropertyLayoutNamedVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "PropertyLayout#named";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_updateWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_updateWithMetaAnnotation.java
index 1acd1d8..a6ca9d1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_updateWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_updateWithMetaAnnotation.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.PropertyLayout.named;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyLayoutNamedVm_updateWithMetaAnnotation {
     private final PropertyLayoutNamedVm propertyLayoutNamedVm;
 
 //tag::meta-annotation[]
+    @MemberSupport
     public PropertyLayoutNamedVm act(
             @Parameter(optionality = Optionality.OPTIONAL)
             @NamedMetaAnnotation                            // <.>
@@ -50,6 +52,7 @@ public class PropertyLayoutNamedVm_updateWithMetaAnnotation {
         return propertyLayoutNamedVm;
     }
 //end::meta-annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutNamedVm.getPropertyUsingMetaAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_updateWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_updateWithMetaAnnotationOverridden.java
index 4b14ed9..027eaa3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_updateWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_updateWithMetaAnnotationOverridden.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.PropertyLayout.named;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyLayoutNamedVm_updateWithMetaAnnotationOverridden {
     private final PropertyLayoutNamedVm propertyLayoutNamedVm;
 
 //tag::meta-annotation-overridden[]
+    @MemberSupport
     public PropertyLayoutNamedVm act(
             @NamedMetaAnnotation                                        // <.>
             @Parameter(optionality = Optionality.OPTIONAL)
@@ -52,6 +54,7 @@ public class PropertyLayoutNamedVm_updateWithMetaAnnotationOverridden {
         return propertyLayoutNamedVm;
     }
 //end::meta-annotation-overridden[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutNamedVm.getPropertyUsingMetaAnnotationButOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_updateWithParameterLayout.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_updateWithParameterLayout.java
index 0f4b881..1bac6f7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_updateWithParameterLayout.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/named/PropertyLayoutNamedVm_updateWithParameterLayout.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.PropertyLayout.named;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyLayoutNamedVm_updateWithParameterLayout {
     private final PropertyLayoutNamedVm propertyLayoutNamedVm;
 
 //tag::annotation[]
+    @MemberSupport
     public PropertyLayoutNamedVm act(
             @Parameter(optionality = Optionality.OPTIONAL)
             @ParameterLayout(
@@ -51,6 +53,7 @@ public class PropertyLayoutNamedVm_updateWithParameterLayout {
         return propertyLayoutNamedVm;
     }
 //end::annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutNamedVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/navigable/FileNodeType.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/navigable/FileNodeType.java
index a69d884..1e62383 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/navigable/FileNodeType.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/navigable/FileNodeType.java
@@ -18,6 +18,7 @@
  */
 package demoapp.dom.domain.properties.PropertyLayout.navigable;
 
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.util.Enums;
 
 //tag::class[]
@@ -27,6 +28,7 @@ public enum FileNodeType {
     DIRECTORY,
     FILE;
 
+    @Title
     public String title() {
         return Enums.getFriendlyNameOf(this);   // <.>
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/navigable/FileNodeVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/navigable/FileNodeVm.java
index df7343d..5099089 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/navigable/FileNodeVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/navigable/FileNodeVm.java
@@ -27,25 +27,28 @@ import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.LabelPosition;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Navigable;
+import org.apache.isis.applib.annotation.ObjectSupport;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.graph.tree.TreeNode;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 import lombok.ToString;
 import lombok.val;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 @XmlRootElement(name="FileNode")
 @DomainObject(nature=Nature.VIEW_MODEL, logicalTypeName = "demo.FileNode")
 @ToString
 @NoArgsConstructor
 public class FileNodeVm implements HasAsciiDocDescription {
 
-    public FileNodeVm(File file) {
+    public FileNodeVm(final File file) {
         this.path = file.getAbsolutePath();
         this.type = file.isDirectory()
                         ? file.getParent() == null  // ie root
@@ -55,6 +58,7 @@ public class FileNodeVm implements HasAsciiDocDescription {
     }
 
 //tag::title[]
+    @Title
     public String title() {
         if(this.path == null) {
             return "(root)";
@@ -65,6 +69,7 @@ public class FileNodeVm implements HasAsciiDocDescription {
 //end::title[]
 
 //tag::iconName[]
+    @ObjectSupport
     public String iconName() {
         return type!=null ? type.name() : "";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm.java
index 88fcee1..7dcc14f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm.java
@@ -34,13 +34,15 @@ import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.RenderDay;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.jaxb.JodaTimeJaxbAdapters;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -53,11 +55,12 @@ import lombok.Setter;
 @NoArgsConstructor
 public class PropertyLayoutRenderDayVm implements HasAsciiDocDescription {
 
-    public PropertyLayoutRenderDayVm(LocalDate localDate) {
+    public PropertyLayoutRenderDayVm(final LocalDate localDate) {
         startDate = localDate;
         endDate = startDate.plusDays(7);
     }
 
+    @Title
     public String title() {
         return "PropertyLayout#renderDay";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_downloadAsXml.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_downloadAsXml.java
index da914b6..b456a66 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_downloadAsXml.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_downloadAsXml.java
@@ -21,6 +21,7 @@ package demoapp.dom.domain.properties.PropertyLayout.renderDay;
 import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.value.Clob;
@@ -38,10 +39,13 @@ public class PropertyLayoutRenderDayVm_downloadAsXml {
 
     private final PropertyLayoutRenderDayVm propertyLayoutRenderDayVm;
 
+    @MemberSupport
     public Clob act(final String fileName) {
         val xml = jaxbService.toXml(propertyLayoutRenderDayVm);
         return Clob.of(fileName, NamedWithMimeType.CommonMimeType.XML, xml);
     }
+
+    @MemberSupport
     public String default0Act() {
         return "PropertyLayoutRenderVm.xml";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_updateEndDateWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_updateEndDateWithMetaAnnotation.java
index b14db1b..02f8080 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_updateEndDateWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_updateEndDateWithMetaAnnotation.java
@@ -22,6 +22,7 @@ import java.time.LocalDate;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -41,6 +42,7 @@ public class PropertyLayoutRenderDayVm_updateEndDateWithMetaAnnotation {
     private final PropertyLayoutRenderDayVm propertyLayoutRenderDayVm;
 
 //tag::meta-annotation[]
+    @MemberSupport
     public PropertyLayoutRenderDayVm act(
             @Parameter(optionality = Optionality.OPTIONAL)
             @RenderDayMetaAnnotationEndDateExclusive        // <.>
@@ -52,6 +54,7 @@ public class PropertyLayoutRenderDayVm_updateEndDateWithMetaAnnotation {
         return propertyLayoutRenderDayVm;
     }
 //end::meta-annotation[]
+    @MemberSupport
     public LocalDate default0Act() {
         return propertyLayoutRenderDayVm.getEndDateUsingMetaAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_updateEndDateWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_updateEndDateWithMetaAnnotationOverridden.java
index 636a4da..ae51e84 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_updateEndDateWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_updateEndDateWithMetaAnnotationOverridden.java
@@ -22,6 +22,7 @@ import java.time.LocalDate;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -42,6 +43,7 @@ public class PropertyLayoutRenderDayVm_updateEndDateWithMetaAnnotationOverridden
     private final PropertyLayoutRenderDayVm propertyLayoutRenderDayVm;
 
 //tag::meta-annotation-overridden[]
+    @MemberSupport
     public PropertyLayoutRenderDayVm act(
             @RenderDayMetaAnnotationStartDateInclusive          // <.>
             @Parameter(optionality = Optionality.OPTIONAL)
@@ -56,6 +58,7 @@ public class PropertyLayoutRenderDayVm_updateEndDateWithMetaAnnotationOverridden
         return propertyLayoutRenderDayVm;
     }
 //end::meta-annotation-overridden[]
+    @MemberSupport
     public LocalDate default0Act() {
         return propertyLayoutRenderDayVm.getEndDateUsingMetaAnnotationButOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_updateEndDateWithParameterLayout.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_updateEndDateWithParameterLayout.java
index 144a860..b76dcf6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_updateEndDateWithParameterLayout.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/renderDay/PropertyLayoutRenderDayVm_updateEndDateWithParameterLayout.java
@@ -22,6 +22,7 @@ import java.time.LocalDate;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -42,6 +43,7 @@ public class PropertyLayoutRenderDayVm_updateEndDateWithParameterLayout {
     private final PropertyLayoutRenderDayVm propertyLayoutRenderDayVm;
 
 //tag::annotation[]
+    @MemberSupport
     public PropertyLayoutRenderDayVm act(
             @Parameter(optionality = Optionality.OPTIONAL)
             @ParameterLayout(
@@ -54,6 +56,7 @@ public class PropertyLayoutRenderDayVm_updateEndDateWithParameterLayout {
         return propertyLayoutRenderDayVm;
     }
 //end::annotation[]
+    @MemberSupport
     public LocalDate default0Act() {
         return propertyLayoutRenderDayVm.getEndDate();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm.java
index a88954b..c7fa6c6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PropertyLayoutRepaintingVm.java
@@ -31,13 +31,15 @@ import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Repainting;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.value.Blob;
 import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.annotations.PdfJsViewer;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -48,6 +50,7 @@ import lombok.Setter;
 )
 public class PropertyLayoutRepaintingVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "PropertyLayout#repainting";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm.java
index b6263a4..53bc8b8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm.java
@@ -30,11 +30,13 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -46,6 +48,7 @@ import lombok.Setter;
 )
 public class PropertyLayoutTypicalLengthVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "PropertyLayout#typicalLength";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_updateWithMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_updateWithMetaAnnotation.java
index a0ab77c..26a0269 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_updateWithMetaAnnotation.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_updateWithMetaAnnotation.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.PropertyLayout.typicalLength;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyLayoutTypicalLengthVm_updateWithMetaAnnotation {
     private final PropertyLayoutTypicalLengthVm propertyLayoutTypicalLengthVm;
 
 //tag::meta-annotation[]
+    @MemberSupport
     public PropertyLayoutTypicalLengthVm act(
             @Parameter(optionality = Optionality.OPTIONAL)
             @TypicalLengthMetaAnnotation                            // <.>
@@ -50,6 +52,7 @@ public class PropertyLayoutTypicalLengthVm_updateWithMetaAnnotation {
         return propertyLayoutTypicalLengthVm;
     }
 //end::meta-annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutTypicalLengthVm.getPropertyUsingMetaAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_updateWithMetaAnnotationOverridden.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_updateWithMetaAnnotationOverridden.java
index 574fad1..baf8989 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_updateWithMetaAnnotationOverridden.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_updateWithMetaAnnotationOverridden.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.PropertyLayout.typicalLength;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyLayoutTypicalLengthVm_updateWithMetaAnnotationOverridden {
     private final PropertyLayoutTypicalLengthVm propertyLayoutTypicalLengthVm;
 
 //tag::meta-annotation-overridden[]
+    @MemberSupport
     public PropertyLayoutTypicalLengthVm act(
             @TypicalLengthMetaAnnotation                            // <.>
             @Parameter(optionality = Optionality.OPTIONAL)
@@ -52,6 +54,7 @@ public class PropertyLayoutTypicalLengthVm_updateWithMetaAnnotationOverridden {
         return propertyLayoutTypicalLengthVm;
     }
 //end::meta-annotation-overridden[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutTypicalLengthVm.getPropertyUsingMetaAnnotationButOverridden();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_updateWithParameterLayout.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_updateWithParameterLayout.java
index 0bb27bc..e2a9f43 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_updateWithParameterLayout.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/typicalLength/PropertyLayoutTypicalLengthVm_updateWithParameterLayout.java
@@ -20,6 +20,7 @@ package demoapp.dom.domain.properties.PropertyLayout.typicalLength;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -39,6 +40,7 @@ public class PropertyLayoutTypicalLengthVm_updateWithParameterLayout {
     private final PropertyLayoutTypicalLengthVm propertyLayoutTypicalLengthVm;
 
 //tag::annotation[]
+    @MemberSupport
     public PropertyLayoutTypicalLengthVm act(
             @Parameter(optionality = Optionality.OPTIONAL)
             @ParameterLayout(
@@ -51,6 +53,7 @@ public class PropertyLayoutTypicalLengthVm_updateWithParameterLayout {
         return propertyLayoutTypicalLengthVm;
     }
 //end::annotation[]
+    @MemberSupport
     public String default0Act() {
         return propertyLayoutTypicalLengthVm.getPropertyUsingAnnotation();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/featured/customui/vm/WhereInTheWorldMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/featured/customui/vm/WhereInTheWorldMenu.java
index 2b46c22..8a81d8c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/featured/customui/vm/WhereInTheWorldMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/featured/customui/vm/WhereInTheWorldMenu.java
@@ -26,6 +26,7 @@ import javax.inject.Inject;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -53,8 +54,7 @@ public class WhereInTheWorldMenu {
     )
     public WhereInTheWorldVm whereInTheWorld(
             final String address,
-            @Zoom final int zoom
-    ){
+            @Zoom final int zoom) {
         val vm = new WhereInTheWorldVm();
 
         val latLng = geoapifyClient.geocode(address);
@@ -66,13 +66,17 @@ public class WhereInTheWorldMenu {
         return vm;
     }
 //end::action[]
-
+    @MemberSupport
     public List<String> choices0WhereInTheWorld() {
         return Arrays.asList("Malvern, UK", "Vienna, Austria", "Leeuwarden, Netherlands", "Dublin, Ireland");
     }
+
+    @MemberSupport
     public String default0WhereInTheWorld() {
         return "Malvern, UK";
     }
+
+    @MemberSupport
     public int default1WhereInTheWorld() {
         return 14;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/featured/layout/describedAs/DescribedAsVm.java b/examples/demo/domain/src/main/java/demoapp/dom/featured/layout/describedAs/DescribedAsVm.java
index 5138c9c..b84db77 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/featured/layout/describedAs/DescribedAsVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/featured/layout/describedAs/DescribedAsVm.java
@@ -28,12 +28,12 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.CollectionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
@@ -42,6 +42,7 @@ import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.value.Markup;
 
 import lombok.Getter;
@@ -56,6 +57,7 @@ import demoapp.dom.domain.actions.progmodel.assoc.DemoItem;
 @DomainObject(nature=Nature.VIEW_MODEL, logicalTypeName = "demo.Tooltip")
 public class DescribedAsVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Tooltip Demo";
     }
@@ -91,13 +93,13 @@ public class DescribedAsVm implements HasAsciiDocDescription {
             @Parameter(optionality=Optionality.MANDATORY)
             @ParameterLayout(
                     named="first",
-                    describedAs="This is a mandatory parameter with a tooltip.")
+                    describedAs="This is a mandatory parameter with a tooltip.") final
             String firstArg,
 
             @Parameter(optionality=Optionality.OPTIONAL)
             @ParameterLayout(
                     named="second",
-                    describedAs="This is an optional parameter with a tooltip.")
+                    describedAs="This is an optional parameter with a tooltip.") final
             String secondArg
 
             ){
@@ -106,7 +108,7 @@ public class DescribedAsVm implements HasAsciiDocDescription {
     }
 
     @MemberSupport
-    public String validateBiArgAction(String firstArg, String secondArg) {
+    public String validateBiArgAction(final String firstArg, final String secondArg) {
         return "always fail for demonstration";
     }
 
@@ -120,13 +122,13 @@ public class DescribedAsVm implements HasAsciiDocDescription {
             @Parameter(optionality=Optionality.MANDATORY)
             @ParameterLayout(
                     named="first",
-                    describedAs="This is a mandatory parameter with a tooltip.")
+                    describedAs="This is a mandatory parameter with a tooltip.") final
             String firstArg,
 
             @Parameter(optionality=Optionality.OPTIONAL)
             @ParameterLayout(
                     named="second",
-                    describedAs="This is an optional parameter with a tooltip.")
+                    describedAs="This is an optional parameter with a tooltip.") final
             String secondArg
 
             ){
@@ -135,7 +137,7 @@ public class DescribedAsVm implements HasAsciiDocDescription {
     }
 
     @MemberSupport
-    public String validateBiArgActionWithConfirm(String firstArg, String secondArg) {
+    public String validateBiArgActionWithConfirm(final String firstArg, final String secondArg) {
         return "always fail for demonstration";
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/featured/layout/tabs/TabDemo.java b/examples/demo/domain/src/main/java/demoapp/dom/featured/layout/tabs/TabDemo.java
index 05023cd..2076474 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/featured/layout/tabs/TabDemo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/featured/layout/tabs/TabDemo.java
@@ -26,19 +26,23 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 @XmlRootElement(name = "Demo")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(nature=Nature.VIEW_MODEL, logicalTypeName = "demo.Tab")
 public class TabDemo implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Tab Demo";
     }
@@ -60,7 +64,7 @@ public class TabDemo implements HasAsciiDocDescription {
     // -- DEMO FIELD 1
 
     @Getter @Setter private String field1 = "field 1";
-
+    @MemberSupport
     public boolean hideField1() {
         return hidden;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage.java b/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage.java
index 3466a53..8c7cd89 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage.java
@@ -23,6 +23,7 @@ import javax.inject.Inject;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.HomePage;
 import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.services.user.UserService;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 
@@ -38,6 +39,7 @@ import demoapp.dom._infra.resources.AsciiDocReaderService;
 public class DemoHomePage
         implements HasAsciiDocDescription {                     // <.>
 
+    @Title
     public String title() {                                     // <.>
         return "Hello, " + userService.currentUserNameElseNobody();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/core/errorreportingservice/ErrorReportingServiceDemoVm.java b/examples/demo/domain/src/main/java/demoapp/dom/services/core/errorreportingservice/ErrorReportingServiceDemoVm.java
index 30c8952..f867bed 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/core/errorreportingservice/ErrorReportingServiceDemoVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/core/errorreportingservice/ErrorReportingServiceDemoVm.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Title;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 
@@ -37,6 +38,7 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 @DomainObject(nature=Nature.VIEW_MODEL, logicalTypeName = "demo.ErrorReportingServiceDemoVm", editing=Editing.ENABLED)
 public class ErrorReportingServiceDemoVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Error Reporting Service demo";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/core/eventbusservice/EventBusServiceDemoVm.java b/examples/demo/domain/src/main/java/demoapp/dom/services/core/eventbusservice/EventBusServiceDemoVm.java
index b86f5e6..8f8e930 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/core/eventbusservice/EventBusServiceDemoVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/core/eventbusservice/EventBusServiceDemoVm.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.annotation.ActionLayout.Position;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.services.eventbus.EventBusService;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
@@ -38,6 +39,7 @@ public class EventBusServiceDemoVm implements HasAsciiDocDescription {
     @Inject private EventLogEntryJdoRepository repository;
     @Inject private EventBusService eventBusService;
 
+    @Title
     public String title() {
         return "Event Demo";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/core/eventbusservice/EventLogEntryJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/services/core/eventbusservice/EventLogEntryJdo.java
index bc18273..efafe05 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/core/eventbusservice/EventLogEntryJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/core/eventbusservice/EventLogEntryJdo.java
@@ -33,6 +33,7 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.Title;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -46,12 +47,13 @@ import demoapp.dom.services.core.eventbusservice.EventBusServiceDemoVm.UiButtonE
 @DomainObject
 public class EventLogEntryJdo {
 
-    public static EventLogEntryJdo of(UiButtonEvent even) {
+    public static EventLogEntryJdo of(final UiButtonEvent even) {
         val x = new EventLogEntryJdo();
         x.setEvent("Button clicked " + LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_TIME));
         return x;
     }
 
+    @Title
     public String title() {
         return getEvent();
     }
@@ -77,7 +79,7 @@ public class EventLogEntryJdo {
 
     @Action
     @ActionLayout(associateWith = "acknowledge")
-    public EventLogEntryJdo acknowledge(Acknowledge acknowledge) {
+    public EventLogEntryJdo acknowledge(final Acknowledge acknowledge) {
         setAcknowledge(acknowledge);
         return this;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/core/eventbusservice/EventLogEntryJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/services/core/eventbusservice/EventLogEntryJpa.java
index b0ddbef..44d5a08 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/core/eventbusservice/EventLogEntryJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/core/eventbusservice/EventLogEntryJpa.java
@@ -30,6 +30,7 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.Title;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -42,12 +43,13 @@ import demoapp.dom.services.core.eventbusservice.EventBusServiceDemoVm.UiButtonE
 @DomainObject(logicalTypeName = "demo.EventLogEntryJpa")
 public class EventLogEntryJpa {
 
-    public static EventLogEntryJpa of(UiButtonEvent even) {
+    public static EventLogEntryJpa of(final UiButtonEvent even) {
         val x = new EventLogEntryJpa();
         x.setEvent("Button clicked " + LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_TIME));
         return x;
     }
 
+    @Title
     public String title() {
         return getEvent();
     }
@@ -73,7 +75,7 @@ public class EventLogEntryJpa {
 
     @Action
     @ActionLayout(associateWith = "acknowledge")
-    public EventLogEntryJpa acknowledge(Acknowledge acknowledge) {
+    public EventLogEntryJpa acknowledge(final Acknowledge acknowledge) {
         setAcknowledge(acknowledge);
         return this;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/core/messageservice/MessageServiceDemoVm.java b/examples/demo/domain/src/main/java/demoapp/dom/services/core/messageservice/MessageServiceDemoVm.java
index 9fe6c12..553aeaa 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/core/messageservice/MessageServiceDemoVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/core/messageservice/MessageServiceDemoVm.java
@@ -25,6 +25,7 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.ActionLayout.Position;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.services.message.MessageService;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
@@ -34,6 +35,7 @@ public class MessageServiceDemoVm implements HasAsciiDocDescription {
 
     @Inject private MessageService messageService;
 
+    @Title
     public String title() {
         return "Message Demo";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/WrapperFactoryEntity_mixinUpdatePropertyAsync.java b/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/WrapperFactoryEntity_mixinUpdatePropertyAsync.java
index 61656d2..af463e8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/WrapperFactoryEntity_mixinUpdatePropertyAsync.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/WrapperFactoryEntity_mixinUpdatePropertyAsync.java
@@ -22,6 +22,7 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.applib.services.wrapper.control.AsyncControl;
@@ -49,12 +50,14 @@ public class WrapperFactoryEntity_mixinUpdatePropertyAsync {
     private final WrapperFactoryEntity wrapperFactoryEntity;
 
 //tag::class[]
+    @MemberSupport
     public WrapperFactoryEntity act(final String value) {
         val control = AsyncControl.returningVoid().withSkipRules();
         val wrapped = this.wrapperFactory.asyncWrap(this.wrapperFactoryEntity, control);
         wrapped.setPropertyAsync(value);
         return this.wrapperFactoryEntity;
     }
+    @MemberSupport
     public String default0Act() {
         return wrapperFactoryEntity.getPropertyAsync();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/WrapperFactoryEntity_updatePropertyAsyncMixin.java b/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/WrapperFactoryEntity_updatePropertyAsyncMixin.java
index d35a36d..462aa31 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/WrapperFactoryEntity_updatePropertyAsyncMixin.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/WrapperFactoryEntity_updatePropertyAsyncMixin.java
@@ -20,6 +20,7 @@ package demoapp.dom.services.core.wrapperFactory;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -42,10 +43,12 @@ public class WrapperFactoryEntity_updatePropertyAsyncMixin {
     private final WrapperFactoryEntity wrapperFactoryEntity;
 
 //tag::class[]
+    @MemberSupport
     public WrapperFactoryEntity act(final String value) {
         wrapperFactoryEntity.setPropertyAsyncMixin(value);
         return wrapperFactoryEntity;
     }
+    @MemberSupport
     public String default0Act() {
         return wrapperFactoryEntity.getPropertyAsyncMixin();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/jdo/WrapperFactoryJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/jdo/WrapperFactoryJdo.java
index 69fb9e8..64281b0 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/jdo/WrapperFactoryJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/jdo/WrapperFactoryJdo.java
@@ -30,20 +30,23 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.applib.services.wrapper.control.AsyncControl;
 
-import demoapp.dom.services.core.wrapperFactory.WrapperFactoryEntity;
-import demoapp.dom.services.core.wrapperFactory.WrapperFactoryEntity_updatePropertyAsyncMixin;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.val;
 
+import demoapp.dom.services.core.wrapperFactory.WrapperFactoryEntity;
+import demoapp.dom.services.core.wrapperFactory.WrapperFactoryEntity_updatePropertyAsyncMixin;
+
 @Profile("demo-jdo")
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -62,11 +65,12 @@ public class WrapperFactoryJdo
     // ...
 //end::class[]
 
-    public WrapperFactoryJdo(String initialValue) {
+    public WrapperFactoryJdo(final String initialValue) {
         this.propertyAsync = initialValue;
         this.propertyAsyncMixin = initialValue;
     }
 
+    @Title
     public String title() {
         return "WrapperFactory";
     }
@@ -98,6 +102,7 @@ public class WrapperFactoryJdo
         wrapperFactoryJdo.setPropertyAsync(value);
         return this;
     }
+    @MemberSupport
     public String default0UpdatePropertyAsync() {
         return getPropertyAsync();
     }
@@ -121,6 +126,7 @@ public class WrapperFactoryJdo
         WrapperFactoryJdo act = (WrapperFactoryJdo) mixin.act(value);
         return this;
     }
+    @MemberSupport
     public String default0UpdatePropertyUsingAsyncWrapMixin() {
         return new WrapperFactoryEntity_updatePropertyAsyncMixin(this).default0Act();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/jpa/WrapperFactoryJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/jpa/WrapperFactoryJpa.java
index aab511f..73d9553 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/jpa/WrapperFactoryJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/core/wrapperFactory/jpa/WrapperFactoryJpa.java
@@ -31,10 +31,12 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.applib.services.wrapper.control.AsyncControl;
@@ -76,6 +78,7 @@ public class WrapperFactoryJpa
         this.propertyAsyncMixin = initialValue;
     }
 
+    @Title
     public String title() {
         return "WrapperFactory";
     }
@@ -111,6 +114,7 @@ public class WrapperFactoryJpa
         wrapperFactoryJdo.setPropertyAsync(value);
         return this;
     }
+    @MemberSupport
     public String default0UpdatePropertyAsync() {
         return getPropertyAsync();
     }
@@ -134,6 +138,7 @@ public class WrapperFactoryJpa
         WrapperFactoryJpa act = (WrapperFactoryJpa) mixin.act(value);
         return this;
     }
+    @MemberSupport
     public String default0UpdatePropertyUsingAsyncWrapMixin() {
         return new WrapperFactoryEntity_updatePropertyAsyncMixin(this).default0Act();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/XmlSnapshotParentVm.java b/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/XmlSnapshotParentVm.java
index fb6ea65..4f57cba 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/XmlSnapshotParentVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/XmlSnapshotParentVm.java
@@ -34,15 +34,17 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.services.core.xmlSnapshotService.child.XmlSnapshotChildVm;
-import demoapp.dom.services.core.xmlSnapshotService.peer.XmlSnapshotPeerVm;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 import lombok.val;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.services.core.xmlSnapshotService.child.XmlSnapshotChildVm;
+import demoapp.dom.services.core.xmlSnapshotService.peer.XmlSnapshotPeerVm;
+
 @XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -53,10 +55,11 @@ import lombok.val;
 @NoArgsConstructor
 public class XmlSnapshotParentVm implements HasAsciiDocDescription {
 
-    public XmlSnapshotParentVm(String text) {
+    public XmlSnapshotParentVm(final String text) {
         this.text = text;
     }
 
+    @Title
     public String title() {
         return "XmlSnapshotService parent VM";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/XmlSnapshotParentVm_takeXmlSnapshot.java b/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/XmlSnapshotParentVm_takeXmlSnapshot.java
index ad11ac0..cd1af9a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/XmlSnapshotParentVm_takeXmlSnapshot.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/core/xmlSnapshotService/XmlSnapshotParentVm_takeXmlSnapshot.java
@@ -25,6 +25,7 @@ import java.util.List;
 import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.services.xml.XmlService;
 import org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotService;
@@ -57,7 +58,7 @@ public class XmlSnapshotParentVm_takeXmlSnapshot {
         PEER_AND_ITS_CHILDREN("peer/children");
 
         final List<String> paths;
-        PathsToInclude(String... paths) {
+        PathsToInclude(final String... paths) {
             this.paths = Collections.unmodifiableList(Arrays.asList(paths));
         }
     }
@@ -71,6 +72,7 @@ public class XmlSnapshotParentVm_takeXmlSnapshot {
 //end::SnapshotType[]
 
 //tag::class[]
+    @MemberSupport
     public Clob act(
             final PathsToInclude pathsToInclude,
             final SnapshotType snapshotType) {
@@ -85,10 +87,11 @@ public class XmlSnapshotParentVm_takeXmlSnapshot {
         return asClob(fileName, xmlService.asString(doc));
     }
 //end::class[]
-
+    @MemberSupport
     public PathsToInclude default0Act() {
         return PathsToInclude.NONE;
     }
+    @MemberSupport
     public SnapshotType default1Act() {
         return SnapshotType.XML;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/extensions/secman/apptenancy/AppTenancyVm.java b/examples/demo/domain/src/main/java/demoapp/dom/services/extensions/secman/apptenancy/AppTenancyVm.java
index 0ca6005..a10504f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/extensions/secman/apptenancy/AppTenancyVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/extensions/secman/apptenancy/AppTenancyVm.java
@@ -30,10 +30,12 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.Title;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolderRepository;
@@ -49,6 +51,7 @@ import demoapp.dom.services.extensions.secman.apptenancy.persistence.TenantedEnt
 )
 public class AppTenancyVm implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Tenancy demo";
     }
@@ -66,11 +69,12 @@ public class AppTenancyVm implements HasAsciiDocDescription {
             associateWith = "hideRegex",
             promptStyle = PromptStyle.INLINE_AS_IF_EDIT)
     public AppTenancyVm updateHideRegex(
-            @Parameter(optionality = Optionality.OPTIONAL)
+            @Parameter(optionality = Optionality.OPTIONAL) final
             String regex) {
         applicationTenancyEvaluatorForDemo.setHideRegex(regex);
         return this;
     }
+    @MemberSupport
     public String default0UpdateHideRegex() {
         return getHideRegex();
     }
@@ -85,11 +89,12 @@ public class AppTenancyVm implements HasAsciiDocDescription {
             associateWith = "disableRegex",
             promptStyle = PromptStyle.INLINE_AS_IF_EDIT)
     public AppTenancyVm updateDisableRegex(
-            @Parameter(optionality = Optionality.OPTIONAL)
+            @Parameter(optionality = Optionality.OPTIONAL) final
             String regex) {
         applicationTenancyEvaluatorForDemo.setDisableRegex(regex);
         return this;
     }
+    @MemberSupport
     public String default0UpdateDisableRegex() {
         return getDisableRegex();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/extensions/secman/apptenancy/jdo/TenantedJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/services/extensions/secman/apptenancy/jdo/TenantedJdo.java
index 9e54810..205076c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/extensions/secman/apptenancy/jdo/TenantedJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/extensions/secman/apptenancy/jdo/TenantedJdo.java
@@ -29,15 +29,17 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom.services.extensions.secman.apptenancy.persistence.TenantedEntity;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom.services.extensions.secman.apptenancy.persistence.TenantedEntity;
+
 @Profile("demo-jdo")
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo" )
@@ -48,7 +50,7 @@ import lombok.Setter;
 public class TenantedJdo
         extends TenantedEntity {
 
-    public TenantedJdo(String name) {
+    public TenantedJdo(final String name) {
         this.name = name;
     }
 
@@ -64,6 +66,7 @@ public class TenantedJdo
         this.name = name;
         return this;
     }
+    @MemberSupport
     public String default0UpdateName() {
         return this.name;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/services/extensions/secman/apptenancy/jpa/TenantedJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/services/extensions/secman/apptenancy/jpa/TenantedJpa.java
index 71db3be..71a2e24 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/services/extensions/secman/apptenancy/jpa/TenantedJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/services/extensions/secman/apptenancy/jpa/TenantedJpa.java
@@ -30,6 +30,7 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -77,6 +78,7 @@ public class TenantedJpa
         this.name = name;
         return this;
     }
+    @MemberSupport
     public String default0UpdateName() {
         return this.name;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobs.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobs.java
index bbb4d3e..38f29d6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobs.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobs.java
@@ -32,9 +32,11 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.value.Blob;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
@@ -50,15 +52,17 @@ import demoapp.dom.types.isis.blobs.vm.IsisBlobVm;
 //@Log4j2
 public class IsisBlobs implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Blob data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public IsisBlobVm openViewModel(Blob initialValue) {
+    public IsisBlobVm openViewModel(final Blob initialValue) {
         return new IsisBlobVm(initialValue);
     }
+    @MemberSupport
     public Blob default0OpenViewModel() {
         return samples.single();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyOptionalProperty.java
index 2c8e5b5..dddc3e6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyOptionalProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.isis.blobs.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -42,13 +43,16 @@ public class IsisBlobHolder_updateReadOnlyOptionalProperty {
 
     private final IsisBlobHolder holder;
 
+    @MemberSupport
     public IsisBlobHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            Blob newValue
+            final Blob newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Blob default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyProperty.java
index 376cae8..1d0c9aa 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.isis.blobs.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.value.Blob;
@@ -40,10 +41,13 @@ public class IsisBlobHolder_updateReadOnlyProperty {
 
     private final IsisBlobHolder holder;
 
-    public IsisBlobHolder act(Blob newValue) {
+    @MemberSupport
+    public IsisBlobHolder act(final Blob newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Blob default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyPropertyWithChoices.java
index 4a64f7a..46afea7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyPropertyWithChoices.java
@@ -25,13 +25,15 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.value.Blob;
 
-import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.Samples;
+
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -46,13 +48,18 @@ public class IsisBlobHolder_updateReadOnlyPropertyWithChoices {
 
     private final IsisBlobHolder holder;
 
-    public IsisBlobHolder act(Blob newValue) {
+    @MemberSupport
+    public IsisBlobHolder act(final Blob newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Blob default0Act() {
         return holder.getReadOnlyProperty();
     }
+
+    @MemberSupport
     public List<Blob> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/IsisBlobVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/IsisBlobVm.java
index a8bec0b..6a4d201 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/IsisBlobVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/IsisBlobVm.java
@@ -30,13 +30,15 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.value.Blob;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.isis.blobs.holder.IsisBlobHolder2;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.isis.blobs.holder.IsisBlobHolder2;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -50,12 +52,13 @@ public class IsisBlobVm
         implements HasAsciiDocDescription, IsisBlobHolder2 {
 
 //end::class[]
-    public IsisBlobVm(Blob initialValue) {
+    public IsisBlobVm(final Blob initialValue) {
         this.readOnlyProperty = initialValue;
         this.readWriteProperty = initialValue;
     }
 
 //tag::class[]
+    @Title
     public String title() {
         return "Blob view model: " +getReadOnlyProperty().getName();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobs.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobs.java
index 3fca4dc..7a103a9 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobs.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobs.java
@@ -32,9 +32,11 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.value.Clob;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
@@ -50,15 +52,17 @@ import demoapp.dom.types.isis.clobs.vm.IsisClobVm;
 //@Log4j2
 public class IsisClobs implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Clob data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public IsisClobVm openViewModel(Clob initialValue) {
+    public IsisClobVm openViewModel(final Clob initialValue) {
         return new IsisClobVm(initialValue);
     }
+    @MemberSupport
     public Clob default0OpenViewModel() {
         return samples.single();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyOptionalProperty.java
index bd3719d..c672a4a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyOptionalProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.isis.clobs.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -42,8 +43,10 @@ public class IsisClobHolder_updateReadOnlyOptionalProperty {
 
     private final IsisClobHolder holder;
 
+    @MemberSupport
     public IsisClobHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
+ final
             Clob newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyProperty.java
index d8131d9..44dde84 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.isis.clobs.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.value.Clob;
@@ -40,10 +41,13 @@ public class IsisClobHolder_updateReadOnlyProperty {
 
     private final IsisClobHolder holder;
 
-    public IsisClobHolder act(Clob newValue) {
+    @MemberSupport
+    public IsisClobHolder act(final Clob newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Clob default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyPropertyWithChoices.java
index f0ef9dc..dbe2fb0 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyPropertyWithChoices.java
@@ -25,13 +25,15 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.value.Clob;
 
-import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.Samples;
+
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -46,13 +48,18 @@ public class IsisClobHolder_updateReadOnlyPropertyWithChoices {
 
     private final IsisClobHolder holder;
 
-    public IsisClobHolder act(Clob newValue) {
+    @MemberSupport
+    public IsisClobHolder act(final Clob newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Clob default0Act() {
         return holder.getReadOnlyProperty();
     }
+
+    @MemberSupport
     public List<Clob> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePaths.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePaths.java
index 8b292f1..22b7471 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePaths.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePaths.java
@@ -32,9 +32,11 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.value.LocalResourcePath;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
@@ -50,15 +52,18 @@ import demoapp.dom.types.isis.localresourcepaths.vm.IsisLocalResourcePathVm;
 //@Log4j2
 public class IsisLocalResourcePaths implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "LocalResourcePath data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public IsisLocalResourcePathVm openViewModel(LocalResourcePath initialValue) {
+    public IsisLocalResourcePathVm openViewModel(final LocalResourcePath initialValue) {
         return new IsisLocalResourcePathVm(initialValue);
     }
+
+    @MemberSupport
     public LocalResourcePath default0OpenViewModel() {
         return samples.single();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyOptionalProperty.java
index 47ed463..9073576 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyOptionalProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.isis.localresourcepaths.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -43,13 +44,15 @@ public class IsisLocalResourcePathHolder_updateReadOnlyOptionalProperty {
 
     private final IsisLocalResourcePathHolder holder;
 
+    @MemberSupport
     public IsisLocalResourcePathHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            LocalResourcePath newValue
+            final LocalResourcePath newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
+    @MemberSupport
     public LocalResourcePath default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyProperty.java
index 53a2252..aa3cc75 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.isis.localresourcepaths.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.value.LocalResourcePath;
@@ -40,10 +41,13 @@ public class IsisLocalResourcePathHolder_updateReadOnlyProperty {
 
     private final IsisLocalResourcePathHolder holder;
 
-    public IsisLocalResourcePathHolder act(LocalResourcePath newValue) {
+    @MemberSupport
+    public IsisLocalResourcePathHolder act(final LocalResourcePath newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public LocalResourcePath default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyPropertyWithChoices.java
index cdc7dd2..ff97eb2 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyPropertyWithChoices.java
@@ -25,13 +25,15 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.value.LocalResourcePath;
 
-import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.Samples;
+
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -46,13 +48,18 @@ public class IsisLocalResourcePathHolder_updateReadOnlyPropertyWithChoices {
 
     private final IsisLocalResourcePathHolder holder;
 
-    public IsisLocalResourcePathHolder act(LocalResourcePath newValue) {
+    @MemberSupport
+    public IsisLocalResourcePathHolder act(final LocalResourcePath newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public LocalResourcePath default0Act() {
         return holder.getReadOnlyProperty();
     }
+
+    @MemberSupport
     public List<LocalResourcePath> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/IsisMarkups.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/IsisMarkups.java
index edb8d97..0518e0f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/IsisMarkups.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/IsisMarkups.java
@@ -32,9 +32,11 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.value.Markup;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
@@ -50,6 +52,7 @@ import demoapp.dom.types.isis.markups.vm.IsisMarkupVm;
 //@Log4j2
 public class IsisMarkups implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Markup data type";
     }
@@ -59,6 +62,8 @@ public class IsisMarkups implements HasAsciiDocDescription {
     public IsisMarkupVm openViewModel(final Markup initialValue) {
         return new IsisMarkupVm(initialValue);
     }
+
+    @MemberSupport
     public Markup default0OpenViewModel() {
         return samples.single();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder_updateReadOnlyOptionalProperty.java
index 7757b4d..e44f4b2 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder_updateReadOnlyOptionalProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.isis.markups.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -42,13 +43,16 @@ public class IsisMarkupHolder_updateReadOnlyOptionalProperty {
 
     private final IsisMarkupHolder holder;
 
+    @MemberSupport
     public IsisMarkupHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            Markup newValue
+            final Markup newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Markup default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder_updateReadOnlyProperty.java
index 60bb46c..fabb7aa 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder_updateReadOnlyProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.isis.markups.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.value.Markup;
@@ -40,10 +41,13 @@ public class IsisMarkupHolder_updateReadOnlyProperty {
 
     private final IsisMarkupHolder holder;
 
-    public IsisMarkupHolder act(Markup newValue) {
+    @MemberSupport
+    public IsisMarkupHolder act(final Markup newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Markup default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder_updateReadOnlyPropertyWithChoices.java
index f78a016..4e7cbda 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder_updateReadOnlyPropertyWithChoices.java
@@ -23,13 +23,15 @@ import java.util.stream.Collectors;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.value.Markup;
 
-import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.Samples;
+
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -44,13 +46,18 @@ public class IsisMarkupHolder_updateReadOnlyPropertyWithChoices {
 
     private final IsisMarkupHolder holder;
 
-    public IsisMarkupHolder act(Markup newValue) {
+    @MemberSupport
+    public IsisMarkupHolder act(final Markup newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Markup default0Act() {
         return holder.getReadOnlyProperty();
     }
+
+    @MemberSupport
     public List<Markup> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/jdo/IsisMarkupJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/jdo/IsisMarkupJdo.java
index 5925f51..3cf8e48 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/jdo/IsisMarkupJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/jdo/IsisMarkupJdo.java
@@ -32,14 +32,16 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.applib.value.Markup;
 
-import demoapp.dom.types.isis.markups.persistence.IsisMarkupEntity;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom.types.isis.markups.persistence.IsisMarkupEntity;
+
 @Profile("demo-jdo")
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -51,12 +53,14 @@ public class IsisMarkupJdo                                          // <.>
         extends IsisMarkupEntity {
 
 //end::class[]
-    public IsisMarkupJdo(Markup initialValue) {
+    public IsisMarkupJdo(final Markup initialValue) {
         this.readOnlyProperty = initialValue;
         this.readWriteProperty = initialValue;
     }
 
 //tag::class[]
+
+    @Title
     public String title() {
         return "Markup JDO entity: " +
             bookmarkService.bookmarkForElseFail(this).getIdentifier();
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/jpa/IsisMarkupJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/jpa/IsisMarkupJpa.java
index 23ad9c2..b8a09f8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/jpa/IsisMarkupJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/jpa/IsisMarkupJpa.java
@@ -37,6 +37,7 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.applib.value.Markup;
@@ -74,6 +75,7 @@ public class IsisMarkupJpa
     @GeneratedValue
     private Long id;
 
+    @Title
     public String title() {
         return "Markup JPA entity: " +
             bookmarkService.bookmarkForElseFail(this).getIdentifier();
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/vm/IsisMarkupVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/vm/IsisMarkupVm.java
index 09b0a55..0482dbf 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/vm/IsisMarkupVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/vm/IsisMarkupVm.java
@@ -30,14 +30,16 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.value.Markup;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.isis.markups.holder.IsisMarkupHolder2;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.isis.markups.holder.IsisMarkupHolder2;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -51,12 +53,13 @@ public class IsisMarkupVm
         implements HasAsciiDocDescription, IsisMarkupHolder2 {
 
 //end::class[]
-    public IsisMarkupVm(Markup initialValue) {
+    public IsisMarkupVm(final Markup initialValue) {
         this.readOnlyProperty = initialValue;
         this.readWriteProperty = initialValue;
     }
 
 //tag::class[]
+    @Title
     public String title() {
         return "Markup view model";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/IsisPasswords.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/IsisPasswords.java
index f2848e0..54e4026 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/IsisPasswords.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/IsisPasswords.java
@@ -32,9 +32,11 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.value.Password;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
@@ -50,15 +52,18 @@ import demoapp.dom.types.isis.passwords.vm.IsisPasswordVm;
 //@Log4j2
 public class IsisPasswords implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Password data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public IsisPasswordVm openViewModel(Password initialValue) {
+    public IsisPasswordVm openViewModel(final Password initialValue) {
         return new IsisPasswordVm(initialValue);
     }
+
+    @MemberSupport
     public Password default0OpenViewModel() {
         return samples.single();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder_updateReadOnlyOptionalProperty.java
index 759f195..d62e2bf 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder_updateReadOnlyOptionalProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.isis.passwords.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -42,13 +43,16 @@ public class IsisPasswordHolder_updateReadOnlyOptionalProperty {
 
     private final IsisPasswordHolder holder;
 
+    @MemberSupport
     public IsisPasswordHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            Password newValue
+            final Password newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Password default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder_updateReadOnlyProperty.java
index bd621b7..01cf568 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder_updateReadOnlyProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.isis.passwords.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.value.Password;
@@ -40,10 +41,13 @@ public class IsisPasswordHolder_updateReadOnlyProperty {
 
     private final IsisPasswordHolder holder;
 
-    public IsisPasswordHolder act(Password newValue) {
+    @MemberSupport
+    public IsisPasswordHolder act(final Password newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Password default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder_updateReadOnlyPropertyWithChoices.java
index 5a33399..42e3e5b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder_updateReadOnlyPropertyWithChoices.java
@@ -25,13 +25,15 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.value.Password;
 
-import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.Samples;
+
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -47,13 +49,18 @@ public class IsisPasswordHolder_updateReadOnlyPropertyWithChoices {
 
     private final IsisPasswordHolder holder;
 
-    public IsisPasswordHolder act(Password newValue) {
+    @MemberSupport
+    public IsisPasswordHolder act(final Password newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Password default0Act() {
         return holder.getReadOnlyProperty();
     }
+
+    @MemberSupport
     public List<Password> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/IsisAsciiDocs.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/IsisAsciiDocs.java
index 3831ac4..785ef2b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/IsisAsciiDocs.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/IsisAsciiDocs.java
@@ -32,9 +32,11 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
@@ -50,6 +52,7 @@ import demoapp.dom.types.isisext.asciidocs.vm.IsisAsciiDocVm;
 //@Log4j2
 public class IsisAsciiDocs implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "AsciiDoc data type";
     }
@@ -59,6 +62,8 @@ public class IsisAsciiDocs implements HasAsciiDocDescription {
     public IsisAsciiDocVm openViewModel(final AsciiDoc initialValue) {
         return new IsisAsciiDocVm(initialValue);
     }
+
+    @MemberSupport
     public AsciiDoc default0OpenViewModel() {
         return samples.single();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder_updateReadOnlyOptionalProperty.java
index 3cf5c6e..42572f8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder_updateReadOnlyOptionalProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.isisext.asciidocs.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -42,13 +43,16 @@ public class IsisAsciiDocHolder_updateReadOnlyOptionalProperty {
 
     private final IsisAsciiDocHolder holder;
 
+    @MemberSupport
     public IsisAsciiDocHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            AsciiDoc newValue
+            final AsciiDoc newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public AsciiDoc default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder_updateReadOnlyProperty.java
index c65a0c4..f8702ab 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder_updateReadOnlyProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.isisext.asciidocs.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
@@ -40,10 +41,13 @@ public class IsisAsciiDocHolder_updateReadOnlyProperty {
 
     private final IsisAsciiDocHolder holder;
 
-    public IsisAsciiDocHolder act(AsciiDoc newValue) {
+    @MemberSupport
+    public IsisAsciiDocHolder act(final AsciiDoc newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public AsciiDoc default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder_updateReadOnlyPropertyWithChoices.java
index 70aa579..f25d6f9 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder_updateReadOnlyPropertyWithChoices.java
@@ -23,13 +23,15 @@ import java.util.stream.Collectors;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 
-import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.Samples;
+
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -44,13 +46,18 @@ public class IsisAsciiDocHolder_updateReadOnlyPropertyWithChoices {
 
     private final IsisAsciiDocHolder holder;
 
-    public IsisAsciiDocHolder act(AsciiDoc newValue) {
+    @MemberSupport
+    public IsisAsciiDocHolder act(final AsciiDoc newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public AsciiDoc default0Act() {
         return holder.getReadOnlyProperty();
     }
+
+    @MemberSupport
     public List<AsciiDoc> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jdo/IsisAsciiDocJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jdo/IsisAsciiDocJdo.java
index 7178d83..3179153 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jdo/IsisAsciiDocJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jdo/IsisAsciiDocJdo.java
@@ -25,20 +25,23 @@ import javax.jdo.annotations.IdGeneratorStrategy;
 import javax.jdo.annotations.IdentityType;
 import javax.jdo.annotations.PersistenceCapable;
 
+import org.springframework.context.annotation.Profile;
+
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
-import org.springframework.context.annotation.Profile;
 
-import demoapp.dom.types.isisext.asciidocs.persistence.IsisAsciiDocEntity;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom.types.isisext.asciidocs.persistence.IsisAsciiDocEntity;
+
 @Profile("demo-jdo")
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -50,12 +53,13 @@ public class IsisAsciiDocJdo                                          // <.>
         extends IsisAsciiDocEntity {
 
 //end::class[]
-    public IsisAsciiDocJdo(AsciiDoc initialValue) {
+    public IsisAsciiDocJdo(final AsciiDoc initialValue) {
         this.readOnlyProperty = initialValue;
         this.readWriteProperty = initialValue;
     }
 
 //tag::class[]
+    @Title
     public String title() {
         return "AsciiDoc JDO entity: " +
             bookmarkService.bookmarkForElseFail(this).getIdentifier();
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jpa/IsisAsciiDocJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jpa/IsisAsciiDocJpa.java
index c32338f..dae3dbd 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jpa/IsisAsciiDocJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jpa/IsisAsciiDocJpa.java
@@ -37,6 +37,7 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.persistence.jpa.applib.integration.IsisEntityListener;
@@ -74,6 +75,7 @@ public class IsisAsciiDocJpa
     @GeneratedValue
     private Long id;
 
+    @Title
     public String title() {
         return "AsciiDoc JPA entity: " +
             bookmarkService.bookmarkForElseFail(this).getIdentifier();
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/vm/IsisAsciiDocVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/vm/IsisAsciiDocVm.java
index 97332aa..4a55409 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/vm/IsisAsciiDocVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/vm/IsisAsciiDocVm.java
@@ -30,14 +30,16 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.isisext.asciidocs.holder.IsisAsciiDocHolder2;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.isisext.asciidocs.holder.IsisAsciiDocHolder2;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -51,12 +53,13 @@ public class IsisAsciiDocVm
         implements HasAsciiDocDescription, IsisAsciiDocHolder2 {
 
 //end::class[]
-    public IsisAsciiDocVm(AsciiDoc initialValue) {
+    public IsisAsciiDocVm(final AsciiDoc initialValue) {
         this.readOnlyProperty = initialValue;
         this.readWriteProperty = initialValue;
     }
 
 //tag::class[]
+    @Title
     public String title() {
         return "AsciiDoc view model";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns.java
index 441a7fd..8ec2d7f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns.java
@@ -32,9 +32,11 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
@@ -50,6 +52,7 @@ import demoapp.dom.types.isisext.markdowns.vm.IsisMarkdownVm;
 //@Log4j2
 public class IsisMarkdowns implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Markdown data type";
     }
@@ -59,6 +62,8 @@ public class IsisMarkdowns implements HasAsciiDocDescription {
     public IsisMarkdownVm openViewModel(final Markdown initialValue) {
         return new IsisMarkdownVm(initialValue);
     }
+
+    @MemberSupport
     public Markdown default0OpenViewModel() {
         return samples.single();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyOptionalProperty.java
index 4ffa07f..ccc328e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyOptionalProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.isisext.markdowns.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -42,13 +43,16 @@ public class IsisMarkdownHolder_updateReadOnlyOptionalProperty {
 
     private final IsisMarkdownHolder holder;
 
+    @MemberSupport
     public IsisMarkdownHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            Markdown newValue
+            final Markdown newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Markdown default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyProperty.java
index f0b6f8e..5c8e6d4e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.isisext.markdowns.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
@@ -40,10 +41,13 @@ public class IsisMarkdownHolder_updateReadOnlyProperty {
 
     private final IsisMarkdownHolder holder;
 
-    public IsisMarkdownHolder act(Markdown newValue) {
+    @MemberSupport
+    public IsisMarkdownHolder act(final Markdown newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Markdown default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyPropertyWithChoices.java
index f3ef2f1..46f4614 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyPropertyWithChoices.java
@@ -23,13 +23,15 @@ import java.util.stream.Collectors;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 
-import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.Samples;
+
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -44,13 +46,18 @@ public class IsisMarkdownHolder_updateReadOnlyPropertyWithChoices {
 
     private final IsisMarkdownHolder holder;
 
-    public IsisMarkdownHolder act(Markdown newValue) {
+    @MemberSupport
+    public IsisMarkdownHolder act(final Markdown newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Markdown default0Act() {
         return holder.getReadOnlyProperty();
     }
+
+    @MemberSupport
     public List<Markdown> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdo.java
index 3d58eb3..c28d9ef5 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdo.java
@@ -32,14 +32,16 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 
-import demoapp.dom.types.isisext.markdowns.persistence.IsisMarkdownEntity;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom.types.isisext.markdowns.persistence.IsisMarkdownEntity;
+
 @Profile("demo-jdo")
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -51,12 +53,13 @@ public class IsisMarkdownJdo                                          // <.>
         extends IsisMarkdownEntity {
 
 //end::class[]
-    public IsisMarkdownJdo(Markdown initialValue) {
+    public IsisMarkdownJdo(final Markdown initialValue) {
         this.readOnlyProperty = initialValue;
         this.readWriteProperty = initialValue;
     }
 
 //tag::class[]
+    @Title
     public String title() {
         return "Markdown JDO entity: " +
             bookmarkService.bookmarkForElseFail(this).getIdentifier();
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jpa/IsisMarkdownJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jpa/IsisMarkdownJpa.java
index c8237b7..efaf673 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jpa/IsisMarkdownJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jpa/IsisMarkdownJpa.java
@@ -37,6 +37,7 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.persistence.jpa.applib.integration.IsisEntityListener;
@@ -74,6 +75,7 @@ public class IsisMarkdownJpa
     @GeneratedValue
     private Long id;
 
+    @Title
     public String title() {
         return "Markdown JPA entity: " +
             bookmarkService.bookmarkForElseFail(this).getIdentifier();
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm.java
index f5e9759..8a0bafb 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm.java
@@ -30,14 +30,16 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.isisext.markdowns.holder.IsisMarkdownHolder2;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.isisext.markdowns.holder.IsisMarkdownHolder2;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -51,12 +53,13 @@ public class IsisMarkdownVm
         implements HasAsciiDocDescription, IsisMarkdownHolder2 {
 
 //end::class[]
-    public IsisMarkdownVm(Markdown initialValue) {
+    public IsisMarkdownVm(final Markdown initialValue) {
         this.readOnlyProperty = initialValue;
         this.readWriteProperty = initialValue;
     }
 
 //tag::class[]
+    @Title
     public String title() {
         return "Markdown view model";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/sse/DemoTask.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/sse/DemoTask.java
index cc22514..6c0c8f0 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/sse/DemoTask.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/sse/DemoTask.java
@@ -23,6 +23,7 @@ import java.util.concurrent.atomic.LongAdder;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.commons.internal.concurrent._ThreadSleep;
 import org.apache.isis.valuetypes.sse.applib.annotations.SseSource;
 import org.apache.isis.valuetypes.sse.applib.service.SseChannel;
@@ -33,6 +34,7 @@ import lombok.RequiredArgsConstructor;
 @RequiredArgsConstructor(staticName="of")
 public class DemoTask implements SseSource {
 
+    @Title
     public String title() {
         return String.format("DemoTask '%s'", Integer.toHexString(hashCode()));
     }
@@ -42,7 +44,7 @@ public class DemoTask implements SseSource {
 
 
     @Override
-    public void run(SseChannel eventStream) {
+    public void run(final SseChannel eventStream) {
 
         taskProgress = TaskProgress.of(new LongAdder(), totalSteps);
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/JavaAwtBufferedImages.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/JavaAwtBufferedImages.java
index 2a3b098..4072441 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/JavaAwtBufferedImages.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/JavaAwtBufferedImages.java
@@ -33,9 +33,11 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolderRepository;
@@ -50,15 +52,18 @@ import demoapp.dom.types.javaawt.images.vm.JavaAwtBufferedImageVm;
 //@Log4j2
 public class JavaAwtBufferedImages implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Image data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public JavaAwtBufferedImageVm openViewModel(BufferedImage initialValue) {
+    public JavaAwtBufferedImageVm openViewModel(final BufferedImage initialValue) {
         return new JavaAwtBufferedImageVm(initialValue);
     }
+
+    @MemberSupport
     public BufferedImage default0OpenViewModel() {
         return samples.single();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyOptionalProperty.java
index 568509b..b1dd35a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyOptionalProperty.java
@@ -22,6 +22,7 @@ import java.awt.image.BufferedImage;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -45,13 +46,16 @@ public class JavaAwtBufferedImageHolder_updateReadOnlyOptionalProperty {
 
     private final JavaAwtBufferedImageHolder holder;
 
+    @MemberSupport
     public JavaAwtBufferedImageHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            BufferedImage newValue
+            final BufferedImage newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public BufferedImage default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyProperty.java
index 1705312..c75cd24 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyProperty.java
@@ -22,6 +22,7 @@ import java.awt.image.BufferedImage;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Where;
@@ -43,10 +44,13 @@ public class JavaAwtBufferedImageHolder_updateReadOnlyProperty {
 
     private final JavaAwtBufferedImageHolder holder;
 
-    public JavaAwtBufferedImageHolder act(BufferedImage newValue) {
+    @MemberSupport
+    public JavaAwtBufferedImageHolder act(final BufferedImage newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public BufferedImage default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyPropertyWithChoices.java
index df33873..d649235 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder_updateReadOnlyPropertyWithChoices.java
@@ -26,13 +26,15 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Where;
 
-import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.Samples;
+
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT,
@@ -48,13 +50,18 @@ public class JavaAwtBufferedImageHolder_updateReadOnlyPropertyWithChoices {
 
     private final JavaAwtBufferedImageHolder holder;
 
-    public JavaAwtBufferedImageHolder act(BufferedImage newValue) {
+    @MemberSupport
+    public JavaAwtBufferedImageHolder act(final BufferedImage newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public BufferedImage default0Act() {
         return holder.getReadOnlyProperty();
     }
+
+    @MemberSupport
     public List<BufferedImage> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/jdo/JavaAwtBufferedImageJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/jdo/JavaAwtBufferedImageJdo.java
index 61ab555..16e962f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/jdo/JavaAwtBufferedImageJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/jdo/JavaAwtBufferedImageJdo.java
@@ -32,11 +32,13 @@ import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom.types.javaawt.images.persistence.JavaAwtBufferedImageEntity;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom.types.javaawt.images.persistence.JavaAwtBufferedImageEntity;
+
 @Profile("demo-jdo")
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -52,12 +54,13 @@ public class JavaAwtBufferedImageJdo
 {
 
 //end::class[]
-    public JavaAwtBufferedImageJdo(BufferedImage initialValue) {
+    public JavaAwtBufferedImageJdo(final BufferedImage initialValue) {
         this.readOnlyProperty = initialValue;
 //        this.readWriteProperty = initialValue;    // editable properties not yet supported
     }
 
     // @Title not yet supported
+    @Title
     public String title() {
         return "Image JDO entity";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/jpa/JavaAwtBufferedImageJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/jpa/JavaAwtBufferedImageJpa.java
index c8df4e6..8e65561 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/jpa/JavaAwtBufferedImageJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/jpa/JavaAwtBufferedImageJpa.java
@@ -34,6 +34,7 @@ import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.persistence.jpa.applib.integration.IsisEntityListener;
 import org.apache.isis.persistence.jpa.integration.typeconverters.JavaAwtBufferedImageByteArrayConverter;
 
@@ -69,6 +70,7 @@ public class JavaAwtBufferedImageJpa
     }
 
     // @Title not yet supported
+    @Title
     public String title() {
         return "Image JPA entity";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/vm/JavaAwtBufferedImageVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/vm/JavaAwtBufferedImageVm.java
index d8a34e6..012f7d8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/vm/JavaAwtBufferedImageVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/vm/JavaAwtBufferedImageVm.java
@@ -31,11 +31,13 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import lombok.Getter;
 import lombok.Setter;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -54,12 +56,13 @@ public class JavaAwtBufferedImageVm
 {
 
 //end::class[]
-    public JavaAwtBufferedImageVm(BufferedImage initialValue) {
+    public JavaAwtBufferedImageVm(final BufferedImage initialValue) {
         this.readOnlyProperty = initialValue;
 //        this.readWriteProperty = initialValue;    // editable properties not yet supported
     }
 
     // @Title not yet supported
+    @Title
     public String title() {
         return "Image view model";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/WrapperBooleans.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/WrapperBooleans.java
index 6998221..aa10663 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/WrapperBooleans.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/WrapperBooleans.java
@@ -36,6 +36,7 @@ import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolderRepository;
@@ -49,15 +50,17 @@ import demoapp.dom.types.javalang.booleans.vm.WrapperBooleanVm;
 //@Log4j2
 public class WrapperBooleans implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Boolean (wrapper) data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public WrapperBooleanVm openViewModel(Boolean initialValue) {
+    public WrapperBooleanVm openViewModel(final Boolean initialValue) {
         return new WrapperBooleanVm(initialValue);
     }
+    @MemberSupport
     public Boolean default0OpenViewModel() {
         return true;
     }
@@ -79,8 +82,8 @@ public class WrapperBooleans implements HasAsciiDocDescription {
             , describedAs = "FIXME[ISIS-2387] even though primitive1 gets initialized with true, the model thinks its null"
     )
     public WrapperBooleans booleanParams(
-            boolean primitive0,
-            boolean primitive1) {
+            final boolean primitive0,
+            final boolean primitive1) {
         return this;
     }
     @MemberSupport
@@ -99,8 +102,8 @@ public class WrapperBooleans implements HasAsciiDocDescription {
                     " initialize with FALSE when null"
     )
     public WrapperBooleans booleanBoxedParams(
-            Boolean boxed0,
-            Boolean boxed1) {
+            final Boolean boxed0,
+            final Boolean boxed1) {
         return this;
     }
     @MemberSupport
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder_updateReadOnlyOptionalProperty.java
index 01b81dd..039cf3e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder_updateReadOnlyOptionalProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javalang.booleans.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -41,13 +42,16 @@ public class WrapperBooleanHolder_updateReadOnlyOptionalProperty {
 
     private final WrapperBooleanHolder holder;
 
+    @MemberSupport
     public WrapperBooleanHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            Boolean newValue
+            final Boolean newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Boolean default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder_updateReadOnlyProperty.java
index 545aa60..5c50778 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder_updateReadOnlyProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javalang.booleans.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -39,10 +40,13 @@ public class WrapperBooleanHolder_updateReadOnlyProperty {
 
     private final WrapperBooleanHolder holder;
 
-    public WrapperBooleanHolder act(Boolean newValue) {
+    @MemberSupport
+    public WrapperBooleanHolder act(final Boolean newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Boolean default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder_updateReadOnlyPropertyWithChoices.java
index 386971c..0965ba6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder_updateReadOnlyPropertyWithChoices.java
@@ -25,12 +25,14 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.Samples;
+
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -45,13 +47,18 @@ public class WrapperBooleanHolder_updateReadOnlyPropertyWithChoices {
 
     private final WrapperBooleanHolder holder;
 
-    public WrapperBooleanHolder act(Boolean newValue) {
+    @MemberSupport
+    public WrapperBooleanHolder act(final Boolean newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Boolean default0Act() {
         return holder.getReadOnlyProperty();
     }
+
+    @MemberSupport
     public List<Boolean> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/WrapperBytes.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/WrapperBytes.java
index 1e07cf8..72523ca 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/WrapperBytes.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/WrapperBytes.java
@@ -32,9 +32,11 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolderRepository;
@@ -48,15 +50,18 @@ import demoapp.dom.types.javalang.bytes.vm.WrapperByteVm;
 //@Log4j2
 public class WrapperBytes implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Byte (wrapper) data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public WrapperByteVm openViewModel(Byte initialValue) {
+    public WrapperByteVm openViewModel(final Byte initialValue) {
         return new WrapperByteVm(initialValue);
     }
+
+    @MemberSupport
     public Byte default0OpenViewModel() {
         return (byte)123;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder_updateReadOnlyOptionalProperty.java
index 805895a..91415ba 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder_updateReadOnlyOptionalProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javalang.bytes.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -41,13 +42,16 @@ public class WrapperByteHolder_updateReadOnlyOptionalProperty {
 
     private final WrapperByteHolder holder;
 
+    @MemberSupport
     public WrapperByteHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            Byte newValue
+            final Byte newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Byte default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder_updateReadOnlyProperty.java
index 6f25a3b..62749a1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder_updateReadOnlyProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javalang.bytes.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -39,10 +40,13 @@ public class WrapperByteHolder_updateReadOnlyProperty {
 
     private final WrapperByteHolder holder;
 
-    public WrapperByteHolder act(Byte newValue) {
+    @MemberSupport
+    public WrapperByteHolder act(final Byte newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Byte default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder_updateReadOnlyPropertyWithChoices.java
index 3783623..be2dab3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder_updateReadOnlyPropertyWithChoices.java
@@ -25,12 +25,14 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.Samples;
+
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -45,13 +47,18 @@ public class WrapperByteHolder_updateReadOnlyPropertyWithChoices {
 
     private final WrapperByteHolder holder;
 
-    public WrapperByteHolder act(Byte newValue) {
+    @MemberSupport
+    public WrapperByteHolder act(final Byte newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Byte default0Act() {
         return holder.getReadOnlyProperty();
     }
+
+    @MemberSupport
     public List<Byte> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/WrapperCharacters.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/WrapperCharacters.java
index a959fa1..69d389f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/WrapperCharacters.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/WrapperCharacters.java
@@ -32,9 +32,11 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolderRepository;
@@ -48,15 +50,17 @@ import demoapp.dom.types.javalang.characters.vm.WrapperCharacterVm;
 //@Log4j2
 public class WrapperCharacters implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Character (wrapper) data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public WrapperCharacterVm openViewModel(Character initialValue) {
+    public WrapperCharacterVm openViewModel(final Character initialValue) {
         return new WrapperCharacterVm(initialValue);
     }
+    @MemberSupport
     public Character default0OpenViewModel() {
         return 'a';
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java
index 86520e4..c01686d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javalang.characters.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -41,13 +42,15 @@ public class WrapperCharacterHolder_updateReadOnlyOptionalProperty {
 
     private final WrapperCharacterHolder holder;
 
+    @MemberSupport
     public WrapperCharacterHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            Character newValue
+            final Character newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
+    @MemberSupport
     public Character default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder_updateReadOnlyProperty.java
index 44980a4..2a63d57 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder_updateReadOnlyProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javalang.characters.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -39,10 +40,12 @@ public class WrapperCharacterHolder_updateReadOnlyProperty {
 
     private final WrapperCharacterHolder holder;
 
-    public WrapperCharacterHolder act(Character newValue) {
+    @MemberSupport
+    public WrapperCharacterHolder act(final Character newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+    @MemberSupport
     public Character default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder_updateReadOnlyPropertyWithChoices.java
index dd363eb..dea2b54 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder_updateReadOnlyPropertyWithChoices.java
@@ -25,12 +25,14 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.Samples;
+
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -45,13 +47,16 @@ public class WrapperCharacterHolder_updateReadOnlyPropertyWithChoices {
 
     private final WrapperCharacterHolder holder;
 
-    public WrapperCharacterHolder act(Character newValue) {
+    @MemberSupport
+    public WrapperCharacterHolder act(final Character newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+    @MemberSupport
     public Character default0Act() {
         return holder.getReadOnlyProperty();
     }
+    @MemberSupport
     public List<Character> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/WrapperDoubles.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/WrapperDoubles.java
index c549a01..fc6af84 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/WrapperDoubles.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/WrapperDoubles.java
@@ -32,9 +32,11 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolderRepository;
@@ -48,15 +50,17 @@ import demoapp.dom.types.javalang.doubles.vm.WrapperDoubleVm;
 //@Log4j2
 public class WrapperDoubles implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Double (wrapper) data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public WrapperDoubleVm openViewModel(Double initialValue) {
+    public WrapperDoubleVm openViewModel(final Double initialValue) {
         return new WrapperDoubleVm(initialValue);
     }
+    @MemberSupport
     public Double default0OpenViewModel() {
         return 12345678.1234;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder_updateReadOnlyOptionalProperty.java
index 38deb39..abb0418 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder_updateReadOnlyOptionalProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javalang.doubles.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -41,13 +42,16 @@ public class WrapperDoubleHolder_updateReadOnlyOptionalProperty {
 
     private final WrapperDoubleHolder holder;
 
+    @MemberSupport
     public WrapperDoubleHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            Double newValue
+            final Double newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Double default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder_updateReadOnlyProperty.java
index 2995263..f35e028 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder_updateReadOnlyProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javalang.doubles.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -39,10 +40,13 @@ public class WrapperDoubleHolder_updateReadOnlyProperty {
 
     private final WrapperDoubleHolder holder;
 
-    public WrapperDoubleHolder act(Double newValue) {
+    @MemberSupport
+    public WrapperDoubleHolder act(final Double newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Double default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder_updateReadOnlyPropertyWithChoices.java
index 9a687c4..1606c5c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder_updateReadOnlyPropertyWithChoices.java
@@ -25,12 +25,14 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.Samples;
+
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -45,13 +47,18 @@ public class WrapperDoubleHolder_updateReadOnlyPropertyWithChoices {
 
     private final WrapperDoubleHolder holder;
 
-    public WrapperDoubleHolder act(Double newValue) {
+    @MemberSupport
+    public WrapperDoubleHolder act(final Double newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Double default0Act() {
         return holder.getReadOnlyProperty();
     }
+
+    @MemberSupport
     public List<Double> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/WrapperFloats.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/WrapperFloats.java
index 3bbcb25..2df3ead 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/WrapperFloats.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/WrapperFloats.java
@@ -32,9 +32,11 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolderRepository;
@@ -48,15 +50,17 @@ import demoapp.dom.types.javalang.floats.vm.WrapperFloatVm;
 //@Log4j2
 public class WrapperFloats implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Float (wrapper) data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public WrapperFloatVm openViewModel(Float initialValue) {
+    public WrapperFloatVm openViewModel(final Float initialValue) {
         return new WrapperFloatVm(initialValue);
     }
+    @MemberSupport
     public Float default0OpenViewModel() {
         return 1234.1234f;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder_updateReadOnlyOptionalProperty.java
index 788cd00..8767968 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder_updateReadOnlyOptionalProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javalang.floats.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -41,13 +42,16 @@ public class WrapperFloatHolder_updateReadOnlyOptionalProperty {
 
     private final WrapperFloatHolder holder;
 
+    @MemberSupport
     public WrapperFloatHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            Float newValue
+            final Float newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Float default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder_updateReadOnlyProperty.java
index 722286b..16be507 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder_updateReadOnlyProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javalang.floats.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -39,10 +40,13 @@ public class WrapperFloatHolder_updateReadOnlyProperty {
 
     private final WrapperFloatHolder holder;
 
-    public WrapperFloatHolder act(Float newValue) {
+    @MemberSupport
+    public WrapperFloatHolder act(final Float newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Float default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder_updateReadOnlyPropertyWithChoices.java
index 7e860f3..b345c5e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder_updateReadOnlyPropertyWithChoices.java
@@ -25,12 +25,14 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.Samples;
+
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -45,13 +47,18 @@ public class WrapperFloatHolder_updateReadOnlyPropertyWithChoices {
 
     private final WrapperFloatHolder holder;
 
-    public WrapperFloatHolder act(Float newValue) {
+    @MemberSupport
+    public WrapperFloatHolder act(final Float newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Float default0Act() {
         return holder.getReadOnlyProperty();
     }
+
+    @MemberSupport
     public List<Float> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/WrapperIntegers.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/WrapperIntegers.java
index 894ccc9..0ccc33c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/WrapperIntegers.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/WrapperIntegers.java
@@ -32,9 +32,11 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolderRepository;
@@ -48,15 +50,17 @@ import demoapp.dom.types.javalang.integers.vm.WrapperIntegerVm;
 //@Log4j2
 public class WrapperIntegers implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Integer (wrapper) data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public WrapperIntegerVm openViewModel(Integer initialValue) {
+    public WrapperIntegerVm openViewModel(final Integer initialValue) {
         return new WrapperIntegerVm(initialValue);
     }
+    @MemberSupport
     public Integer default0OpenViewModel() {
         return 12345678;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder_updateReadOnlyOptionalProperty.java
index 09087ef..1961abd 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder_updateReadOnlyOptionalProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javalang.integers.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -41,13 +42,15 @@ public class WrapperIntegerHolder_updateReadOnlyOptionalProperty {
 
     private final WrapperIntegerHolder holder;
 
+    @MemberSupport
     public WrapperIntegerHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            Integer newValue
+            final Integer newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
+    @MemberSupport
     public Integer default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder_updateReadOnlyProperty.java
index b484384..1755876 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder_updateReadOnlyProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javalang.integers.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -39,10 +40,13 @@ public class WrapperIntegerHolder_updateReadOnlyProperty {
 
     private final WrapperIntegerHolder holder;
 
-    public WrapperIntegerHolder act(Integer newValue) {
+    @MemberSupport
+    public WrapperIntegerHolder act(final Integer newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Integer default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder_updateReadOnlyPropertyWithChoices.java
index c586a8e..c1088de 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder_updateReadOnlyPropertyWithChoices.java
@@ -25,12 +25,14 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.Samples;
+
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -45,13 +47,18 @@ public class WrapperIntegerHolder_updateReadOnlyPropertyWithChoices {
 
     private final WrapperIntegerHolder holder;
 
-    public WrapperIntegerHolder act(Integer newValue) {
+    @MemberSupport
+    public WrapperIntegerHolder act(final Integer newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Integer default0Act() {
         return holder.getReadOnlyProperty();
     }
+
+    @MemberSupport
     public List<Integer> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/WrapperLongs.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/WrapperLongs.java
index ef707f8..b3be613 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/WrapperLongs.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/WrapperLongs.java
@@ -32,9 +32,11 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolderRepository;
@@ -48,15 +50,17 @@ import demoapp.dom.types.javalang.longs.vm.WrapperLongVm;
 //@Log4j2
 public class WrapperLongs implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Long (wrapper) data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public WrapperLongVm openViewModel(Long initialValue) {
+    public WrapperLongVm openViewModel(final Long initialValue) {
         return new WrapperLongVm(initialValue);
     }
+    @MemberSupport
     public Long default0OpenViewModel() {
         return 123_456_789_012L;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder_updateReadOnlyOptionalProperty.java
index 5ac21b5..65a61e2 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder_updateReadOnlyOptionalProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javalang.longs.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -41,13 +42,16 @@ public class WrapperLongHolder_updateReadOnlyOptionalProperty {
 
     private final WrapperLongHolder holder;
 
+    @MemberSupport
     public WrapperLongHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            Long newValue
+            final Long newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Long default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder_updateReadOnlyProperty.java
index a49f758..e2c4fbf 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder_updateReadOnlyProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javalang.longs.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -39,10 +40,13 @@ public class WrapperLongHolder_updateReadOnlyProperty {
 
     private final WrapperLongHolder holder;
 
-    public WrapperLongHolder act(Long newValue) {
+    @MemberSupport
+    public WrapperLongHolder act(final Long newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Long default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder_updateReadOnlyPropertyWithChoices.java
index 7334bc8..c5db8e6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder_updateReadOnlyPropertyWithChoices.java
@@ -25,12 +25,14 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.Samples;
+
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -45,13 +47,18 @@ public class WrapperLongHolder_updateReadOnlyPropertyWithChoices {
 
     private final WrapperLongHolder holder;
 
-    public WrapperLongHolder act(Long newValue) {
+    @MemberSupport
+    public WrapperLongHolder act(final Long newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Long default0Act() {
         return holder.getReadOnlyProperty();
     }
+
+    @MemberSupport
     public List<Long> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/WrapperShorts.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/WrapperShorts.java
index 9bbb690..fe2dd44 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/WrapperShorts.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/WrapperShorts.java
@@ -32,9 +32,11 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolderRepository;
@@ -48,15 +50,17 @@ import demoapp.dom.types.javalang.shorts.vm.WrapperShortVm;
 //@Log4j2
 public class WrapperShorts implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Short (wrapper) data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public WrapperShortVm openViewModel(Short initialValue) {
+    public WrapperShortVm openViewModel(final Short initialValue) {
         return new WrapperShortVm(initialValue);
     }
+    @MemberSupport
     public Short default0OpenViewModel() {
         return (short)12345;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder_updateReadOnlyOptionalProperty.java
index 74225b2..02500d1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder_updateReadOnlyOptionalProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javalang.shorts.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -41,13 +42,16 @@ public class WrapperShortHolder_updateReadOnlyOptionalProperty {
 
     private final WrapperShortHolder holder;
 
+    @MemberSupport
     public WrapperShortHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            Short newValue
+            final Short newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Short default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder_updateReadOnlyProperty.java
index a849ef9..2e8a28c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder_updateReadOnlyProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javalang.shorts.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -39,10 +40,13 @@ public class WrapperShortHolder_updateReadOnlyProperty {
 
     private final WrapperShortHolder holder;
 
-    public WrapperShortHolder act(Short newValue) {
+    @MemberSupport
+    public WrapperShortHolder act(final Short newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Short default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder_updateReadOnlyPropertyWithChoices.java
index d96432f..53ce4e1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder_updateReadOnlyPropertyWithChoices.java
@@ -25,12 +25,14 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.Samples;
+
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -45,13 +47,18 @@ public class WrapperShortHolder_updateReadOnlyPropertyWithChoices {
 
     private final WrapperShortHolder holder;
 
-    public WrapperShortHolder act(Short newValue) {
+    @MemberSupport
+    public WrapperShortHolder act(final Short newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public Short default0Act() {
         return holder.getReadOnlyProperty();
     }
+
+    @MemberSupport
     public List<Short> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/JavaLangStrings.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/JavaLangStrings.java
index b516e82..f891525 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/JavaLangStrings.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/JavaLangStrings.java
@@ -32,9 +32,11 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolderRepository;
@@ -49,15 +51,17 @@ import demoapp.dom.types.javalang.strings.vm.JavaLangStringVm;
 //@Log4j2
 public class JavaLangStrings implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "String data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public JavaLangStringVm openViewModel(String initialValue) {
+    public JavaLangStringVm openViewModel(final String initialValue) {
         return new JavaLangStringVm(initialValue);
     }
+    @MemberSupport
     public String default0OpenViewModel() {
         return samples.single();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder_updateReadOnlyOptionalProperty.java
index d761869..9ea4df6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder_updateReadOnlyOptionalProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javalang.strings.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -41,13 +42,16 @@ public class JavaLangStringHolder_updateReadOnlyOptionalProperty {
 
     private final JavaLangStringHolder holder;
 
+    @MemberSupport
     public JavaLangStringHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            String newValue
+            final String newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public String default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder_updateReadOnlyProperty.java
index 5f9d9a7..91464cc 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder_updateReadOnlyProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javalang.strings.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -39,10 +40,13 @@ public class JavaLangStringHolder_updateReadOnlyProperty {
 
     private final JavaLangStringHolder holder;
 
-    public JavaLangStringHolder act(String newValue) {
+    @MemberSupport
+    public JavaLangStringHolder act(final String newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public String default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder_updateReadOnlyPropertyWithChoices.java
index 0fd4c95..b4a2194 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder_updateReadOnlyPropertyWithChoices.java
@@ -25,12 +25,14 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.Samples;
+
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -45,13 +47,18 @@ public class JavaLangStringHolder_updateReadOnlyPropertyWithChoices {
 
     private final JavaLangStringHolder holder;
 
-    public JavaLangStringHolder act(String newValue) {
+    @MemberSupport
+    public JavaLangStringHolder act(final String newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public String default0Act() {
         return holder.getReadOnlyProperty();
     }
+
+    @MemberSupport
     public List<String> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/voids/JavaLangVoids.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/voids/JavaLangVoids.java
index 8cd9ffd..8773ce8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/voids/JavaLangVoids.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/voids/JavaLangVoids.java
@@ -30,8 +30,7 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.extern.log4j.Log4j2;
+import org.apache.isis.applib.annotation.Title;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 
@@ -39,9 +38,10 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(nature=Nature.VIEW_MODEL, logicalTypeName = "demo.JavaLangVoids", editing=Editing.ENABLED)
-@Log4j2
+//@Log4j2
 public class JavaLangVoids implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "Void data type";
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/JavaMathBigDecimals.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/JavaMathBigDecimals.java
index 1939f10..d3ccfde 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/JavaMathBigDecimals.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/JavaMathBigDecimals.java
@@ -33,9 +33,11 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolderRepository;
@@ -50,15 +52,17 @@ import demoapp.dom.types.javamath.bigdecimals.vm.JavaMathBigDecimalVm;
 //@Log4j2
 public class JavaMathBigDecimals implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "java.math.BigDecimal data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public JavaMathBigDecimalVm openViewModel(java.math.BigDecimal initialValue) {
+    public JavaMathBigDecimalVm openViewModel(final java.math.BigDecimal initialValue) {
         return new JavaMathBigDecimalVm(initialValue);
     }
+    @MemberSupport
     public java.math.BigDecimal default0OpenViewModel() {
         return samples.single();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder_updateReadOnlyOptionalProperty.java
index 21e8a11..027b610 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder_updateReadOnlyOptionalProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javamath.bigdecimals.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -41,13 +42,16 @@ public class JavaMathBigDecimalHolder_updateReadOnlyOptionalProperty {
 
     private final JavaMathBigDecimalHolder holder;
 
+    @MemberSupport
     public JavaMathBigDecimalHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            java.math.BigDecimal newValue
+            final java.math.BigDecimal newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public java.math.BigDecimal default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder_updateReadOnlyProperty.java
index 9e560c7..f36c4e9 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder_updateReadOnlyProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javamath.bigdecimals.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -39,10 +40,13 @@ public class JavaMathBigDecimalHolder_updateReadOnlyProperty {
 
     private final JavaMathBigDecimalHolder holder;
 
-    public JavaMathBigDecimalHolder act(java.math.BigDecimal newValue) {
+    @MemberSupport
+    public JavaMathBigDecimalHolder act(final java.math.BigDecimal newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public java.math.BigDecimal default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder_updateReadOnlyPropertyWithChoices.java
index 8bf95ce..ca4b9e9 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder_updateReadOnlyPropertyWithChoices.java
@@ -26,12 +26,14 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.Samples;
+
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -46,13 +48,18 @@ public class JavaMathBigDecimalHolder_updateReadOnlyPropertyWithChoices {
 
     private final JavaMathBigDecimalHolder holder;
 
-    public JavaMathBigDecimalHolder act(java.math.BigDecimal newValue) {
+    @MemberSupport
+    public JavaMathBigDecimalHolder act(final java.math.BigDecimal newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public java.math.BigDecimal default0Act() {
         return holder.getReadOnlyProperty();
     }
+
+    @MemberSupport
     public List<java.math.BigDecimal> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/JavaMathBigIntegers.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/JavaMathBigIntegers.java
index 8e9a2dc..76fea61 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/JavaMathBigIntegers.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/JavaMathBigIntegers.java
@@ -33,9 +33,11 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolderRepository;
@@ -50,15 +52,17 @@ import demoapp.dom.types.javamath.bigintegers.vm.JavaMathBigIntegerVm;
 //@Log4j2
 public class JavaMathBigIntegers implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "java.math.BigInteger data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public JavaMathBigIntegerVm openViewModel(java.math.BigInteger initialValue) {
+    public JavaMathBigIntegerVm openViewModel(final java.math.BigInteger initialValue) {
         return new JavaMathBigIntegerVm(initialValue);
     }
+    @MemberSupport
     public java.math.BigInteger default0OpenViewModel() {
         return samples.single();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder_updateReadOnlyOptionalProperty.java
index e323c7f..360ac13 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder_updateReadOnlyOptionalProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javamath.bigintegers.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -41,13 +42,16 @@ public class JavaMathBigIntegerHolder_updateReadOnlyOptionalProperty {
 
     private final JavaMathBigIntegerHolder holder;
 
+    @MemberSupport
     public JavaMathBigIntegerHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            java.math.BigInteger newValue
+            final java.math.BigInteger newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public java.math.BigInteger default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder_updateReadOnlyProperty.java
index 5b1305f..971ca30 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder_updateReadOnlyProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javamath.bigintegers.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -39,10 +40,13 @@ public class JavaMathBigIntegerHolder_updateReadOnlyProperty {
 
     private final JavaMathBigIntegerHolder holder;
 
-    public JavaMathBigIntegerHolder act(java.math.BigInteger newValue) {
+    @MemberSupport
+    public JavaMathBigIntegerHolder act(final java.math.BigInteger newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public java.math.BigInteger default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder_updateReadOnlyPropertyWithChoices.java
index 26eda9e..b6a6298 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder_updateReadOnlyPropertyWithChoices.java
@@ -26,12 +26,14 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.Samples;
+
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -46,13 +48,18 @@ public class JavaMathBigIntegerHolder_updateReadOnlyPropertyWithChoices {
 
     private final JavaMathBigIntegerHolder holder;
 
-    public JavaMathBigIntegerHolder act(java.math.BigInteger newValue) {
+    @MemberSupport
+    public JavaMathBigIntegerHolder act(final java.math.BigInteger newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public java.math.BigInteger default0Act() {
         return holder.getReadOnlyProperty();
     }
+
+    @MemberSupport
     public List<java.math.BigInteger> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/JavaNetUrls.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/JavaNetUrls.java
index 37aea04..046ea4a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/JavaNetUrls.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/JavaNetUrls.java
@@ -33,9 +33,11 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolderRepository;
@@ -50,15 +52,17 @@ import demoapp.dom.types.javanet.urls.vm.JavaNetUrlVm;
 //@Log4j2
 public class JavaNetUrls implements HasAsciiDocDescription {
 
+    @Title
     public String title() {
         return "java.net.URL data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public JavaNetUrlVm openViewModel(java.net.URL initialValue) {
+    public JavaNetUrlVm openViewModel(final java.net.URL initialValue) {
         return new JavaNetUrlVm(initialValue);
     }
+    @MemberSupport
     public java.net.URL default0OpenViewModel() {
         return samples.single();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder_updateReadOnlyOptionalProperty.java
index a12980c..62d6269 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder_updateReadOnlyOptionalProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javanet.urls.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
@@ -41,13 +42,16 @@ public class JavaNetUrlHolder_updateReadOnlyOptionalProperty {
 
     private final JavaNetUrlHolder holder;
 
+    @MemberSupport
     public JavaNetUrlHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            java.net.URL newValue
+            final java.net.URL newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public java.net.URL default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder_updateReadOnlyProperty.java
index 421f09d..e72f96e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder_updateReadOnlyProperty.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.javanet.urls.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
@@ -39,10 +40,13 @@ public class JavaNetUrlHolder_updateReadOnlyProperty {
 
     private final JavaNetUrlHolder holder;
 
-    public JavaNetUrlHolder act(java.net.URL newValue) {
+    @MemberSupport
+    public JavaNetUrlHolder act(final java.net.URL newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
+
+    @MemberSupport
     public java.net.URL default0Act() {
         return holder.getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder_updateReadOnlyPropertyWithChoices.java
index 5f1f2e0..5122e36 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder_updateReadOnlyPropertyWithChoices.java
@@ -26,12 +26,14 @@ import javax.inject.Inject;
... 3928 lines suppressed ...