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 2022/10/20 09:34:18 UTC

[isis] branch post-rename updated: ISIS-3142: rename core packages and artifacts

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

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


The following commit(s) were added to refs/heads/post-rename by this push:
     new 5821355927 ISIS-3142: rename core packages and artifacts
5821355927 is described below

commit 5821355927f6e6836673eea27828913bc2c4dc1f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Oct 20 11:33:57 2022 +0200

    ISIS-3142: rename core packages and artifacts
---
 antora/pom.xml                                     |    6 +-
 api/applib/pom.xml                                 |   28 +-
 api/applib/src/main/java/module-info.java          |  224 +-
 .../org/apache/causeway/applib/Identifier.java     |  333 ++
 .../apache/causeway/applib/IsisModuleApplib.java   |  148 +
 .../IsisModuleApplibChangeAndExecutionLoggers.java |   47 +
 .../causeway/applib/IsisModuleApplibMixins.java    |   47 +
 .../java/org/apache/causeway/applib/ViewModel.java |   41 +
 .../apache/causeway/applib/annotation/Action.java  |  233 ++
 .../causeway/applib/annotation/ActionLayout.java   |  265 ++
 .../causeway/applib/annotation/BookmarkPolicy.java |   54 +
 .../causeway/applib/annotation/Bounding.java       |   30 +
 .../causeway/applib/annotation/Collection.java     |  108 +
 .../applib/annotation/CollectionLayout.java        |  179 ++
 .../applib/annotation/DependentDefaultsPolicy.java |   55 +
 .../apache/causeway/applib/annotation/Domain.java  |   84 +
 .../causeway/applib/annotation/DomainObject.java   |  435 +++
 .../applib/annotation/DomainObjectLayout.java      |  215 ++
 .../causeway/applib/annotation/DomainService.java  |   95 +
 .../applib/annotation/DomainServiceLayout.java     |   83 +
 .../apache/causeway/applib/annotation/Editing.java |   52 +
 .../applib/annotation/EntityChangeKind.java        |   29 +
 .../causeway/applib/annotation/HomePage.java       |   42 +
 .../applib/annotation/InteractionScope.java        |   53 +
 .../causeway/applib/annotation/Introspection.java  |  225 ++
 .../causeway/applib/annotation/LabelPosition.java  |   50 +
 .../applib/annotation/LogicalTypeName.java         |   51 +
 .../causeway/applib/annotation/MemberSupport.java  |   50 +
 .../causeway/applib/annotation/MinLength.java      |   37 +
 .../apache/causeway/applib/annotation/Module.java  |   60 +
 .../apache/causeway/applib/annotation/Nature.java  |  104 +
 .../applib/annotation/NatureOfService.java         |   60 +
 .../causeway/applib/annotation/Navigable.java      |   40 +
 .../applib/annotation/ObjectLifecycle.java         |   50 +
 .../causeway/applib/annotation/ObjectSupport.java  |   50 +
 .../causeway/applib/annotation/Optionality.java    |   70 +
 .../causeway/applib/annotation/Parameter.java      |  150 +
 .../applib/annotation/ParameterLayout.java         |  130 +
 .../applib/annotation/PriorityPrecedence.java      |   82 +
 .../causeway/applib/annotation/Programmatic.java   |   54 +
 .../causeway/applib/annotation/Projecting.java     |   38 +
 .../causeway/applib/annotation/PromptStyle.java    |   91 +
 .../causeway/applib/annotation/Property.java       |  295 ++
 .../causeway/applib/annotation/PropertyLayout.java |  259 ++
 .../causeway/applib/annotation/Publishing.java     |   70 +
 .../causeway/applib/annotation/Redirect.java       |   48 +
 .../causeway/applib/annotation/Repainting.java     |   45 +
 .../causeway/applib/annotation/RestrictTo.java     |   33 +
 .../causeway/applib/annotation/SemanticsOf.java    |  148 +
 .../causeway/applib/annotation/Snapshot.java       |   48 +
 .../applib/annotation/TableDecoration.java         |   60 +
 .../causeway/applib/annotation/TimePrecision.java  |   59 +
 .../applib/annotation/TimeZoneTranslation.java     |   44 +
 .../apache/causeway/applib/annotation/Title.java   |   67 +
 .../apache/causeway/applib/annotation/Value.java   |   58 +
 .../causeway/applib/annotation/ValueSemantics.java |  178 ++
 .../apache/causeway/applib/annotation/Where.java   |  225 ++
 .../causeway/applib/annotation/package-info.java   |   23 +
 .../client/RepresentationTypeSimplifiedV2.java     |  142 +
 .../causeway/applib/client/SuppressionType.java    |  100 +
 .../apache/causeway/applib/clock/VirtualClock.java |  381 +++
 .../causeway/applib/clock/VirtualClock_frozen.java |   66 +
 .../causeway/applib/clock/VirtualClock_system.java |   57 +
 .../applib/clock/VirtualClock_withOffset.java      |   70 +
 .../causeway/applib/domain/DomainObjectList.java   |  194 ++
 .../events/ActionArgumentUsabilityEvent.java       |   61 +
 .../events/ActionArgumentVisibilityEvent.java      |   61 +
 .../causeway/applib/events/EventObjectBase.java    |   78 +
 .../applib/events/domain/AbstractDomainEvent.java  |  498 +++
 .../applib/events/domain/ActionDomainEvent.java    |  232 ++
 .../events/domain/CollectionDomainEvent.java       |  104 +
 .../applib/events/domain/PropertyDomainEvent.java  |  156 +
 .../events/lifecycle/AbstractLifecycleEvent.java   |   39 +
 .../events/lifecycle/ObjectCreatedEvent.java       |   67 +
 .../applib/events/lifecycle/ObjectLoadedEvent.java |   63 +
 .../events/lifecycle/ObjectPersistedEvent.java     |   63 +
 .../events/lifecycle/ObjectPersistingEvent.java    |   62 +
 .../events/lifecycle/ObjectRemovingEvent.java      |   63 +
 .../events/lifecycle/ObjectUpdatedEvent.java       |   60 +
 .../events/lifecycle/ObjectUpdatingEvent.java      |   60 +
 .../applib/events/metamodel/MetamodelEvent.java    |   34 +
 .../applib/events/metamodel/MetamodelListener.java |   84 +
 .../causeway/applib/events/ui/AbstractUiEvent.java |   61 +
 .../causeway/applib/events/ui/CssClassUiEvent.java |  104 +
 .../causeway/applib/events/ui/IconUiEvent.java     |  124 +
 .../causeway/applib/events/ui/LayoutUiEvent.java   |  104 +
 .../causeway/applib/events/ui/TitleUiEvent.java    |  133 +
 .../applib/exceptions/RecoverableException.java    |  108 +
 .../applib/exceptions/TranslatableException.java   |   49 +
 .../applib/exceptions/UnrecoverableException.java  |  101 +
 .../recoverable/InteractionException.java          |   68 +
 .../recoverable/InvalidEntryException.java         |   41 +
 .../recoverable/TextEntryParseException.java       |   42 +
 .../unrecoverable/DomainModelException.java        |   44 +
 .../unrecoverable/MetaModelException.java          |   41 +
 .../unrecoverable/NoAuthenticatorException.java    |   44 +
 .../unrecoverable/ObjectNotFoundException.java     |   39 +
 .../unrecoverable/ObjectPersistenceException.java  |   40 +
 .../unrecoverable/PersistFailedException.java      |   54 +
 .../unrecoverable/ReflectiveActionException.java   |   41 +
 .../unrecoverable/RepositoryException.java         |   52 +
 .../unrecoverable/UnexpectedCallException.java     |   36 +
 .../unrecoverable/UnknownTypeException.java        |   37 +
 .../org/apache/causeway/applib/graph/Edge.java     |   31 +
 .../apache/causeway/applib/graph/SimpleEdge.java   |   42 +
 .../org/apache/causeway/applib/graph/Vertex.java   |   39 +
 .../causeway/applib/graph/tree/TreeAdapter.java    |   57 +
 .../causeway/applib/graph/tree/TreeNode.java       |  303 ++
 .../graph/tree/TreeNode_iteratorBreadthFirst.java  |   60 +
 .../graph/tree/TreeNode_iteratorDepthFirst.java    |   71 +
 .../graph/tree/TreeNode_iteratorHierarchyUp.java   |   53 +
 .../causeway/applib/graph/tree/TreePath.java       |   60 +
 .../applib/graph/tree/TreePath_Default.java        |   90 +
 .../causeway/applib/graph/tree/TreeState.java      |   35 +
 .../applib/graph/tree/TreeState_Default.java       |   34 +
 .../apache/causeway/applib/id/HasLogicalType.java  |   35 +
 .../org/apache/causeway/applib/id/LogicalType.java |  360 +++
 .../causeway/applib/jaxb/DataTypeFactory.java      |   58 +
 .../causeway/applib/jaxb/JavaSqlJaxbAdapters.java  |   82 +
 .../JavaSqlXMLGregorianCalendarMarshalling.java    |   66 +
 .../causeway/applib/jaxb/JavaTimeJaxbAdapters.java |  169 +
 .../JavaTimeXMLGregorianCalendarMarshalling.java   |  156 +
 .../causeway/applib/jaxb/JavaUtilJaxbAdapters.java |   54 +
 .../applib/jaxb/PersistentEntitiesAdapter.java     |   67 +
 .../applib/jaxb/PersistentEntityAdapter.java       |   50 +
 .../applib/jaxb/PrimitiveJaxbAdapters.java         |   49 +
 .../causeway/applib/layout/LayoutConstants.java    |  139 +
 .../applib/layout/component/ActionLayoutData.java  |  282 ++
 .../layout/component/ActionLayoutDataOwner.java    |   29 +
 .../layout/component/CollectionLayoutData.java     |  278 ++
 .../component/CollectionLayoutDataOwner.java       |   28 +
 .../layout/component/CssClassFaPosition.java       |   35 +
 .../layout/component/DomainObjectLayoutData.java   |  238 ++
 .../component/DomainObjectLayoutDataOwner.java     |   28 +
 .../causeway/applib/layout/component/FieldSet.java |  208 ++
 .../applib/layout/component/FieldSetOwner.java     |   28 +
 .../applib/layout/component/HasBookmarking.java    |   32 +
 .../applib/layout/component/HasCssClass.java       |   30 +
 .../applib/layout/component/HasCssClassFa.java     |   36 +
 .../applib/layout/component/HasDescribedAs.java    |   32 +
 .../applib/layout/component/HasHidden.java         |   34 +
 .../causeway/applib/layout/component/HasNamed.java |   32 +
 .../applib/layout/component/MemberRegion.java      |   35 +
 .../applib/layout/component/MemberRegionOwner.java |   26 +
 .../causeway/applib/layout/component/Owned.java    |   26 +
 .../causeway/applib/layout/component/Owner.java    |   26 +
 .../layout/component/PropertyLayoutData.java       |  289 ++
 .../layout/component/ServiceActionLayoutData.java  |  249 ++
 .../component/ServiceActionLayoutDataOwner.java    |   29 +
 .../applib/layout/component/TableDecoration.java   |   31 +
 .../applib/layout/component/package-info.java      |   39 +
 .../apache/causeway/applib/layout/grid/Grid.java   |   97 +
 .../causeway/applib/layout/grid/GridAbstract.java  |  210 ++
 .../applib/layout/grid/bootstrap/BSClearFix.java   |   55 +
 .../layout/grid/bootstrap/BSClearFixHidden.java    |   49 +
 .../layout/grid/bootstrap/BSClearFixVisible.java   |   65 +
 .../applib/layout/grid/bootstrap/BSCol.java        |  286 ++
 .../applib/layout/grid/bootstrap/BSElement.java    |   38 +
 .../layout/grid/bootstrap/BSElementAbstract.java   |   52 +
 .../applib/layout/grid/bootstrap/BSGrid.java       |  305 ++
 .../applib/layout/grid/bootstrap/BSRow.java        |  142 +
 .../applib/layout/grid/bootstrap/BSRowContent.java |   81 +
 .../layout/grid/bootstrap/BSRowContentOwner.java   |   28 +
 .../applib/layout/grid/bootstrap/BSRowOwner.java   |   31 +
 .../applib/layout/grid/bootstrap/BSTab.java        |  179 ++
 .../applib/layout/grid/bootstrap/BSTabGroup.java   |  140 +
 .../layout/grid/bootstrap/BSTabGroupOwner.java     |   31 +
 .../applib/layout/grid/bootstrap/BSTabOwner.java   |   31 +
 .../applib/layout/grid/bootstrap/HasCssId.java     |   31 +
 .../applib/layout/grid/bootstrap/Size.java         |   37 +
 .../applib/layout/grid/bootstrap/SizeSpan.java     |  114 +
 .../applib/layout/grid/bootstrap/WithinGrid.java   |   30 +
 .../applib/layout/grid/bootstrap/package-info.java |   37 +
 .../apache/causeway/applib/layout/links/Link.java  |   96 +
 .../causeway/applib/layout/links/package-info.java |   38 +
 .../causeway/applib/layout/menubars/HasNamed.java  |   31 +
 .../causeway/applib/layout/menubars/Menu.java      |   26 +
 .../causeway/applib/layout/menubars/MenuBar.java   |   26 +
 .../causeway/applib/layout/menubars/MenuBars.java  |   53 +
 .../applib/layout/menubars/MenuBarsAbstract.java   |   71 +
 .../applib/layout/menubars/MenuSection.java        |   33 +
 .../applib/layout/menubars/bootstrap/BSMenu.java   |  113 +
 .../layout/menubars/bootstrap/BSMenuBar.java       |   64 +
 .../layout/menubars/bootstrap/BSMenuBars.java      |  229 ++
 .../layout/menubars/bootstrap/BSMenuSection.java   |   79 +
 .../layout/menubars/bootstrap/package-info.java    |   38 +
 .../causeway/applib/layout/package-info.java       |   25 +
 .../apache/causeway/applib/locale/UserLocale.java  |   67 +
 .../org/apache/causeway/applib/mixins/dto/Dto.java |   48 +
 .../applib/mixins/dto/DtoMixinConstants.java       |   32 +
 .../applib/mixins/dto/Dto_downloadXml.java         |   83 +
 .../applib/mixins/dto/Dto_downloadXsd.java         |  141 +
 .../causeway/applib/mixins/dto/package-info.java   |   28 +
 .../mixins/layout/Object_downloadLayoutXml.java    |   96 +
 .../metamodel/Object_downloadMetamodelXml.java     |  121 +
 .../mixins/metamodel/Object_logicalTypeName.java   |   86 +
 .../mixins/metamodel/Object_objectIdentifier.java  |   86 +
 .../mixins/metamodel/Object_rebuildMetamodel.java  |   72 +
 .../applib/mixins/rest/Object_openRestApi.java     |   87 +
 .../applib/mixins/security/HasUsername.java        |   72 +
 .../applib/mixins/system/DomainChangeRecord.java   |  335 ++
 .../applib/mixins/system/HasInteractionId.java     |   62 +
 .../mixins/system/HasInteractionIdAndSequence.java |   93 +
 .../mixins/system/HasTarget_openTargetObject.java  |   83 +
 .../applib/mixins/updates/OnUpdatedAt.java         |   32 +
 .../applib/mixins/updates/OnUpdatedBy.java         |   41 +
 .../applib/mixins/updates/OnUpdatedByAndAt.java    |   31 +
 .../causeway/applib/query/AllInstancesQuery.java   |   26 +
 .../apache/causeway/applib/query/NamedQuery.java   |   41 +
 .../org/apache/causeway/applib/query/Query.java    |   97 +
 .../apache/causeway/applib/query/QueryRange.java   |  136 +
 .../applib/query/_AllInstancesQueryDefault.java    |   48 +
 .../causeway/applib/query/_NamedQueryDefault.java  |   82 +
 .../causeway/applib/query/_QueryAbstract.java      |   33 +
 .../causeway/applib/query/_QueryRangeDefault.java  |   87 +
 .../services/acceptheader/AcceptHeaderService.java |   47 +
 .../services/appfeat/ApplicationFeature.java       |  111 +
 .../services/appfeat/ApplicationFeatureId.java     |  453 +++
 .../appfeat/ApplicationFeatureRepository.java      |   55 +
 .../services/appfeat/ApplicationFeatureSort.java   |   69 +
 .../services/appfeat/ApplicationMemberSort.java    |   35 +
 .../applib/services/appfeat/package-info.java      |   27 +
 .../services/appfeatui/ApplicationFeatureMenu.java |  176 +
 .../appfeatui/ApplicationFeatureViewModel.java     |  417 +++
 ...ApplicationFeatureViewModel.layout.fallback.xml |    0
 .../appfeatui/ApplicationFeatureViewModel.png      |  Bin
 .../services/appfeatui/ApplicationNamespace.java   |   86 +
 .../applib/services/appfeatui/ApplicationType.java |  135 +
 .../services/appfeatui/ApplicationTypeAction.java  |  110 +
 .../appfeatui/ApplicationTypeCollection.java       |  107 +
 .../services/appfeatui/ApplicationTypeMember.java  |   88 +
 .../appfeatui/ApplicationTypeProperty.java         |  178 ++
 .../applib/services/bookmark/Bookmark.java         |  234 ++
 .../applib/services/bookmark/BookmarkHolder.java   |   38 +
 .../services/bookmark/BookmarkHolder_lookup.java   |   56 +
 .../services/bookmark/BookmarkHolder_object.java   |   51 +
 .../applib/services/bookmark/BookmarkService.java  |   94 +
 .../applib/services/bookmark/HasTarget.java        |   54 +
 .../applib/services/bookmark/IdStringifier.java    |  186 ++
 .../causeway/applib/services/bookmark/Oid.java     |   47 +
 .../idstringifiers/PredefinedSerializables.java    |   88 +
 .../applib/services/bookmark/package-info.java     |   27 +
 .../services/bookmarkui/BookmarkUiService.java     |   32 +
 .../applib/services/clock/ClockService.java        |   68 +
 .../causeway/applib/services/command/Command.java  |  377 +++
 .../services/command/CommandExecutorService.java   |  165 +
 .../services/command/CommandOutcomeHandler.java    |   72 +
 .../applib/services/command/package-info.java      |   19 +
 .../applib/services/commanddto/HasCommandDto.java  |   56 +
 .../conmap/ContentMappingServiceForCommandDto.java |  112 +
 .../ContentMappingServiceForCommandsDto.java       |  100 +
 .../services/commanddto/conmap/UserDataKeys.java   |   35 +
 .../commanddto/processor/CommandDtoProcessor.java  |   57 +
 .../CommandDtoProcessorForActionAbstract.java      |   40 +
 .../CommandDtoProcessorForPropertyAbstract.java    |   34 +
 .../processor/spi/CommandDtoProcessorService.java  |   64 +
 .../spi/CommandDtoProcessorServiceIdentity.java    |   45 +
 .../services/confview/ConfigurationMenu.java       |   77 +
 .../services/confview/ConfigurationProperty.java   |   79 +
 .../ConfigurationProperty.layout.fallback.xml      |    0
 .../services/confview/ConfigurationProperty.png    |  Bin
 .../confview/ConfigurationViewService.java         |   44 +
 .../services/confview/ConfigurationViewmodel.java  |   67 +
 .../ConfigurationViewmodel.layout.fallback.xml     |    0
 .../services/confview/ConfigurationViewmodel.png   |  Bin
 .../applib/services/confview/package-info.java     |   26 +
 .../services/conmap/ContentMappingService.java     |   68 +
 .../applib/services/conmap/package-info.java       |   27 +
 .../applib/services/email/EmailService.java        |   65 +
 .../applib/services/email/package-info.java        |   26 +
 .../applib/services/error/ErrorDetails.java        |   86 +
 .../services/error/ErrorReportingService.java      |   55 +
 .../applib/services/error/SimpleTicket.java        |  135 +
 .../causeway/applib/services/error/Ticket.java     |   87 +
 .../applib/services/error/package-info.java        |   28 +
 .../applib/services/eventbus/EventBusService.java  |   47 +
 .../applib/services/eventbus/package-info.java     |   26 +
 .../applib/services/exceprecog/Category.java       |   71 +
 .../services/exceprecog/ExceptionRecognizer.java   |   73 +
 .../exceprecog/ExceptionRecognizerAbstract.java    |  144 +
 .../exceprecog/ExceptionRecognizerForType.java     |  130 +
 .../exceprecog/ExceptionRecognizerService.java     |   62 +
 .../applib/services/exceprecog/Recognition.java    |  140 +
 .../services/exceprecog/RootCauseFinder.java       |   36 +
 .../applib/services/exceprecog/package-info.java   |   28 +
 .../applib/services/factory/FactoryService.java    |  167 +
 .../applib/services/factory/package-info.java      |   26 +
 .../applib/services/grid/GridLoaderService.java    |   85 +
 .../causeway/applib/services/grid/GridService.java |  179 ++
 .../applib/services/grid/GridSystemService.java    |  135 +
 .../applib/services/grid/package-info.java         |   26 +
 .../causeway/applib/services/health/Health.java    |   46 +
 .../applib/services/health/HealthCheckService.java |   46 +
 .../applib/services/hint/HintIdProvider.java       |   45 +
 .../causeway/applib/services/hint/HintStore.java   |  101 +
 .../applib/services/hint/package-info.java         |   28 +
 .../services/homepage/HomePageResolverService.java |   33 +
 .../applib/services/homepage/package-info.java     |   24 +
 .../services/i18n/HasTranslationContext.java       |   31 +
 .../applib/services/i18n/LanguageProvider.java     |   42 +
 .../apache/causeway/applib/services/i18n/Mode.java |   79 +
 .../applib/services/i18n/TranslatableString.java   |  278 ++
 .../applib/services/i18n/TranslationContext.java   |   88 +
 .../applib/services/i18n/TranslationService.java   |   90 +
 .../applib/services/i18n/TranslationsResolver.java |   49 +
 .../applib/services/i18n/package-info.java         |   28 +
 .../applib/services/iactn/ActionInvocation.java    |   48 +
 .../causeway/applib/services/iactn/Execution.java  |  349 ++
 .../applib/services/iactn/HasInteractionDto.java   |   51 +
 .../applib/services/iactn/Interaction.java         |   89 +
 .../applib/services/iactn/InteractionProvider.java |   91 +
 .../applib/services/iactn/PropertyEdit.java        |   47 +
 .../applib/services/iactn/package-info.java        |   29 +
 .../services/iactnlayer/InteractionContext.java    |  181 ++
 .../services/iactnlayer/InteractionLayer.java      |   57 +
 .../iactnlayer/InteractionLayerTracker.java        |   85 +
 .../services/iactnlayer/InteractionService.java    |  215 ++
 .../applib/services/inject/ServiceInjector.java    |   43 +
 .../jaxb/CatalogingSchemaOutputResolver.java       |  154 +
 .../causeway/applib/services/jaxb/IsisSchemas.java |   58 +
 .../causeway/applib/services/jaxb/JaxbService.java |  257 ++
 .../services/jaxb/StreamResultWithWriter.java      |   47 +
 .../applib/services/jaxb/package-info.java         |   26 +
 .../keyvaluestore/KeyValueSessionStore.java        |   80 +
 .../applib/services/layout/LayoutExportStyle.java  |   60 +
 .../applib/services/layout/LayoutService.java      |   47 +
 .../applib/services/layout/LayoutServiceMenu.java  |  124 +
 .../applib/services/layout/package-info.java       |   27 +
 .../applib/services/linking/DeepLinkService.java   |   48 +
 .../applib/services/linking/package-info.java      |   26 +
 .../services/locale/LocaleChoiceProvider.java      |   33 +
 .../services/menu/MenuBarsLoaderService.java       |   57 +
 .../applib/services/menu/MenuBarsService.java      |   87 +
 .../applib/services/message/MessageService.java    |  188 ++
 .../applib/services/message/package-info.java      |   26 +
 .../applib/services/metamodel/BeanSort.java        |  154 +
 .../causeway/applib/services/metamodel/Config.java |   77 +
 .../applib/services/metamodel/DomainMember.java    |   49 +
 .../applib/services/metamodel/DomainModel.java     |   52 +
 .../services/metamodel/MetaModelService.java       |  138 +
 .../services/metamodel/MetaModelServiceMenu.java   |  323 ++
 .../applib/services/metamodel/_AsciiExport.java    |  118 +
 .../applib/services/metamodel/_CsvExport.java      |   80 +
 .../applib/services/metamodel/_DiffExport.java     |  386 +++
 .../applib/services/metamodel/package-info.java    |   26 +
 .../applib/services/metrics/MetricsService.java    |   59 +
 .../applib/services/metrics/package-info.java      |   27 +
 .../causeway/applib/services/package-info.java     |   24 +
 .../placeholder/PlaceholderRenderService.java      |   61 +
 .../services/publishing/log/CommandLogger.java     |   68 +
 .../publishing/log/EntityChangesLogger.java        |   65 +
 .../publishing/log/EntityPropertyChangeLogger.java |   59 +
 .../services/publishing/log/ExecutionLogger.java   |   67 +
 .../applib/services/publishing/package-info.java   |   34 +
 .../services/publishing/spi/CommandSubscriber.java |   43 +
 .../services/publishing/spi/EntityChanges.java     |  108 +
 .../publishing/spi/EntityChangesSubscriber.java    |   55 +
 .../publishing/spi/EntityPropertyChange.java       |   58 +
 .../spi/EntityPropertyChangeSubscriber.java        |   52 +
 .../publishing/spi/ExecutionSubscriber.java        |   72 +
 .../queryresultscache/MethodReferences.java        |   94 +
 .../queryresultscache/QueryResultsCache.java       |  248 ++
 .../QueryResultsCacheControl.java                  |   40 +
 .../services/queryresultscache/package-info.java   |   27 +
 .../registry/InstanceByPriorityComparator.java     |   72 +
 .../applib/services/registry/ServiceRegistry.java  |  166 +
 .../applib/services/registry/package-info.java     |   27 +
 .../applib/services/repository/EntityState.java    |  128 +
 .../services/repository/RepositoryService.java     |  414 +++
 .../applib/services/repository/package-info.java   |   27 +
 .../applib/services/routing/RoutingService.java    |   84 +
 .../applib/services/routing/package-info.java      |   26 +
 .../applib/services/scratchpad/Scratchpad.java     |   51 +
 .../applib/services/scratchpad/package-info.java   |   26 +
 .../applib/services/session/SessionLogger.java     |   73 +
 .../applib/services/session/SessionSubscriber.java |   66 +
 .../applib/services/session/package-info.java      |   24 +
 .../applib/services/sitemap/SitemapService.java    |   30 +
 .../services/sitemap/SitemapServiceMenu.java       |   89 +
 .../causeway/applib/services/sudo/SudoService.java |  132 +
 .../applib/services/sudo/SudoServiceListener.java  |   40 +
 .../causeway/applib/services/swagger/Format.java   |   58 +
 .../applib/services/swagger/SwaggerService.java    |   47 +
 .../applib/services/swagger/Visibility.java        |   86 +
 .../TableColumnOrderForCollectionTypeAbstract.java |  102 +
 .../services/tablecol/TableColumnOrderService.java |  102 +
 .../tablecol/TableColumnVisibilityService.java     |   50 +
 .../applib/services/title/TitleService.java        |   41 +
 .../applib/services/title/package-info.java        |   25 +
 .../services/urlencoding/UrlEncodingService.java   |  107 +
 .../applib/services/urlencoding/package-info.java  |   29 +
 .../applib/services/user/ImpersonateMenu.java      |  183 ++
 .../services/user/ImpersonateMenuAdvisor.java      |   80 +
 .../applib/services/user/ImpersonateStopMenu.java  |  101 +
 .../services/user/ImpersonatedUserHolder.java      |   58 +
 .../causeway/applib/services/user/RoleMemento.java |   95 +
 .../services/user/RoleMemento.layout.fallback.xml  |    0
 .../applib/services/user/RoleMemento.png           |  Bin
 .../user/UserCurrentSessionTimeZoneHolder.java     |   58 +
 .../causeway/applib/services/user/UserMemento.java |  361 +++
 .../services/user/UserMemento.layout.fallback.xml  |    0
 .../applib/services/user/UserMemento.png           |  Bin
 .../causeway/applib/services/user/UserService.java |  256 ++
 .../services/userreg/EmailNotificationService.java |   63 +
 .../applib/services/userreg/UserDetails.java       |   45 +
 .../services/userreg/UserRegistrationService.java  |   64 +
 .../userreg/events/EmailEventAbstract.java         |   52 +
 .../userreg/events/EmailRegistrationEvent.java     |   35 +
 .../userreg/events/PasswordResetEvent.java         |   35 +
 .../applib/services/userreg/package-info.java      |   27 +
 .../causeway/applib/services/userui/UserMenu.java  |   81 +
 .../applib/services/wrapper/DisabledException.java |   45 +
 .../applib/services/wrapper/HiddenException.java   |   44 +
 .../applib/services/wrapper/InvalidException.java  |   44 +
 .../causeway/applib/services/wrapper/Mixin.java    |   33 +
 .../applib/services/wrapper/WrapperFactory.java    |  289 ++
 .../applib/services/wrapper/WrappingObject.java    |   73 +
 .../services/wrapper/callable/AsyncCallable.java   |  112 +
 .../services/wrapper/control/AsyncControl.java     |  237 ++
 .../services/wrapper/control/ControlAbstract.java  |   87 +
 .../services/wrapper/control/ExceptionHandler.java |   39 +
 .../wrapper/control/ExceptionHandlerAbstract.java  |   33 +
 .../services/wrapper/control/ExecutionMode.java    |   44 +
 .../services/wrapper/control/SyncControl.java      |   95 +
 .../services/wrapper/events/AccessEvent.java       |   45 +
 .../wrapper/events/ActionArgumentEvent.java        |   75 +
 .../wrapper/events/ActionInvocationEvent.java      |   61 +
 .../wrapper/events/ActionUsabilityEvent.java       |   39 +
 .../wrapper/events/ActionVisibilityEvent.java      |   39 +
 .../wrapper/events/CollectionAccessEvent.java      |   39 +
 .../wrapper/events/CollectionMethodEvent.java      |   92 +
 .../wrapper/events/CollectionUsabilityEvent.java   |   39 +
 .../wrapper/events/CollectionVisibilityEvent.java  |   39 +
 .../services/wrapper/events/InteractionEvent.java  |  186 ++
 .../services/wrapper/events/ObjectTitleEvent.java  |   46 +
 .../wrapper/events/ObjectValidityEvent.java        |   46 +
 .../wrapper/events/ObjectVisibilityEvent.java      |   39 +
 .../services/wrapper/events/ParseValueEvent.java   |   61 +
 .../wrapper/events/PropertyAccessEvent.java        |   47 +
 .../wrapper/events/PropertyModifyEvent.java        |   54 +
 .../wrapper/events/PropertyUsabilityEvent.java     |   39 +
 .../wrapper/events/PropertyVisibilityEvent.java    |   39 +
 .../wrapper/events/ProposedHolderEvent.java        |   37 +
 .../services/wrapper/events/UsabilityEvent.java    |   43 +
 .../services/wrapper/events/ValidityEvent.java     |   60 +
 .../services/wrapper/events/VisibilityEvent.java   |   44 +
 .../services/wrapper/events/package-info.java      |   26 +
 .../wrapper/listeners/InteractionAdapter.java      |  109 +
 .../wrapper/listeners/InteractionListener.java     |  196 ++
 .../applib/services/wrapper/package-info.java      |   28 +
 .../applib/services/xactn/TransactionId.java       |   95 +
 .../applib/services/xactn/TransactionService.java  |   72 +
 .../applib/services/xactn/TransactionState.java    |  123 +
 .../services/xactn/TransactionalProcessor.java     |  112 +
 .../applib/services/xactn/package-info.java        |   26 +
 .../causeway/applib/services/xml/XmlService.java   |   58 +
 .../causeway/applib/services/xml/package-info.java |   24 +
 .../services/xmlsnapshot/XmlSnapshotService.java   |  102 +
 .../applib/services/xmlsnapshot/package-info.java  |   26 +
 .../snapshot/SnapshottableWithInclusions.java      |   40 +
 .../causeway/applib/snapshot/package-info.java     |   41 +
 .../applib/spec/AbstractSpecification.java         |  125 +
 .../applib/spec/AbstractSpecification2.java        |  130 +
 .../apache/causeway/applib/spec/Specification.java |   38 +
 .../causeway/applib/spec/Specification2.java       |   42 +
 .../causeway/applib/spec/SpecificationAnd.java     |   66 +
 .../causeway/applib/spec/SpecificationNot.java     |   63 +
 .../causeway/applib/spec/SpecificationOr.java      |   70 +
 .../apache/causeway/applib/spec/package-info.java  |   39 +
 .../causeway/applib/types/DescriptionType.java     |   33 +
 .../applib/types/MemberIdentifierType.java         |   41 +
 .../causeway/applib/types/TargetActionType.java    |   39 +
 .../causeway/applib/types/TargetClassType.java     |   39 +
 .../apache/causeway/applib/types/package-info.java |   23 +
 .../org/apache/causeway/applib/util/Enums.java     |  111 +
 .../org/apache/causeway/applib/util/Equality.java  |   75 +
 .../org/apache/causeway/applib/util/Hashing.java   |   65 +
 .../org/apache/causeway/applib/util/JaxbUtil.java  |  114 +
 .../causeway/applib/util/ObjectContract_Empty.java |   93 +
 .../causeway/applib/util/ObjectContract_Impl.java  |  103 +
 .../applib/util/ObjectContract_Parser.java         |  177 +
 .../causeway/applib/util/ObjectContracts.java      |  190 ++
 .../apache/causeway/applib/util/ReasonBuffer.java  |   74 +
 .../apache/causeway/applib/util/ReasonBuffer2.java |  234 ++
 .../org/apache/causeway/applib/util/Reasons.java   |   52 +
 .../apache/causeway/applib/util/TitleBuffer.java   |  479 +++
 .../causeway/applib/util/TitleBufferException.java |   50 +
 .../org/apache/causeway/applib/util/ToString.java  |  122 +
 .../org/apache/causeway/applib/util/ZipReader.java |  107 +
 .../org/apache/causeway/applib/util/ZipWriter.java |  159 +
 .../apache/causeway/applib/util/package-info.java  |   40 +
 .../applib/util/schema/ChangesDtoUtils.java        |  105 +
 .../applib/util/schema/CommandDtoUtils.java        |  175 +
 .../applib/util/schema/CommonDtoUtils.java         |  725 +++++
 .../applib/util/schema/InteractionDtoUtils.java    |  380 +++
 .../applib/util/schema/InteractionsDtoUtils.java   |  151 +
 .../util/schema/MemberExecutionDtoUtils.java       |  112 +
 .../org/apache/causeway/applib/value/Blob.java     |  333 ++
 .../org/apache/causeway/applib/value/Clob.java     |  250 ++
 .../causeway/applib/value/LocalResourcePath.java   |  143 +
 .../org/apache/causeway/applib/value/Markup.java   |  110 +
 .../causeway/applib/value/NamedWithMimeType.java   |  212 ++
 .../causeway/applib/value/OpenUrlStrategy.java     |   39 +
 .../org/apache/causeway/applib/value/Password.java |   88 +
 .../apache/causeway/applib/value/package-info.java |   31 +
 .../causeway/applib/value/semantics/Converter.java |   41 +
 .../applib/value/semantics/DefaultsProvider.java   |   55 +
 .../applib/value/semantics/OrderRelation.java      |   70 +
 .../causeway/applib/value/semantics/Parser.java    |  109 +
 .../applib/value/semantics/ParsingException.java   |   46 +
 .../causeway/applib/value/semantics/Renderer.java  |   60 +
 .../value/semantics/TemporalValueSemantics.java    |  356 +++
 .../applib/value/semantics/ValueDecomposition.java |   80 +
 .../value/semantics/ValueSemanticsAbstract.java    |  384 +++
 .../ValueSemanticsBasedOnIdStringifier.java        |   65 +
 ...emanticsBasedOnIdStringifierEntityAgnostic.java |  102 +
 .../value/semantics/ValueSemanticsProvider.java    |  153 +
 .../value/semantics/ValueSemanticsResolver.java    |   44 +
 .../applib/value/semantics/package-info.java       |   46 +
 .../java/org/apache/isis/applib/Identifier.java    |  332 --
 .../org/apache/isis/applib/IsisModuleApplib.java   |  149 -
 .../IsisModuleApplibChangeAndExecutionLoggers.java |   47 -
 .../apache/isis/applib/IsisModuleApplibMixins.java |   47 -
 .../java/org/apache/isis/applib/ViewModel.java     |   41 -
 .../org/apache/isis/applib/annotation/Action.java  |  233 --
 .../isis/applib/annotation/ActionLayout.java       |  265 --
 .../isis/applib/annotation/BookmarkPolicy.java     |   54 -
 .../apache/isis/applib/annotation/Bounding.java    |   30 -
 .../apache/isis/applib/annotation/Collection.java  |  108 -
 .../isis/applib/annotation/CollectionLayout.java   |  179 --
 .../applib/annotation/DependentDefaultsPolicy.java |   55 -
 .../org/apache/isis/applib/annotation/Domain.java  |   84 -
 .../isis/applib/annotation/DomainObject.java       |  435 ---
 .../isis/applib/annotation/DomainObjectLayout.java |  215 --
 .../isis/applib/annotation/DomainService.java      |   95 -
 .../applib/annotation/DomainServiceLayout.java     |   83 -
 .../org/apache/isis/applib/annotation/Editing.java |   52 -
 .../isis/applib/annotation/EntityChangeKind.java   |   29 -
 .../apache/isis/applib/annotation/HomePage.java    |   42 -
 .../isis/applib/annotation/InteractionScope.java   |   53 -
 .../isis/applib/annotation/Introspection.java      |  225 --
 .../isis/applib/annotation/LabelPosition.java      |   50 -
 .../isis/applib/annotation/LogicalTypeName.java    |   51 -
 .../isis/applib/annotation/MemberSupport.java      |   50 -
 .../apache/isis/applib/annotation/MinLength.java   |   37 -
 .../org/apache/isis/applib/annotation/Module.java  |   60 -
 .../org/apache/isis/applib/annotation/Nature.java  |  104 -
 .../isis/applib/annotation/NatureOfService.java    |   60 -
 .../apache/isis/applib/annotation/Navigable.java   |   40 -
 .../isis/applib/annotation/ObjectLifecycle.java    |   50 -
 .../isis/applib/annotation/ObjectSupport.java      |   50 -
 .../apache/isis/applib/annotation/Optionality.java |   70 -
 .../apache/isis/applib/annotation/Parameter.java   |  150 -
 .../isis/applib/annotation/ParameterLayout.java    |  130 -
 .../isis/applib/annotation/PriorityPrecedence.java |   82 -
 .../isis/applib/annotation/Programmatic.java       |   54 -
 .../apache/isis/applib/annotation/Projecting.java  |   38 -
 .../apache/isis/applib/annotation/PromptStyle.java |   91 -
 .../apache/isis/applib/annotation/Property.java    |  295 --
 .../isis/applib/annotation/PropertyLayout.java     |  259 --
 .../apache/isis/applib/annotation/Publishing.java  |   70 -
 .../apache/isis/applib/annotation/Redirect.java    |   48 -
 .../apache/isis/applib/annotation/Repainting.java  |   45 -
 .../apache/isis/applib/annotation/RestrictTo.java  |   33 -
 .../apache/isis/applib/annotation/SemanticsOf.java |  148 -
 .../apache/isis/applib/annotation/Snapshot.java    |   48 -
 .../isis/applib/annotation/TableDecoration.java    |   60 -
 .../isis/applib/annotation/TimePrecision.java      |   59 -
 .../applib/annotation/TimeZoneTranslation.java     |   44 -
 .../org/apache/isis/applib/annotation/Title.java   |   67 -
 .../org/apache/isis/applib/annotation/Value.java   |   58 -
 .../isis/applib/annotation/ValueSemantics.java     |  178 --
 .../org/apache/isis/applib/annotation/Where.java   |  225 --
 .../isis/applib/annotation/package-info.java       |   23 -
 .../client/RepresentationTypeSimplifiedV2.java     |  143 -
 .../apache/isis/applib/client/SuppressionType.java |  100 -
 .../org/apache/isis/applib/clock/VirtualClock.java |  381 ---
 .../isis/applib/clock/VirtualClock_frozen.java     |   66 -
 .../isis/applib/clock/VirtualClock_system.java     |   57 -
 .../isis/applib/clock/VirtualClock_withOffset.java |   70 -
 .../isis/applib/domain/DomainObjectList.java       |  194 --
 .../events/ActionArgumentUsabilityEvent.java       |   61 -
 .../events/ActionArgumentVisibilityEvent.java      |   61 -
 .../apache/isis/applib/events/EventObjectBase.java |   79 -
 .../applib/events/domain/AbstractDomainEvent.java  |  498 ---
 .../applib/events/domain/ActionDomainEvent.java    |  232 --
 .../events/domain/CollectionDomainEvent.java       |  104 -
 .../applib/events/domain/PropertyDomainEvent.java  |  156 -
 .../events/lifecycle/AbstractLifecycleEvent.java   |   39 -
 .../events/lifecycle/ObjectCreatedEvent.java       |   67 -
 .../applib/events/lifecycle/ObjectLoadedEvent.java |   63 -
 .../events/lifecycle/ObjectPersistedEvent.java     |   63 -
 .../events/lifecycle/ObjectPersistingEvent.java    |   62 -
 .../events/lifecycle/ObjectRemovingEvent.java      |   63 -
 .../events/lifecycle/ObjectUpdatedEvent.java       |   60 -
 .../events/lifecycle/ObjectUpdatingEvent.java      |   60 -
 .../applib/events/metamodel/MetamodelEvent.java    |   34 -
 .../applib/events/metamodel/MetamodelListener.java |   84 -
 .../isis/applib/events/ui/AbstractUiEvent.java     |   61 -
 .../isis/applib/events/ui/CssClassUiEvent.java     |  104 -
 .../apache/isis/applib/events/ui/IconUiEvent.java  |  124 -
 .../isis/applib/events/ui/LayoutUiEvent.java       |  104 -
 .../apache/isis/applib/events/ui/TitleUiEvent.java |  133 -
 .../applib/exceptions/RecoverableException.java    |  107 -
 .../applib/exceptions/TranslatableException.java   |   49 -
 .../applib/exceptions/UnrecoverableException.java  |  100 -
 .../recoverable/InteractionException.java          |   68 -
 .../recoverable/InvalidEntryException.java         |   41 -
 .../recoverable/TextEntryParseException.java       |   42 -
 .../unrecoverable/DomainModelException.java        |   44 -
 .../unrecoverable/MetaModelException.java          |   41 -
 .../unrecoverable/NoAuthenticatorException.java    |   44 -
 .../unrecoverable/ObjectNotFoundException.java     |   39 -
 .../unrecoverable/ObjectPersistenceException.java  |   40 -
 .../unrecoverable/PersistFailedException.java      |   54 -
 .../unrecoverable/ReflectiveActionException.java   |   41 -
 .../unrecoverable/RepositoryException.java         |   52 -
 .../unrecoverable/UnexpectedCallException.java     |   36 -
 .../unrecoverable/UnknownTypeException.java        |   37 -
 .../java/org/apache/isis/applib/graph/Edge.java    |   31 -
 .../org/apache/isis/applib/graph/SimpleEdge.java   |   42 -
 .../java/org/apache/isis/applib/graph/Vertex.java  |   39 -
 .../apache/isis/applib/graph/tree/TreeAdapter.java |   57 -
 .../apache/isis/applib/graph/tree/TreeNode.java    |  303 --
 .../graph/tree/TreeNode_iteratorBreadthFirst.java  |   60 -
 .../graph/tree/TreeNode_iteratorDepthFirst.java    |   71 -
 .../graph/tree/TreeNode_iteratorHierarchyUp.java   |   53 -
 .../apache/isis/applib/graph/tree/TreePath.java    |   60 -
 .../isis/applib/graph/tree/TreePath_Default.java   |   90 -
 .../apache/isis/applib/graph/tree/TreeState.java   |   35 -
 .../isis/applib/graph/tree/TreeState_Default.java  |   34 -
 .../org/apache/isis/applib/id/HasLogicalType.java  |   35 -
 .../org/apache/isis/applib/id/LogicalType.java     |  360 ---
 .../apache/isis/applib/jaxb/DataTypeFactory.java   |   58 -
 .../isis/applib/jaxb/JavaSqlJaxbAdapters.java      |   82 -
 .../JavaSqlXMLGregorianCalendarMarshalling.java    |   66 -
 .../isis/applib/jaxb/JavaTimeJaxbAdapters.java     |  169 -
 .../JavaTimeXMLGregorianCalendarMarshalling.java   |  156 -
 .../isis/applib/jaxb/JavaUtilJaxbAdapters.java     |   54 -
 .../applib/jaxb/PersistentEntitiesAdapter.java     |   67 -
 .../isis/applib/jaxb/PersistentEntityAdapter.java  |   50 -
 .../isis/applib/jaxb/PrimitiveJaxbAdapters.java    |   49 -
 .../apache/isis/applib/layout/LayoutConstants.java |  139 -
 .../applib/layout/component/ActionLayoutData.java  |  282 --
 .../layout/component/ActionLayoutDataOwner.java    |   29 -
 .../layout/component/CollectionLayoutData.java     |  278 --
 .../component/CollectionLayoutDataOwner.java       |   28 -
 .../layout/component/CssClassFaPosition.java       |   35 -
 .../layout/component/DomainObjectLayoutData.java   |  238 --
 .../component/DomainObjectLayoutDataOwner.java     |   28 -
 .../isis/applib/layout/component/FieldSet.java     |  208 --
 .../applib/layout/component/FieldSetOwner.java     |   28 -
 .../applib/layout/component/HasBookmarking.java    |   32 -
 .../isis/applib/layout/component/HasCssClass.java  |   30 -
 .../applib/layout/component/HasCssClassFa.java     |   36 -
 .../applib/layout/component/HasDescribedAs.java    |   32 -
 .../isis/applib/layout/component/HasHidden.java    |   34 -
 .../isis/applib/layout/component/HasNamed.java     |   32 -
 .../isis/applib/layout/component/MemberRegion.java |   35 -
 .../applib/layout/component/MemberRegionOwner.java |   26 -
 .../apache/isis/applib/layout/component/Owned.java |   26 -
 .../apache/isis/applib/layout/component/Owner.java |   26 -
 .../layout/component/PropertyLayoutData.java       |  289 --
 .../layout/component/ServiceActionLayoutData.java  |  249 --
 .../component/ServiceActionLayoutDataOwner.java    |   29 -
 .../applib/layout/component/TableDecoration.java   |   31 -
 .../isis/applib/layout/component/package-info.java |   39 -
 .../org/apache/isis/applib/layout/grid/Grid.java   |   97 -
 .../isis/applib/layout/grid/GridAbstract.java      |  210 --
 .../applib/layout/grid/bootstrap/BSClearFix.java   |   55 -
 .../layout/grid/bootstrap/BSClearFixHidden.java    |   49 -
 .../layout/grid/bootstrap/BSClearFixVisible.java   |   65 -
 .../isis/applib/layout/grid/bootstrap/BSCol.java   |  285 --
 .../applib/layout/grid/bootstrap/BSElement.java    |   38 -
 .../layout/grid/bootstrap/BSElementAbstract.java   |   52 -
 .../isis/applib/layout/grid/bootstrap/BSGrid.java  |  305 --
 .../isis/applib/layout/grid/bootstrap/BSRow.java   |  142 -
 .../applib/layout/grid/bootstrap/BSRowContent.java |   81 -
 .../layout/grid/bootstrap/BSRowContentOwner.java   |   28 -
 .../applib/layout/grid/bootstrap/BSRowOwner.java   |   31 -
 .../isis/applib/layout/grid/bootstrap/BSTab.java   |  179 --
 .../applib/layout/grid/bootstrap/BSTabGroup.java   |  140 -
 .../layout/grid/bootstrap/BSTabGroupOwner.java     |   31 -
 .../applib/layout/grid/bootstrap/BSTabOwner.java   |   31 -
 .../applib/layout/grid/bootstrap/HasCssId.java     |   31 -
 .../isis/applib/layout/grid/bootstrap/Size.java    |   37 -
 .../applib/layout/grid/bootstrap/SizeSpan.java     |  114 -
 .../applib/layout/grid/bootstrap/WithinGrid.java   |   30 -
 .../applib/layout/grid/bootstrap/package-info.java |   37 -
 .../org/apache/isis/applib/layout/links/Link.java  |   96 -
 .../isis/applib/layout/links/package-info.java     |   38 -
 .../isis/applib/layout/menubars/HasNamed.java      |   31 -
 .../apache/isis/applib/layout/menubars/Menu.java   |   26 -
 .../isis/applib/layout/menubars/MenuBar.java       |   26 -
 .../isis/applib/layout/menubars/MenuBars.java      |   52 -
 .../applib/layout/menubars/MenuBarsAbstract.java   |   71 -
 .../isis/applib/layout/menubars/MenuSection.java   |   33 -
 .../applib/layout/menubars/bootstrap/BSMenu.java   |  113 -
 .../layout/menubars/bootstrap/BSMenuBar.java       |   64 -
 .../layout/menubars/bootstrap/BSMenuBars.java      |  228 --
 .../layout/menubars/bootstrap/BSMenuSection.java   |   79 -
 .../layout/menubars/bootstrap/package-info.java    |   38 -
 .../apache/isis/applib/layout/package-info.java    |   25 -
 .../org/apache/isis/applib/locale/UserLocale.java  |   67 -
 .../org/apache/isis/applib/mixins/dto/Dto.java     |   48 -
 .../isis/applib/mixins/dto/DtoMixinConstants.java  |   32 -
 .../isis/applib/mixins/dto/Dto_downloadXml.java    |   83 -
 .../isis/applib/mixins/dto/Dto_downloadXsd.java    |  141 -
 .../isis/applib/mixins/dto/package-info.java       |   28 -
 .../mixins/layout/Object_downloadLayoutXml.java    |   96 -
 .../metamodel/Object_downloadMetamodelXml.java     |  121 -
 .../mixins/metamodel/Object_logicalTypeName.java   |   86 -
 .../mixins/metamodel/Object_objectIdentifier.java  |   86 -
 .../mixins/metamodel/Object_rebuildMetamodel.java  |   72 -
 .../applib/mixins/rest/Object_openRestApi.java     |   87 -
 .../isis/applib/mixins/security/HasUsername.java   |   72 -
 .../applib/mixins/system/DomainChangeRecord.java   |  335 --
 .../applib/mixins/system/HasInteractionId.java     |   62 -
 .../mixins/system/HasInteractionIdAndSequence.java |   93 -
 .../mixins/system/HasTarget_openTargetObject.java  |   83 -
 .../isis/applib/mixins/updates/OnUpdatedAt.java    |   32 -
 .../isis/applib/mixins/updates/OnUpdatedBy.java    |   41 -
 .../applib/mixins/updates/OnUpdatedByAndAt.java    |   31 -
 .../isis/applib/query/AllInstancesQuery.java       |   26 -
 .../org/apache/isis/applib/query/NamedQuery.java   |   41 -
 .../java/org/apache/isis/applib/query/Query.java   |   97 -
 .../org/apache/isis/applib/query/QueryRange.java   |  136 -
 .../applib/query/_AllInstancesQueryDefault.java    |   48 -
 .../isis/applib/query/_NamedQueryDefault.java      |   83 -
 .../apache/isis/applib/query/_QueryAbstract.java   |   33 -
 .../isis/applib/query/_QueryRangeDefault.java      |   87 -
 .../services/acceptheader/AcceptHeaderService.java |   47 -
 .../services/appfeat/ApplicationFeature.java       |  111 -
 .../services/appfeat/ApplicationFeatureId.java     |  453 ---
 .../appfeat/ApplicationFeatureRepository.java      |   55 -
 .../services/appfeat/ApplicationFeatureSort.java   |   69 -
 .../services/appfeat/ApplicationMemberSort.java    |   35 -
 .../isis/applib/services/appfeat/package-info.java |   27 -
 .../services/appfeatui/ApplicationFeatureMenu.java |  175 -
 .../appfeatui/ApplicationFeatureViewModel.java     |  416 ---
 .../services/appfeatui/ApplicationNamespace.java   |   86 -
 .../applib/services/appfeatui/ApplicationType.java |  135 -
 .../services/appfeatui/ApplicationTypeAction.java  |  110 -
 .../appfeatui/ApplicationTypeCollection.java       |  107 -
 .../services/appfeatui/ApplicationTypeMember.java  |   88 -
 .../appfeatui/ApplicationTypeProperty.java         |  178 --
 .../isis/applib/services/bookmark/Bookmark.java    |  234 --
 .../applib/services/bookmark/BookmarkHolder.java   |   38 -
 .../services/bookmark/BookmarkHolder_lookup.java   |   56 -
 .../services/bookmark/BookmarkHolder_object.java   |   51 -
 .../applib/services/bookmark/BookmarkService.java  |   94 -
 .../isis/applib/services/bookmark/HasTarget.java   |   54 -
 .../applib/services/bookmark/IdStringifier.java    |  186 --
 .../apache/isis/applib/services/bookmark/Oid.java  |   47 -
 .../idstringifiers/PredefinedSerializables.java    |   87 -
 .../applib/services/bookmark/package-info.java     |   27 -
 .../services/bookmarkui/BookmarkUiService.java     |   32 -
 .../isis/applib/services/clock/ClockService.java   |   68 -
 .../isis/applib/services/command/Command.java      |  376 ---
 .../services/command/CommandExecutorService.java   |  165 -
 .../services/command/CommandOutcomeHandler.java    |   71 -
 .../isis/applib/services/command/package-info.java |   19 -
 .../applib/services/commanddto/HasCommandDto.java  |   56 -
 .../conmap/ContentMappingServiceForCommandDto.java |  112 -
 .../ContentMappingServiceForCommandsDto.java       |  100 -
 .../services/commanddto/conmap/UserDataKeys.java   |   35 -
 .../commanddto/processor/CommandDtoProcessor.java  |   57 -
 .../CommandDtoProcessorForActionAbstract.java      |   40 -
 .../CommandDtoProcessorForPropertyAbstract.java    |   34 -
 .../processor/spi/CommandDtoProcessorService.java  |   64 -
 .../spi/CommandDtoProcessorServiceIdentity.java    |   45 -
 .../services/confview/ConfigurationMenu.java       |   77 -
 .../services/confview/ConfigurationProperty.java   |   78 -
 .../confview/ConfigurationViewService.java         |   44 -
 .../services/confview/ConfigurationViewmodel.java  |   67 -
 .../applib/services/confview/package-info.java     |   26 -
 .../services/conmap/ContentMappingService.java     |   68 -
 .../isis/applib/services/conmap/package-info.java  |   27 -
 .../isis/applib/services/email/EmailService.java   |   65 -
 .../isis/applib/services/email/package-info.java   |   26 -
 .../isis/applib/services/error/ErrorDetails.java   |   86 -
 .../services/error/ErrorReportingService.java      |   55 -
 .../isis/applib/services/error/SimpleTicket.java   |  135 -
 .../apache/isis/applib/services/error/Ticket.java  |   87 -
 .../isis/applib/services/error/package-info.java   |   28 -
 .../applib/services/eventbus/EventBusService.java  |   47 -
 .../applib/services/eventbus/package-info.java     |   26 -
 .../isis/applib/services/exceprecog/Category.java  |   71 -
 .../services/exceprecog/ExceptionRecognizer.java   |   73 -
 .../exceprecog/ExceptionRecognizerAbstract.java    |  143 -
 .../exceprecog/ExceptionRecognizerForType.java     |  130 -
 .../exceprecog/ExceptionRecognizerService.java     |   62 -
 .../applib/services/exceprecog/Recognition.java    |  140 -
 .../services/exceprecog/RootCauseFinder.java       |   36 -
 .../applib/services/exceprecog/package-info.java   |   28 -
 .../applib/services/factory/FactoryService.java    |  167 -
 .../isis/applib/services/factory/package-info.java |   26 -
 .../applib/services/grid/GridLoaderService.java    |   85 -
 .../isis/applib/services/grid/GridService.java     |  178 --
 .../applib/services/grid/GridSystemService.java    |  135 -
 .../isis/applib/services/grid/package-info.java    |   26 -
 .../apache/isis/applib/services/health/Health.java |   46 -
 .../applib/services/health/HealthCheckService.java |   46 -
 .../isis/applib/services/hint/HintIdProvider.java  |   45 -
 .../isis/applib/services/hint/HintStore.java       |  101 -
 .../isis/applib/services/hint/package-info.java    |   28 -
 .../services/homepage/HomePageResolverService.java |   33 -
 .../applib/services/homepage/package-info.java     |   24 -
 .../services/i18n/HasTranslationContext.java       |   31 -
 .../applib/services/i18n/LanguageProvider.java     |   42 -
 .../org/apache/isis/applib/services/i18n/Mode.java |   79 -
 .../applib/services/i18n/TranslatableString.java   |  277 --
 .../applib/services/i18n/TranslationContext.java   |   89 -
 .../applib/services/i18n/TranslationService.java   |   90 -
 .../applib/services/i18n/TranslationsResolver.java |   49 -
 .../isis/applib/services/i18n/package-info.java    |   28 -
 .../applib/services/iactn/ActionInvocation.java    |   48 -
 .../isis/applib/services/iactn/Execution.java      |  348 --
 .../applib/services/iactn/HasInteractionDto.java   |   51 -
 .../isis/applib/services/iactn/Interaction.java    |   88 -
 .../applib/services/iactn/InteractionProvider.java |   90 -
 .../isis/applib/services/iactn/PropertyEdit.java   |   47 -
 .../isis/applib/services/iactn/package-info.java   |   29 -
 .../services/iactnlayer/InteractionContext.java    |  181 --
 .../services/iactnlayer/InteractionLayer.java      |   57 -
 .../iactnlayer/InteractionLayerTracker.java        |   84 -
 .../services/iactnlayer/InteractionService.java    |  215 --
 .../applib/services/inject/ServiceInjector.java    |   43 -
 .../jaxb/CatalogingSchemaOutputResolver.java       |  155 -
 .../isis/applib/services/jaxb/IsisSchemas.java     |   58 -
 .../isis/applib/services/jaxb/JaxbService.java     |  258 --
 .../services/jaxb/StreamResultWithWriter.java      |   47 -
 .../isis/applib/services/jaxb/package-info.java    |   26 -
 .../keyvaluestore/KeyValueSessionStore.java        |   80 -
 .../applib/services/layout/LayoutExportStyle.java  |   60 -
 .../isis/applib/services/layout/LayoutService.java |   47 -
 .../applib/services/layout/LayoutServiceMenu.java  |  123 -
 .../isis/applib/services/layout/package-info.java  |   27 -
 .../applib/services/linking/DeepLinkService.java   |   48 -
 .../isis/applib/services/linking/package-info.java |   26 -
 .../services/locale/LocaleChoiceProvider.java      |   33 -
 .../services/menu/MenuBarsLoaderService.java       |   57 -
 .../isis/applib/services/menu/MenuBarsService.java |   86 -
 .../applib/services/message/MessageService.java    |  188 --
 .../isis/applib/services/message/package-info.java |   26 -
 .../isis/applib/services/metamodel/BeanSort.java   |  154 -
 .../isis/applib/services/metamodel/Config.java     |   77 -
 .../applib/services/metamodel/DomainMember.java    |   49 -
 .../applib/services/metamodel/DomainModel.java     |   53 -
 .../services/metamodel/MetaModelService.java       |  138 -
 .../services/metamodel/MetaModelServiceMenu.java   |  322 --
 .../applib/services/metamodel/_AsciiExport.java    |  118 -
 .../isis/applib/services/metamodel/_CsvExport.java |   80 -
 .../applib/services/metamodel/_DiffExport.java     |  385 ---
 .../applib/services/metamodel/package-info.java    |   26 -
 .../applib/services/metrics/MetricsService.java    |   59 -
 .../isis/applib/services/metrics/package-info.java |   27 -
 .../apache/isis/applib/services/package-info.java  |   24 -
 .../placeholder/PlaceholderRenderService.java      |   61 -
 .../services/publishing/log/CommandLogger.java     |   68 -
 .../publishing/log/EntityChangesLogger.java        |   65 -
 .../publishing/log/EntityPropertyChangeLogger.java |   59 -
 .../services/publishing/log/ExecutionLogger.java   |   67 -
 .../applib/services/publishing/package-info.java   |   34 -
 .../services/publishing/spi/CommandSubscriber.java |   42 -
 .../services/publishing/spi/EntityChanges.java     |  108 -
 .../publishing/spi/EntityChangesSubscriber.java    |   54 -
 .../publishing/spi/EntityPropertyChange.java       |   58 -
 .../spi/EntityPropertyChangeSubscriber.java        |   51 -
 .../publishing/spi/ExecutionSubscriber.java        |   71 -
 .../queryresultscache/MethodReferences.java        |   94 -
 .../queryresultscache/QueryResultsCache.java       |  248 --
 .../QueryResultsCacheControl.java                  |   40 -
 .../services/queryresultscache/package-info.java   |   27 -
 .../registry/InstanceByPriorityComparator.java     |   72 -
 .../applib/services/registry/ServiceRegistry.java  |  165 -
 .../applib/services/registry/package-info.java     |   27 -
 .../applib/services/repository/EntityState.java    |  128 -
 .../services/repository/RepositoryService.java     |  414 ---
 .../applib/services/repository/package-info.java   |   27 -
 .../applib/services/routing/RoutingService.java    |   84 -
 .../isis/applib/services/routing/package-info.java |   26 -
 .../applib/services/scratchpad/Scratchpad.java     |   51 -
 .../applib/services/scratchpad/package-info.java   |   26 -
 .../applib/services/session/SessionLogger.java     |   73 -
 .../applib/services/session/SessionSubscriber.java |   66 -
 .../isis/applib/services/session/package-info.java |   24 -
 .../applib/services/sitemap/SitemapService.java    |   30 -
 .../services/sitemap/SitemapServiceMenu.java       |   88 -
 .../isis/applib/services/sudo/SudoService.java     |  132 -
 .../applib/services/sudo/SudoServiceListener.java  |   40 -
 .../isis/applib/services/swagger/Format.java       |   58 -
 .../applib/services/swagger/SwaggerService.java    |   47 -
 .../isis/applib/services/swagger/Visibility.java   |   86 -
 .../TableColumnOrderForCollectionTypeAbstract.java |  102 -
 .../services/tablecol/TableColumnOrderService.java |  102 -
 .../tablecol/TableColumnVisibilityService.java     |   50 -
 .../isis/applib/services/title/TitleService.java   |   41 -
 .../isis/applib/services/title/package-info.java   |   25 -
 .../services/urlencoding/UrlEncodingService.java   |  107 -
 .../applib/services/urlencoding/package-info.java  |   29 -
 .../isis/applib/services/user/ImpersonateMenu.java |  183 --
 .../services/user/ImpersonateMenuAdvisor.java      |   80 -
 .../applib/services/user/ImpersonateStopMenu.java  |  101 -
 .../services/user/ImpersonatedUserHolder.java      |   58 -
 .../isis/applib/services/user/RoleMemento.java     |   95 -
 .../user/UserCurrentSessionTimeZoneHolder.java     |   58 -
 .../isis/applib/services/user/UserMemento.java     |  361 ---
 .../isis/applib/services/user/UserService.java     |  256 --
 .../services/userreg/EmailNotificationService.java |   63 -
 .../isis/applib/services/userreg/UserDetails.java  |   45 -
 .../services/userreg/UserRegistrationService.java  |   64 -
 .../userreg/events/EmailEventAbstract.java         |   52 -
 .../userreg/events/EmailRegistrationEvent.java     |   35 -
 .../userreg/events/PasswordResetEvent.java         |   35 -
 .../isis/applib/services/userreg/package-info.java |   27 -
 .../isis/applib/services/userui/UserMenu.java      |   81 -
 .../applib/services/wrapper/DisabledException.java |   45 -
 .../applib/services/wrapper/HiddenException.java   |   44 -
 .../applib/services/wrapper/InvalidException.java  |   44 -
 .../apache/isis/applib/services/wrapper/Mixin.java |   33 -
 .../applib/services/wrapper/WrapperFactory.java    |  289 --
 .../applib/services/wrapper/WrappingObject.java    |   72 -
 .../services/wrapper/callable/AsyncCallable.java   |  112 -
 .../services/wrapper/control/AsyncControl.java     |  236 --
 .../services/wrapper/control/ControlAbstract.java  |   86 -
 .../services/wrapper/control/ExceptionHandler.java |   39 -
 .../wrapper/control/ExceptionHandlerAbstract.java  |   33 -
 .../services/wrapper/control/ExecutionMode.java    |   44 -
 .../services/wrapper/control/SyncControl.java      |   95 -
 .../services/wrapper/events/AccessEvent.java       |   45 -
 .../wrapper/events/ActionArgumentEvent.java        |   75 -
 .../wrapper/events/ActionInvocationEvent.java      |   61 -
 .../wrapper/events/ActionUsabilityEvent.java       |   39 -
 .../wrapper/events/ActionVisibilityEvent.java      |   39 -
 .../wrapper/events/CollectionAccessEvent.java      |   39 -
 .../wrapper/events/CollectionMethodEvent.java      |   92 -
 .../wrapper/events/CollectionUsabilityEvent.java   |   39 -
 .../wrapper/events/CollectionVisibilityEvent.java  |   39 -
 .../services/wrapper/events/InteractionEvent.java  |  185 --
 .../services/wrapper/events/ObjectTitleEvent.java  |   46 -
 .../wrapper/events/ObjectValidityEvent.java        |   46 -
 .../wrapper/events/ObjectVisibilityEvent.java      |   39 -
 .../services/wrapper/events/ParseValueEvent.java   |   61 -
 .../wrapper/events/PropertyAccessEvent.java        |   47 -
 .../wrapper/events/PropertyModifyEvent.java        |   54 -
 .../wrapper/events/PropertyUsabilityEvent.java     |   39 -
 .../wrapper/events/PropertyVisibilityEvent.java    |   39 -
 .../wrapper/events/ProposedHolderEvent.java        |   37 -
 .../services/wrapper/events/UsabilityEvent.java    |   43 -
 .../services/wrapper/events/ValidityEvent.java     |   60 -
 .../services/wrapper/events/VisibilityEvent.java   |   44 -
 .../services/wrapper/events/package-info.java      |   26 -
 .../wrapper/listeners/InteractionAdapter.java      |  109 -
 .../wrapper/listeners/InteractionListener.java     |  196 --
 .../isis/applib/services/wrapper/package-info.java |   28 -
 .../isis/applib/services/xactn/TransactionId.java  |   95 -
 .../applib/services/xactn/TransactionService.java  |   72 -
 .../applib/services/xactn/TransactionState.java    |  123 -
 .../services/xactn/TransactionalProcessor.java     |  113 -
 .../isis/applib/services/xactn/package-info.java   |   26 -
 .../isis/applib/services/xml/XmlService.java       |   58 -
 .../isis/applib/services/xml/package-info.java     |   24 -
 .../services/xmlsnapshot/XmlSnapshotService.java   |  102 -
 .../applib/services/xmlsnapshot/package-info.java  |   26 -
 .../snapshot/SnapshottableWithInclusions.java      |   40 -
 .../apache/isis/applib/snapshot/package-info.java  |   41 -
 .../isis/applib/spec/AbstractSpecification.java    |  124 -
 .../isis/applib/spec/AbstractSpecification2.java   |  129 -
 .../org/apache/isis/applib/spec/Specification.java |   38 -
 .../apache/isis/applib/spec/Specification2.java    |   42 -
 .../apache/isis/applib/spec/SpecificationAnd.java  |   66 -
 .../apache/isis/applib/spec/SpecificationNot.java  |   63 -
 .../apache/isis/applib/spec/SpecificationOr.java   |   70 -
 .../org/apache/isis/applib/spec/package-info.java  |   39 -
 .../apache/isis/applib/types/DescriptionType.java  |   33 -
 .../isis/applib/types/MemberIdentifierType.java    |   41 -
 .../apache/isis/applib/types/TargetActionType.java |   39 -
 .../apache/isis/applib/types/TargetClassType.java  |   39 -
 .../org/apache/isis/applib/types/package-info.java |   23 -
 .../java/org/apache/isis/applib/util/Enums.java    |  112 -
 .../java/org/apache/isis/applib/util/Equality.java |   75 -
 .../java/org/apache/isis/applib/util/Hashing.java  |   65 -
 .../java/org/apache/isis/applib/util/JaxbUtil.java |  114 -
 .../isis/applib/util/ObjectContract_Empty.java     |   93 -
 .../isis/applib/util/ObjectContract_Impl.java      |  103 -
 .../isis/applib/util/ObjectContract_Parser.java    |  177 -
 .../apache/isis/applib/util/ObjectContracts.java   |  190 --
 .../org/apache/isis/applib/util/ReasonBuffer.java  |   74 -
 .../org/apache/isis/applib/util/ReasonBuffer2.java |  234 --
 .../java/org/apache/isis/applib/util/Reasons.java  |   52 -
 .../org/apache/isis/applib/util/TitleBuffer.java   |  478 ---
 .../isis/applib/util/TitleBufferException.java     |   50 -
 .../java/org/apache/isis/applib/util/ToString.java |  122 -
 .../org/apache/isis/applib/util/ZipReader.java     |  107 -
 .../org/apache/isis/applib/util/ZipWriter.java     |  160 -
 .../org/apache/isis/applib/util/package-info.java  |   40 -
 .../isis/applib/util/schema/ChangesDtoUtils.java   |  104 -
 .../isis/applib/util/schema/CommandDtoUtils.java   |  174 -
 .../isis/applib/util/schema/CommonDtoUtils.java    |  725 -----
 .../applib/util/schema/InteractionDtoUtils.java    |  379 ---
 .../applib/util/schema/InteractionsDtoUtils.java   |  150 -
 .../util/schema/MemberExecutionDtoUtils.java       |  111 -
 .../java/org/apache/isis/applib/value/Blob.java    |  332 --
 .../java/org/apache/isis/applib/value/Clob.java    |  249 --
 .../isis/applib/value/LocalResourcePath.java       |  143 -
 .../java/org/apache/isis/applib/value/Markup.java  |  109 -
 .../isis/applib/value/NamedWithMimeType.java       |  212 --
 .../apache/isis/applib/value/OpenUrlStrategy.java  |   39 -
 .../org/apache/isis/applib/value/Password.java     |   88 -
 .../org/apache/isis/applib/value/package-info.java |   31 -
 .../isis/applib/value/semantics/Converter.java     |   41 -
 .../applib/value/semantics/DefaultsProvider.java   |   55 -
 .../isis/applib/value/semantics/OrderRelation.java |   70 -
 .../apache/isis/applib/value/semantics/Parser.java |  110 -
 .../applib/value/semantics/ParsingException.java   |   46 -
 .../isis/applib/value/semantics/Renderer.java      |   60 -
 .../value/semantics/TemporalValueSemantics.java    |  355 --
 .../applib/value/semantics/ValueDecomposition.java |   79 -
 .../value/semantics/ValueSemanticsAbstract.java    |  384 ---
 .../ValueSemanticsBasedOnIdStringifier.java        |   64 -
 ...emanticsBasedOnIdStringifierEntityAgnostic.java |  101 -
 .../value/semantics/ValueSemanticsProvider.java    |  153 -
 .../value/semantics/ValueSemanticsResolver.java    |   43 -
 .../isis/applib/value/semantics/package-info.java  |   46 -
 .../apache/causeway/applib/IdentifierTests.java    |   70 +
 .../apache/causeway/applib/SomeDomainClass.java    |   23 +
 .../client/RepresentationTypeSimplifiedV2Test.java |   43 +
 .../causeway/applib/clock/VirtualClock_Test.java   |  211 ++
 .../reflection/ReflectSampleForTesting.java        |   36 +
 .../commons/internal/reflection/ReflectTest.java   |  138 +
 .../applib/events/InteractionEventTest.java        |  146 +
 .../causeway/applib/graph/tree/TreePathTest.java   |   48 +
 .../apache/causeway/applib/id/LogicalTypeTest.java |   79 +
 .../applib/id/LogicalTypeTest_valueSemantics.java  |   46 +
 ...Adapters_LocalDateTimeToStringAdapter_Test.java |   32 +
 ...JaxbAdapters_LocalDateToStringAdapter_Test.java |   32 +
 ...dapters_OffsetDateTimeToStringAdapter_Test.java |   33 +
 ...avaTimeJaxbAdapters_OffsetTimeAdapter_Test.java |   34 +
 ...TimeJaxbAdapters_ZonedDateTimeAdapter_Test.java |   33 +
 .../JavaTmeJaxbAdapters_LocalTimeAdapter_Test.java |   32 +
 .../jaxbadapters/JaxbXmlAdaptersContractTest.java  |   68 +
 .../PrimitiveAdapters_BytesAdapter_Test.java       |   30 +
 ...ropertyLayoutData_renderedAsDayBefore_Test.java |   55 +
 .../component/PropertyLayoutData_repaint_Test.java |   61 +
 .../applib/layout/grid/bootstrap/BSColTest.java    |   63 +
 .../applib/layout/grid/bootstrap/SizeSpanTest.java |   62 +
 .../bootstrap/BSMenuBars_roundtrip_Test.java       |   85 +
 .../NamedQueryTest_withStart_or_withCount.java     |  150 +
 .../appfeat/ApplicationMemberTypeTest.java         |   36 +
 .../applib/services/bookmark/BookmarkTest.java     |   75 +
 .../eventbus/AbstractDomainEvent_veto_Test.java    |  179 ++
 .../exceprecog/ExceptionRecognizerForTypeTest.java |   68 +
 .../exceprecog/ExceptionRecognizerGeneralTest.java |   61 +
 .../services/i18n/TranslatableStringTest.java      |  140 +
 .../InteractionContext_combine_Test.java           |   43 +
 .../applib/services/iactnlayer/TryTest.java        |  184 ++
 .../applib/services/jaxb/JaxbServiceTest.java      |   81 +
 .../metamodel/MetaModelService_Config_Test.java    |   58 +
 .../QueryResultsCache_KeyTest.java                 |   40 +
 .../applib/services/user/UserMemento_Test.java     |  311 ++
 .../wrapper/control/AsyncControl_Test.java         |  117 +
 .../services/wrapper/control/SyncControl_Test.java |  106 +
 .../applib/spec/AbstractSpecification2Test.java    |   91 +
 .../applib/spec/AbstractSpecificationTest.java     |   96 +
 .../org/apache/causeway/applib/util/EnumsTest.java |   42 +
 .../causeway/applib/util/EnumsTest_converts.java   |   45 +
 .../org/apache/causeway/applib/util/Invoice.java   |   40 +
 .../apache/causeway/applib/util/InvoiceItem.java   |   75 +
 .../org/apache/causeway/applib/util/Numbered.java  |   24 +
 .../causeway/applib/util/NumberedEvaluator.java    |   35 +
 .../applib/util/ObjectContractsTest_compareTo.java |   77 +
 .../applib/util/ObjectContractsTest_equals.java    |  138 +
 .../ObjectContractsTest_equals_and_hashCode.java   |  130 +
 .../applib/util/ObjectContractsTest_toString.java  |  146 +
 .../causeway/applib/util/ReasonBufferTest.java     |   65 +
 .../apache/causeway/applib/util/ReasonsTest.java   |   64 +
 .../causeway/applib/util/TitleBufferTest.java      |  290 ++
 .../causeway/applib/util/TitleTestObject.java      |   44 +
 .../applib/util/schema/CommandDtoUtils_Test.java   |   79 +
 .../applib/util/schema/CommonDtoUtils_Test.java    |  106 +
 ...eractionDtoUtilsTest_deriveLogicalMemberId.java |   36 +
 .../causeway/applib/util/schema/Vertical.java      |   23 +
 .../value/Blob_JaxbToStringAdapter_Test.java       |   32 +
 .../applib/value/Blob_constructor_Test.java        |   38 +
 .../value/Clob_JaxbToStringAdapter_Test.java       |   29 +
 .../applib/value/Clob_constructor_Test.java        |   38 +
 ...LocalResourcePath_JaxbToStringAdapter_Test.java |   30 +
 .../value/Markup_JaxbToStringAdapter_Test.java     |   30 +
 .../value/Password_JaxbToStringAdapter_Test.java   |   30 +
 .../causeway/applib/value/Password_Test.java       |   83 +
 .../org/apache/isis/applib/IdentifierTests.java    |   70 -
 .../org/apache/isis/applib/SomeDomainClass.java    |   23 -
 .../client/RepresentationTypeSimplifiedV2Test.java |   43 -
 .../isis/applib/clock/VirtualClock_Test.java       |  211 --
 .../reflection/ReflectSampleForTesting.java        |   36 -
 .../commons/internal/reflection/ReflectTest.java   |  139 -
 .../isis/applib/events/InteractionEventTest.java   |  146 -
 .../isis/applib/graph/tree/TreePathTest.java       |   48 -
 .../org/apache/isis/applib/id/LogicalTypeTest.java |   79 -
 .../applib/id/LogicalTypeTest_valueSemantics.java  |   45 -
 ...Adapters_LocalDateTimeToStringAdapter_Test.java |   32 -
 ...JaxbAdapters_LocalDateToStringAdapter_Test.java |   32 -
 ...dapters_OffsetDateTimeToStringAdapter_Test.java |   33 -
 ...avaTimeJaxbAdapters_OffsetTimeAdapter_Test.java |   34 -
 ...TimeJaxbAdapters_ZonedDateTimeAdapter_Test.java |   33 -
 .../JavaTmeJaxbAdapters_LocalTimeAdapter_Test.java |   32 -
 .../jaxbadapters/JaxbXmlAdaptersContractTest.java  |   68 -
 .../PrimitiveAdapters_BytesAdapter_Test.java       |   30 -
 ...ropertyLayoutData_renderedAsDayBefore_Test.java |   55 -
 .../component/PropertyLayoutData_repaint_Test.java |   61 -
 .../applib/layout/grid/bootstrap/BSColTest.java    |   63 -
 .../applib/layout/grid/bootstrap/SizeSpanTest.java |   62 -
 .../bootstrap/BSMenuBars_roundtrip_Test.java       |   85 -
 .../NamedQueryTest_withStart_or_withCount.java     |  150 -
 .../appfeat/ApplicationMemberTypeTest.java         |   36 -
 .../applib/services/bookmark/BookmarkTest.java     |   75 -
 .../eventbus/AbstractDomainEvent_veto_Test.java    |  179 --
 .../exceprecog/ExceptionRecognizerForTypeTest.java |   68 -
 .../exceprecog/ExceptionRecognizerGeneralTest.java |   61 -
 .../services/i18n/TranslatableStringTest.java      |  140 -
 .../InteractionContext_combine_Test.java           |   43 -
 .../isis/applib/services/iactnlayer/TryTest.java   |  185 --
 .../isis/applib/services/jaxb/JaxbServiceTest.java |   81 -
 .../metamodel/MetaModelService_Config_Test.java    |   58 -
 .../QueryResultsCache_KeyTest.java                 |   40 -
 .../applib/services/user/UserMemento_Test.java     |  311 --
 .../wrapper/control/AsyncControl_Test.java         |  117 -
 .../services/wrapper/control/SyncControl_Test.java |  107 -
 .../applib/spec/AbstractSpecification2Test.java    |   91 -
 .../applib/spec/AbstractSpecificationTest.java     |   96 -
 .../org/apache/isis/applib/util/EnumsTest.java     |   42 -
 .../isis/applib/util/EnumsTest_converts.java       |   45 -
 .../java/org/apache/isis/applib/util/Invoice.java  |   40 -
 .../org/apache/isis/applib/util/InvoiceItem.java   |   75 -
 .../java/org/apache/isis/applib/util/Numbered.java |   24 -
 .../apache/isis/applib/util/NumberedEvaluator.java |   35 -
 .../applib/util/ObjectContractsTest_compareTo.java |   77 -
 .../applib/util/ObjectContractsTest_equals.java    |  138 -
 .../ObjectContractsTest_equals_and_hashCode.java   |  130 -
 .../applib/util/ObjectContractsTest_toString.java  |  146 -
 .../apache/isis/applib/util/ReasonBufferTest.java  |   65 -
 .../org/apache/isis/applib/util/ReasonsTest.java   |   64 -
 .../apache/isis/applib/util/TitleBufferTest.java   |  290 --
 .../apache/isis/applib/util/TitleTestObject.java   |   44 -
 .../applib/util/schema/CommandDtoUtils_Test.java   |   79 -
 .../applib/util/schema/CommonDtoUtils_Test.java    |  106 -
 ...eractionDtoUtilsTest_deriveLogicalMemberId.java |   36 -
 .../apache/isis/applib/util/schema/Vertical.java   |   23 -
 .../value/Blob_JaxbToStringAdapter_Test.java       |   32 -
 .../isis/applib/value/Blob_constructor_Test.java   |   38 -
 .../value/Clob_JaxbToStringAdapter_Test.java       |   29 -
 .../isis/applib/value/Clob_constructor_Test.java   |   38 -
 ...LocalResourcePath_JaxbToStringAdapter_Test.java |   30 -
 .../value/Markup_JaxbToStringAdapter_Test.java     |   30 -
 .../value/Password_JaxbToStringAdapter_Test.java   |   30 -
 .../apache/isis/applib/value/Password_Test.java    |   83 -
 api/schema/pom.xml                                 |   22 +-
 api/schema/src/main/java/module-info.java          |   24 +-
 .../apache/causeway/schema/IsisModuleSchema.java   |   29 +
 .../org/apache/isis/schema/IsisModuleSchema.java   |   29 -
 .../org/apache/causeway/schema/bindings.xml        |   90 +
 .../{isis => causeway}/schema/chg/chg-2.0.xsd      |    0
 .../{isis => causeway}/schema/cmd/cmd-2.0.xsd      |    0
 .../schema/common/common-2.0.xsd                   |    0
 .../{isis => causeway}/schema/ixn/ixn-2.0.xsd      |    0
 .../schema/metamodel/metamodel-2.0.xsd             |    0
 .../resources/org/apache/isis/schema/bindings.xml  |   90 -
 bom/pom.xml                                        |   96 +-
 commons/pom.xml                                    |   24 +-
 .../src/main/adoc/modules/commons/pages/about.adoc |    6 +-
 commons/src/main/java/module-info.java             |   78 +-
 .../apache/causeway/commons/binding/Bindable.java  |   40 +
 .../causeway/commons/binding/ChangeListener.java   |   28 +
 .../commons/binding/InvalidationListener.java      |   25 +
 .../causeway/commons/binding/Observable.java       |   38 +
 .../apache/causeway/commons/binding/Writable.java  |   29 +
 .../apache/causeway/commons/collections/Can.java   |  706 ++++
 .../causeway/commons/collections/CanVector.java    |  104 +
 .../causeway/commons/collections/Can_Empty.java    |  270 ++
 .../causeway/commons/collections/Can_Multiple.java |  403 +++
 .../commons/collections/Can_Singleton.java         |  336 ++
 .../causeway/commons/collections/Cardinality.java  |   54 +
 .../commons/collections/ImmutableCollection.java   |   93 +
 .../commons/collections/ImmutableEnumSet.java      |  118 +
 .../causeway/commons/collections/_CanFactory.java  |   69 +
 .../commons/concurrent/AwaitableLatch.java         |   68 +
 .../apache/causeway/commons/functional/Either.java |  235 ++
 .../commons/functional/IndexedConsumer.java        |   61 +
 .../commons/functional/IndexedFunction.java        |   61 +
 .../causeway/commons/functional/Railway.java       |  267 ++
 .../commons/functional/ThrowingRunnable.java       |   50 +
 .../apache/causeway/commons/functional/Try.java    |  348 ++
 .../commons/handler/ChainOfResponsibility.java     |  100 +
 .../causeway/commons/having/HasEnabling.java       |   28 +
 .../commons/having/HasTypeSpecificAttributes.java  |   37 +
 .../causeway/commons/internal/_Constants.java      |   99 +
 .../commons/internal/assertions/_Assert.java       |  259 ++
 .../causeway/commons/internal/base/_Blackhole.java |   79 +
 .../causeway/commons/internal/base/_Bytes.java     |  279 ++
 .../internal/base/_Bytes_GZipCompressor.java       |   64 +
 .../internal/base/_Bytes_GZipCompressorSmart.java  |   73 +
 .../causeway/commons/internal/base/_Casts.java     |  142 +
 .../causeway/commons/internal/base/_Files.java     |  224 ++
 .../causeway/commons/internal/base/_Lazy.java      |   99 +
 .../commons/internal/base/_Lazy_Simple.java        |   93 +
 .../commons/internal/base/_Lazy_ThreadSafe.java    |   95 +
 .../causeway/commons/internal/base/_NullSafe.java  |  354 ++
 .../causeway/commons/internal/base/_Objects.java   |  142 +
 .../causeway/commons/internal/base/_Oneshot.java   |   78 +
 .../causeway/commons/internal/base/_Optionals.java |   54 +
 .../causeway/commons/internal/base/_Reduction.java |   98 +
 .../causeway/commons/internal/base/_Refs.java      |  425 +++
 .../internal/base/_StringInterpolation.java        |   85 +
 .../causeway/commons/internal/base/_Strings.java   |  875 +++++
 .../commons/internal/base/_Strings_FastSplit.java  |   66 +
 .../internal/base/_Strings_HtmlEscaper.java        |   53 +
 .../internal/base/_Strings_KeyValuePair.java       |   75 +
 .../internal/base/_Strings_NaturalNames.java       |   90 +
 .../internal/base/_Strings_SplitIterator.java      |   81 +
 .../causeway/commons/internal/base/_Temporals.java |  327 ++
 .../causeway/commons/internal/base/_Text.java      |  420 +++
 .../causeway/commons/internal/base/_Timing.java    |  146 +
 .../causeway/commons/internal/base/_Tuples.java    |   76 +
 .../causeway/commons/internal/base/_With.java      |  323 ++
 .../commons/internal/base/package-info.java        |   28 +
 .../binding/InternalBidirectionalBinding.java      |  213 ++
 .../commons/internal/binding/InternalUtil.java     |  449 +++
 .../internal/binding/_BindableAbstract.java        |  245 ++
 .../commons/internal/binding/_Bindables.java       |   60 +
 .../commons/internal/binding/_Observables.java     |   82 +
 .../commons/internal/binding/package-info.java     |   28 +
 .../commons/internal/codec/_DocumentFactories.java |   96 +
 .../commons/internal/codec/_UrlDecoderUtil.java    |   55 +
 .../commons/internal/collections/_Arrays.java      |  466 +++
 .../internal/collections/_Arrays_Collector.java    |   98 +
 .../collections/_Arrays_CollectorUnknownSize.java  |   81 +
 .../commons/internal/collections/_Collections.java |  329 ++
 .../collections/_Collections_Collector.java        |   80 +
 .../collections/_Collections_SortedSetOfList.java  |  151 +
 .../commons/internal/collections/_Inbox.java       |   86 +
 .../commons/internal/collections/_Lists.java       |  250 ++
 .../commons/internal/collections/_Maps.java        |  381 +++
 .../commons/internal/collections/_Multimaps.java   |  417 +++
 .../commons/internal/collections/_Sets.java        |  379 +++
 .../commons/internal/collections/_Streams.java     |  104 +
 .../commons/internal/collections/package-info.java |   28 +
 .../collections/snapshot/_VersionedList.java       |  214 ++
 .../commons/internal/compare/_Comparators.java     |   52 +
 .../compare/_Comparators_SequenceCompare.java      |  113 +
 .../commons/internal/compare/package-info.java     |   28 +
 .../internal/concurrent/_ConcurrentContext.java    |   55 +
 .../internal/concurrent/_ConcurrentTask.java       |  200 ++
 .../internal/concurrent/_ConcurrentTaskList.java   |  202 ++
 .../commons/internal/concurrent/_ThreadSleep.java  |   56 +
 .../commons/internal/context/_Context.java         |  357 +++
 .../causeway/commons/internal/context/_Plugin.java |  186 ++
 .../internal/context/_PluginResolveException.java  |   37 +
 .../commons/internal/context/package-info.java     |   28 +
 .../causeway/commons/internal/debug/_Debug.java    |  104 +
 .../commons/internal/debug/_IconResource.java      |   36 +
 .../causeway/commons/internal/debug/_Probe.java    |  250 ++
 .../causeway/commons/internal/debug/_Xray.java     |   61 +
 .../commons/internal/debug/_XrayEvent.java         |  136 +
 .../commons/internal/debug/package-info.java       |   28 +
 .../commons/internal/debug/xray/XrayDataModel.java |  208 ++
 .../commons/internal/debug/xray/XrayEnable.java    |   35 +
 .../commons/internal/debug/xray/XrayModel.java     |  112 +
 .../internal/debug/xray/XrayModelSimple.java       |   91 +
 .../commons/internal/debug/xray/XrayUi.java        |  411 +++
 .../internal/debug/xray/_CallStackMerger.java      |  179 ++
 .../commons/internal/debug/xray/_SwingUtil.java    |  109 +
 .../debug/xray/graphics/CallStackDiagram.java      |   37 +
 .../debug/xray/graphics/SequenceDiagram.java       |  419 +++
 .../internal/debug/xray/graphics/_Graphics.java    |  155 +
 .../commons/internal/delegate/_Delegate.java       |  103 +
 .../commons/internal/exceptions/_Exceptions.java   |  513 +++
 .../commons/internal/exceptions/package-info.java  |   28 +
 .../factory/_InstanceCreationClassException.java   |   31 +
 .../factory/_InstanceCreationException.java        |   31 +
 .../commons/internal/factory/_InstanceUtil.java    |  173 +
 .../factory/_UnavailableClassException.java        |   39 +
 .../commons/internal/factory/package-info.java     |   28 +
 .../commons/internal/functions/_Functions.java     |  248 ++
 .../commons/internal/functions/_Predicates.java    |   96 +
 .../commons/internal/functions/package-info.java   |   28 +
 .../causeway/commons/internal/graph/_Graph.java    |   53 +
 .../commons/internal/hardening/_Hardening.java     |   68 +
 .../causeway/commons/internal/hash/_Hashes.java    |   90 +
 .../commons/internal/html/_BootstrapBadge.java     |   89 +
 .../causeway/commons/internal/image/_Images.java   |  186 ++
 .../commons/internal/ioc/_IocContainer.java        |  131 +
 .../commons/internal/ioc/_IocContainer_Spring.java |  161 +
 .../commons/internal/ioc/_ManagedBeanAdapter.java  |   50 +
 .../internal/ioc/_ManagedBeanAdapter_Spring.java   |   48 +
 .../ioc/_ManagedBeanAdapter_forTestingLazy.java    |   44 +
 .../commons/internal/memento/_MementoDefault.java  |  136 +
 .../commons/internal/memento/_Mementos.java        |  195 ++
 .../commons/internal/memento/package-info.java     |   28 +
 .../causeway/commons/internal/os/_OsUtil.java      |  179 ++
 .../causeway/commons/internal/package-info.java    |   28 +
 .../commons/internal/primitives/_Doubles.java      |   70 +
 .../commons/internal/primitives/_Floats.java       |   67 +
 .../commons/internal/primitives/_Ints.java         |  397 +++
 .../commons/internal/primitives/_Longs.java        |  247 ++
 .../commons/internal/proxy/_ProxyFactory.java      |   77 +
 .../internal/proxy/_ProxyFactoryService.java       |   44 +
 .../proxy/_ProxyFactoryServiceAbstract.java        |   66 +
 .../commons/internal/reflection/_Annotations.java  |  197 ++
 .../reflection/_Annotations_AttributeMethods.java  |  314 ++
 ...nthesizedMergedAnnotationInvocationHandler.java |  266 ++
 .../commons/internal/reflection/_ClassCache.java   |  305 ++
 .../commons/internal/reflection/_Generics.java     |  165 +
 .../commons/internal/reflection/_Reflect.java      |  724 +++++
 .../commons/internal/reflection/package-info.java  |   28 +
 .../commons/internal/resources/_DataSink.java      |   35 +
 .../commons/internal/resources/_DataSource.java    |  139 +
 .../causeway/commons/internal/resources/_Json.java |  245 ++
 .../commons/internal/resources/_Resources.java     |  164 +
 .../commons/internal/resources/_Serializables.java |   84 +
 .../causeway/commons/internal/resources/_Xml.java  |  230 ++
 .../causeway/commons/internal/resources/_Yaml.java |  147 +
 .../commons/internal/resources/package-info.java   |   28 +
 .../internal/testing/_SerializationTester.java     |   57 +
 .../commons/resource/ResourceCoordinates.java      |  125 +
 .../org/apache/isis/commons/binding/Bindable.java  |   40 -
 .../isis/commons/binding/ChangeListener.java       |   28 -
 .../isis/commons/binding/InvalidationListener.java |   25 -
 .../apache/isis/commons/binding/Observable.java    |   38 -
 .../org/apache/isis/commons/binding/Writable.java  |   29 -
 .../org/apache/isis/commons/collections/Can.java   |  707 ----
 .../apache/isis/commons/collections/CanVector.java |  104 -
 .../apache/isis/commons/collections/Can_Empty.java |  271 --
 .../isis/commons/collections/Can_Multiple.java     |  404 ---
 .../isis/commons/collections/Can_Singleton.java    |  337 --
 .../isis/commons/collections/Cardinality.java      |   54 -
 .../commons/collections/ImmutableCollection.java   |   94 -
 .../isis/commons/collections/ImmutableEnumSet.java |  118 -
 .../isis/commons/collections/_CanFactory.java      |   69 -
 .../isis/commons/concurrent/AwaitableLatch.java    |   68 -
 .../org/apache/isis/commons/functional/Either.java |  235 --
 .../isis/commons/functional/IndexedConsumer.java   |   61 -
 .../isis/commons/functional/IndexedFunction.java   |   61 -
 .../apache/isis/commons/functional/Railway.java    |  267 --
 .../isis/commons/functional/ThrowingRunnable.java  |   50 -
 .../org/apache/isis/commons/functional/Try.java    |  349 --
 .../commons/handler/ChainOfResponsibility.java     |  100 -
 .../apache/isis/commons/having/HasEnabling.java    |   28 -
 .../commons/having/HasTypeSpecificAttributes.java  |   37 -
 .../apache/isis/commons/internal/_Constants.java   |   99 -
 .../isis/commons/internal/assertions/_Assert.java  |  260 --
 .../isis/commons/internal/base/_Blackhole.java     |   79 -
 .../apache/isis/commons/internal/base/_Bytes.java  |  279 --
 .../internal/base/_Bytes_GZipCompressor.java       |   64 -
 .../internal/base/_Bytes_GZipCompressorSmart.java  |   73 -
 .../apache/isis/commons/internal/base/_Casts.java  |  142 -
 .../apache/isis/commons/internal/base/_Files.java  |  225 --
 .../apache/isis/commons/internal/base/_Lazy.java   |   99 -
 .../isis/commons/internal/base/_Lazy_Simple.java   |   93 -
 .../commons/internal/base/_Lazy_ThreadSafe.java    |   95 -
 .../isis/commons/internal/base/_NullSafe.java      |  355 --
 .../isis/commons/internal/base/_Objects.java       |  143 -
 .../isis/commons/internal/base/_Oneshot.java       |   78 -
 .../isis/commons/internal/base/_Optionals.java     |   54 -
 .../isis/commons/internal/base/_Reduction.java     |   98 -
 .../apache/isis/commons/internal/base/_Refs.java   |  426 ---
 .../internal/base/_StringInterpolation.java        |   86 -
 .../isis/commons/internal/base/_Strings.java       |  876 -----
 .../commons/internal/base/_Strings_FastSplit.java  |   66 -
 .../internal/base/_Strings_HtmlEscaper.java        |   53 -
 .../internal/base/_Strings_KeyValuePair.java       |   75 -
 .../internal/base/_Strings_NaturalNames.java       |   90 -
 .../internal/base/_Strings_SplitIterator.java      |   82 -
 .../isis/commons/internal/base/_Temporals.java     |  328 --
 .../apache/isis/commons/internal/base/_Text.java   |  421 ---
 .../apache/isis/commons/internal/base/_Timing.java |  146 -
 .../apache/isis/commons/internal/base/_Tuples.java |   76 -
 .../apache/isis/commons/internal/base/_With.java   |  323 --
 .../isis/commons/internal/base/package-info.java   |   28 -
 .../binding/InternalBidirectionalBinding.java      |  213 --
 .../commons/internal/binding/InternalUtil.java     |  450 ---
 .../internal/binding/_BindableAbstract.java        |  245 --
 .../isis/commons/internal/binding/_Bindables.java  |   60 -
 .../commons/internal/binding/_Observables.java     |   82 -
 .../commons/internal/binding/package-info.java     |   28 -
 .../commons/internal/codec/_DocumentFactories.java |   96 -
 .../commons/internal/codec/_UrlDecoderUtil.java    |   55 -
 .../isis/commons/internal/collections/_Arrays.java |  467 ---
 .../internal/collections/_Arrays_Collector.java    |   98 -
 .../collections/_Arrays_CollectorUnknownSize.java  |   81 -
 .../commons/internal/collections/_Collections.java |  330 --
 .../collections/_Collections_Collector.java        |   80 -
 .../collections/_Collections_SortedSetOfList.java  |  151 -
 .../isis/commons/internal/collections/_Inbox.java  |   86 -
 .../isis/commons/internal/collections/_Lists.java  |  251 --
 .../isis/commons/internal/collections/_Maps.java   |  382 ---
 .../commons/internal/collections/_Multimaps.java   |  418 ---
 .../isis/commons/internal/collections/_Sets.java   |  380 ---
 .../commons/internal/collections/_Streams.java     |  104 -
 .../commons/internal/collections/package-info.java |   28 -
 .../collections/snapshot/_VersionedList.java       |  214 --
 .../commons/internal/compare/_Comparators.java     |   52 -
 .../compare/_Comparators_SequenceCompare.java      |  114 -
 .../commons/internal/compare/package-info.java     |   28 -
 .../internal/concurrent/_ConcurrentContext.java    |   55 -
 .../internal/concurrent/_ConcurrentTask.java       |  200 --
 .../internal/concurrent/_ConcurrentTaskList.java   |  203 --
 .../commons/internal/concurrent/_ThreadSleep.java  |   56 -
 .../isis/commons/internal/context/_Context.java    |  357 ---
 .../isis/commons/internal/context/_Plugin.java     |  187 --
 .../internal/context/_PluginResolveException.java  |   37 -
 .../commons/internal/context/package-info.java     |   28 -
 .../apache/isis/commons/internal/debug/_Debug.java |  104 -
 .../isis/commons/internal/debug/_IconResource.java |   36 -
 .../apache/isis/commons/internal/debug/_Probe.java |  250 --
 .../apache/isis/commons/internal/debug/_Xray.java  |   61 -
 .../isis/commons/internal/debug/_XrayEvent.java    |  136 -
 .../isis/commons/internal/debug/package-info.java  |   28 -
 .../commons/internal/debug/xray/XrayDataModel.java |  208 --
 .../commons/internal/debug/xray/XrayEnable.java    |   35 -
 .../commons/internal/debug/xray/XrayModel.java     |  113 -
 .../internal/debug/xray/XrayModelSimple.java       |   91 -
 .../isis/commons/internal/debug/xray/XrayUi.java   |  411 ---
 .../internal/debug/xray/_CallStackMerger.java      |  179 --
 .../commons/internal/debug/xray/_SwingUtil.java    |  109 -
 .../debug/xray/graphics/CallStackDiagram.java      |   37 -
 .../debug/xray/graphics/SequenceDiagram.java       |  419 ---
 .../internal/debug/xray/graphics/_Graphics.java    |  155 -
 .../isis/commons/internal/delegate/_Delegate.java  |  104 -
 .../commons/internal/exceptions/_Exceptions.java   |  514 ---
 .../commons/internal/exceptions/package-info.java  |   28 -
 .../factory/_InstanceCreationClassException.java   |   31 -
 .../factory/_InstanceCreationException.java        |   31 -
 .../commons/internal/factory/_InstanceUtil.java    |  173 -
 .../factory/_UnavailableClassException.java        |   39 -
 .../commons/internal/factory/package-info.java     |   28 -
 .../commons/internal/functions/_Functions.java     |  248 --
 .../commons/internal/functions/_Predicates.java    |   96 -
 .../commons/internal/functions/package-info.java   |   28 -
 .../apache/isis/commons/internal/graph/_Graph.java |   53 -
 .../commons/internal/hardening/_Hardening.java     |   69 -
 .../apache/isis/commons/internal/hash/_Hashes.java |   91 -
 .../commons/internal/html/_BootstrapBadge.java     |   89 -
 .../isis/commons/internal/image/_Images.java       |  187 --
 .../isis/commons/internal/ioc/_IocContainer.java   |  132 -
 .../commons/internal/ioc/_IocContainer_Spring.java |  162 -
 .../commons/internal/ioc/_ManagedBeanAdapter.java  |   50 -
 .../internal/ioc/_ManagedBeanAdapter_Spring.java   |   49 -
 .../ioc/_ManagedBeanAdapter_forTestingLazy.java    |   44 -
 .../commons/internal/memento/_MementoDefault.java  |  137 -
 .../isis/commons/internal/memento/_Mementos.java   |  195 --
 .../commons/internal/memento/package-info.java     |   28 -
 .../apache/isis/commons/internal/os/_OsUtil.java   |  180 --
 .../apache/isis/commons/internal/package-info.java |   28 -
 .../isis/commons/internal/primitives/_Doubles.java |   70 -
 .../isis/commons/internal/primitives/_Floats.java  |   67 -
 .../isis/commons/internal/primitives/_Ints.java    |  398 ---
 .../isis/commons/internal/primitives/_Longs.java   |  248 --
 .../isis/commons/internal/proxy/_ProxyFactory.java |   77 -
 .../internal/proxy/_ProxyFactoryService.java       |   44 -
 .../proxy/_ProxyFactoryServiceAbstract.java        |   66 -
 .../commons/internal/reflection/_Annotations.java  |  197 --
 .../reflection/_Annotations_AttributeMethods.java  |  314 --
 ...nthesizedMergedAnnotationInvocationHandler.java |  267 --
 .../commons/internal/reflection/_ClassCache.java   |  306 --
 .../commons/internal/reflection/_Generics.java     |  166 -
 .../isis/commons/internal/reflection/_Reflect.java |  725 -----
 .../commons/internal/reflection/package-info.java  |   28 -
 .../isis/commons/internal/resources/_DataSink.java |   35 -
 .../commons/internal/resources/_DataSource.java    |  139 -
 .../isis/commons/internal/resources/_Json.java     |  246 --
 .../commons/internal/resources/_Resources.java     |  165 -
 .../commons/internal/resources/_Serializables.java |   84 -
 .../isis/commons/internal/resources/_Xml.java      |  231 --
 .../isis/commons/internal/resources/_Yaml.java     |  148 -
 .../commons/internal/resources/package-info.java   |   28 -
 .../internal/testing/_SerializationTester.java     |   57 -
 .../isis/commons/resource/ResourceCoordinates.java |  126 -
 .../test/java/org/apache/causeway/commons/X.java   |    5 +
 .../commons/collections/CanCompareTest.java        |   82 +
 .../causeway/commons/collections/CanTest.java      |  255 ++
 .../commons/collections/CanVectorTest.java         |   51 +
 .../commons/functional/ThrowingRunnableTest.java   |   57 +
 .../handlers/ChainOfResponsibilityTest.java        |  142 +
 .../causeway/commons/internal/base/BytesTest.java  |  196 ++
 .../commons/internal/base/NullSafeTest.java        |  159 +
 .../commons/internal/base/ReductionTest.java       |   73 +
 .../commons/internal/base/StringsTest.java         |  324 ++
 .../commons/internal/base/TemporalsTest.java       |   98 +
 .../causeway/commons/internal/base/TextTest.java   |   75 +
 .../internal/base/_Strings_trimmed_Test.java       |   50 +
 .../commons/internal/base/debug/XrayUiTest.java    |  104 +
 .../commons/internal/binding/BindableTest.java     |  302 ++
 .../commons/internal/collections/Samples.java      |   86 +
 .../commons/internal/collections/_ArraysTest.java  |  396 +++
 .../commons/internal/collections/_MapsTest.java    |  127 +
 .../commons/internal/collections/_SetsTest.java    |  413 +++
 .../collections/snapshot/VersionedListTest.java    |   70 +
 .../commons/internal/compare/ComparatorsTest.java  |  147 +
 .../concurrent/ConcurrentTaskListTest.java         |   55 +
 .../commons/internal/context/ContextTest.java      |  240 ++
 .../internal/debug/xray/CallStackMergerTest.java   |   76 +
 .../commons/internal/image/_ImagesTest.java        |   86 +
 .../commons/internal/primitives/IntsTest.java      |  107 +
 .../commons/internal/primitives/_IntsTest.java     |   37 +
 .../internal/reflection/AnnotationsTest.java       |  116 +
 .../internal/reflection/ClassCacheTest.java        |  100 +
 .../commons/internal/reflection/GenericsTest.java  |   76 +
 .../commons/internal/reflection/ReflectTest.java   |  113 +
 .../internal/resources/JsonYamlReaderTest.java     |   77 +
 .../commons/internal/resources/ResourcesTest.java  |   67 +
 .../internal/resources/XmlRoundTripTest.java       |   65 +
 .../commons/internal/strings/FormatTest.java       |   83 +
 .../isis/commons/collections/CanCompareTest.java   |   82 -
 .../apache/isis/commons/collections/CanTest.java   |  255 --
 .../isis/commons/collections/CanVectorTest.java    |   50 -
 .../commons/functional/ThrowingRunnableTest.java   |   57 -
 .../handlers/ChainOfResponsibilityTest.java        |  143 -
 .../isis/commons/internal/base/BytesTest.java      |  195 --
 .../isis/commons/internal/base/NullSafeTest.java   |  157 -
 .../isis/commons/internal/base/ReductionTest.java  |   73 -
 .../isis/commons/internal/base/StringsTest.java    |  323 --
 .../isis/commons/internal/base/TemporalsTest.java  |   97 -
 .../isis/commons/internal/base/TextTest.java       |   75 -
 .../internal/base/_Strings_trimmed_Test.java       |   49 -
 .../commons/internal/base/debug/XrayUiTest.java    |  104 -
 .../commons/internal/binding/BindableTest.java     |  302 --
 .../isis/commons/internal/collections/Samples.java |   86 -
 .../commons/internal/collections/_ArraysTest.java  |  395 ---
 .../commons/internal/collections/_MapsTest.java    |  127 -
 .../commons/internal/collections/_SetsTest.java    |  410 ---
 .../collections/snapshot/VersionedListTest.java    |   69 -
 .../commons/internal/compare/ComparatorsTest.java  |  147 -
 .../concurrent/ConcurrentTaskListTest.java         |   53 -
 .../isis/commons/internal/context/ContextTest.java |  239 --
 .../internal/debug/xray/CallStackMergerTest.java   |   76 -
 .../isis/commons/internal/image/_ImagesTest.java   |   85 -
 .../isis/commons/internal/primitives/IntsTest.java |  106 -
 .../commons/internal/primitives/_IntsTest.java     |   36 -
 .../internal/reflection/AnnotationsTest.java       |  115 -
 .../internal/reflection/ClassCacheTest.java        |   99 -
 .../commons/internal/reflection/GenericsTest.java  |   76 -
 .../commons/internal/reflection/ReflectTest.java   |  112 -
 .../internal/resources/JsonYamlReaderTest.java     |   75 -
 .../commons/internal/resources/ResourcesTest.java  |   66 -
 .../internal/resources/XmlRoundTripTest.java       |   64 -
 .../isis/commons/internal/strings/FormatTest.java  |   83 -
 .../commons/internal/resources/customer.json       |    0
 .../commons/internal/resources/customer.yml        |    0
 core/codegen-bytebuddy/pom.xml                     |   16 +-
 .../src/main/java/module-info.java                 |   10 +-
 .../bytebuddy/IsisModuleCoreCodegenByteBuddy.java  |   31 +
 .../services/ClassLoadingStrategyAdvisor.java      |   58 +
 .../services/ProxyFactoryServiceByteBuddy.java     |  146 +
 .../bytebuddy/IsisModuleCoreCodegenByteBuddy.java  |   32 -
 .../services/ClassLoadingStrategyAdvisor.java      |   58 -
 .../services/ProxyFactoryServiceByteBuddy.java     |  147 -
 core/config/generateConfigDocs.groovy              |   46 +-
 core/config/pom.xml                                |   24 +-
 core/config/src/main/java/module-info.java         |   44 +-
 .../core/config/DatanucleusConfiguration.java      |  591 ++++
 .../core/config/EclipselinkConfiguration.java      |  530 +++
 .../causeway/core/config/IsisConfiguration.java    | 3382 ++++++++++++++++++++
 .../causeway/core/config/IsisModuleCoreConfig.java |   83 +
 .../core/config/RestEasyConfiguration.java         |   84 +
 .../core/config/applib/RestfulPathProvider.java    |   46 +
 .../IsisBeanFactoryPostProcessorForSpring.java     |  132 +
 .../core/config/beans/IsisBeanMetaData.java        |  123 +
 .../core/config/beans/IsisBeanTypeClassifier.java  |   71 +
 .../beans/IsisBeanTypeClassifierDefault.java       |  182 ++
 .../core/config/beans/IsisBeanTypeRegistry.java    |   71 +
 .../config/beans/IsisBeanTypeRegistryDefault.java  |  131 +
 .../config/beans/IsisComponentScanInterceptor.java |   57 +
 .../beans/IsisComponentScanInterceptorImpl.java    |  101 +
 .../core/config/beans/PersistenceStack.java        |   40 +
 .../core/config/beans/ScannedTypeMetaData.java     |   79 +
 .../core/config/beans/aoppatch/AopPatch.java       |  105 +
 .../aoppatch/TransactionInterceptorFactory.java    |   28 +
 .../core/config/converters/PatternsConverter.java  |   81 +
 .../DataSourceIntrospectionService.java            |  112 +
 .../core/config/environment/DeploymentType.java    |   39 +
 .../config/environment/IsisLocaleInitializer.java  |   65 +
 .../config/environment/IsisSystemEnvironment.java  |  216 ++
 .../environment/IsisTimeZoneInitializer.java       |   49 +
 .../core/config/messages/MessageRegistry.java      |   41 +
 .../metamodel/facets/ActionConfigOptions.java      |   46 +
 .../facets/CollectionLayoutConfigOptions.java      |   74 +
 .../facets/DomainObjectConfigOptions.java          |   42 +
 .../facets/DomainObjectLayoutConfigOptions.java    |   53 +
 .../metamodel/facets/ParameterConfigOptions.java   |   53 +
 .../metamodel/facets/PropertyConfigOptions.java    |   41 +
 .../core/config/metamodel/facets/Util.java         |   41 +
 .../ApplicationFeaturesInitConfiguration.java      |   28 +
 .../metamodel/specloader/IntrospectionMode.java    |   67 +
 .../DatanucleusAutocreateNoValidate.properties     |    0
 .../DatanucleusEagerlyCreateTables.properties      |    0
 .../core/config/presets/DebugDiscovery.properties  |    0
 .../config/presets/DebugIsisInteraction.properties |    0
 .../core/config/presets/DebugMetaModel.properties  |    0
 .../config/presets/DebugPersistence.properties     |    0
 .../presets/DebugProgrammingModel.properties       |    0
 .../presets/DebugRequestScopedServices.properties  |    0
 .../DebugTransactionScopedServices.properties      |    0
 .../core/config/presets/DebugVaadin.properties     |    0
 .../presets/H2InMemory_withUniqueSchema.properties |    0
 .../core/config/presets/IntrospectFully.properties |    0
 .../config/presets/IntrospectLazily.properties     |    0
 .../causeway/core/config/presets/IsisPresets.java  |   82 +
 .../core/config/presets/NoTranslations.properties  |    0
 .../config/presets/SilenceMetaModel.properties     |    0
 .../presets/SilenceProgrammingModel.properties     |    0
 .../core/config/presets/SilenceWicket.properties   |    0
 .../core/config/presets/UseLog4j2Test.properties   |    0
 .../progmodel/ProgrammingModelConstants.java       |  740 +++++
 .../core/config/util/SpringProfileUtil.java        |   61 +
 .../core/config/util/ValueMaskingUtil.java         |   65 +
 .../PatternOptionalStringConstraintValidator.java  |   53 +
 .../core/config/viewer/web/DialogMode.java         |   26 +
 .../core/config/viewer/web/WebAppContextPath.java  |  160 +
 .../isis/core/config/DatanucleusConfiguration.java |  591 ----
 .../isis/core/config/EclipselinkConfiguration.java |  530 ---
 .../apache/isis/core/config/IsisConfiguration.java | 3382 --------------------
 .../isis/core/config/IsisModuleCoreConfig.java     |   84 -
 .../isis/core/config/RestEasyConfiguration.java    |   84 -
 .../core/config/applib/RestfulPathProvider.java    |   46 -
 .../IsisBeanFactoryPostProcessorForSpring.java     |  132 -
 .../isis/core/config/beans/IsisBeanMetaData.java   |  123 -
 .../core/config/beans/IsisBeanTypeClassifier.java  |   72 -
 .../beans/IsisBeanTypeClassifierDefault.java       |  182 --
 .../core/config/beans/IsisBeanTypeRegistry.java    |   71 -
 .../config/beans/IsisBeanTypeRegistryDefault.java  |  131 -
 .../config/beans/IsisComponentScanInterceptor.java |   58 -
 .../beans/IsisComponentScanInterceptorImpl.java    |  101 -
 .../isis/core/config/beans/PersistenceStack.java   |   40 -
 .../core/config/beans/ScannedTypeMetaData.java     |   79 -
 .../isis/core/config/beans/aoppatch/AopPatch.java  |  106 -
 .../aoppatch/TransactionInterceptorFactory.java    |   28 -
 .../core/config/converters/PatternsConverter.java  |   82 -
 .../DataSourceIntrospectionService.java            |  112 -
 .../core/config/environment/DeploymentType.java    |   39 -
 .../config/environment/IsisLocaleInitializer.java  |   66 -
 .../config/environment/IsisSystemEnvironment.java  |  217 --
 .../environment/IsisTimeZoneInitializer.java       |   50 -
 .../isis/core/config/messages/MessageRegistry.java |   41 -
 .../metamodel/facets/ActionConfigOptions.java      |   46 -
 .../facets/CollectionLayoutConfigOptions.java      |   75 -
 .../facets/DomainObjectConfigOptions.java          |   42 -
 .../facets/DomainObjectLayoutConfigOptions.java    |   53 -
 .../metamodel/facets/ParameterConfigOptions.java   |   53 -
 .../metamodel/facets/PropertyConfigOptions.java    |   41 -
 .../isis/core/config/metamodel/facets/Util.java    |   41 -
 .../ApplicationFeaturesInitConfiguration.java      |   28 -
 .../metamodel/specloader/IntrospectionMode.java    |   67 -
 .../isis/core/config/presets/IsisPresets.java      |   82 -
 .../progmodel/ProgrammingModelConstants.java       |  740 -----
 .../isis/core/config/util/SpringProfileUtil.java   |   62 -
 .../isis/core/config/util/ValueMaskingUtil.java    |   65 -
 .../PatternOptionalStringConstraintValidator.java  |   53 -
 .../isis/core/config/viewer/web/DialogMode.java    |   26 -
 .../core/config/viewer/web/WebAppContextPath.java  |  160 -
 .../additional-spring-configuration-metadata.json  |   22 +-
 .../services/javax.validation.ConstraintValidator  |    2 +-
 .../main/resources/ValidationMessages.properties   |    2 +-
 ...ion_getMaxTitleLengthInParentedTables_Test.java |   80 +
 ...n_getMaxTitleLengthInStandaloneTables_Test.java |   80 +
 .../progmodel/ProgrammingModelConstantsTest.java   |   72 +
 .../config/util/ConfigUtil_isProtected_Test.java   |   69 +
 .../core/config/util/ConfigUtil_mask_Test.java     |   50 +
 .../WebAppContextPath_setContextPath_Test.java     |  105 +
 ...ion_getMaxTitleLengthInParentedTables_Test.java |   79 -
 ...n_getMaxTitleLengthInStandaloneTables_Test.java |   79 -
 .../progmodel/ProgrammingModelConstantsTest.java   |   73 -
 .../config/util/ConfigUtil_isProtected_Test.java   |   68 -
 .../core/config/util/ConfigUtil_mask_Test.java     |   49 -
 .../WebAppContextPath_setContextPath_Test.java     |  106 -
 core/interaction/pom.xml                           |   20 +-
 core/interaction/src/main/java/module-info.java    |   20 +-
 .../interaction/IsisModuleCoreInteraction.java     |   36 +
 ...teractionAwareTransactionalBoundaryHandler.java |  172 +
 .../core/interaction/scope/InteractionScope.java   |  192 ++
 .../InteractionScopeBeanFactoryPostProcessor.java  |   46 +
 .../scope/InteractionScopeLifecycleHandler.java    |   30 +
 .../scope/TransactionBoundaryAware.java            |   41 +
 .../core/interaction/session/IsisInteraction.java  |  261 ++
 .../interaction/session/MessageBrokerImpl.java     |  124 +
 .../interaction/IsisModuleCoreInteraction.java     |   37 -
 ...teractionAwareTransactionalBoundaryHandler.java |  172 -
 .../core/interaction/scope/InteractionScope.java   |  192 --
 .../InteractionScopeBeanFactoryPostProcessor.java  |   46 -
 .../scope/InteractionScopeLifecycleHandler.java    |   30 -
 .../scope/TransactionBoundaryAware.java            |   41 -
 .../core/interaction/session/IsisInteraction.java  |  260 --
 .../interaction/session/MessageBrokerImpl.java     |  123 -
 .../interaction/InteractionDefaultTest_next.java   |   46 +
 .../interaction/InteractionDefaultTest_next.java   |   47 -
 core/internaltestsupport/pom.xml                   |   20 +-
 .../contract/ComparableContractTester.java         |    3 +-
 core/internaltestvintage/pom.xml                   |   16 +-
 .../jmocking/ImposteriserUsingCodegenPlugin.java   |   91 +
 .../jmocking/Imposterisers.java                    |   34 +
 .../jmocking/InjectIntoJMockAction.java            |   62 +
 .../internaltestsupport/jmocking/IsisActions.java  |   60 +
 .../internaltestsupport/jmocking/JMockActions.java |   86 +
 .../jmocking/JUnitRuleMockery2.java                |  306 ++
 .../internaltestsupport/jmocking/MyMockomatic.java |  110 +
 .../jmocking/PostponedAction.java                  |   48 +
 .../jmocking/ImposteriserUsingCodegenPlugin.java   |   92 -
 .../jmocking/Imposterisers.java                    |   34 -
 .../jmocking/InjectIntoJMockAction.java            |   62 -
 .../internaltestsupport/jmocking/IsisActions.java  |   60 -
 .../internaltestsupport/jmocking/JMockActions.java |   86 -
 .../jmocking/JUnitRuleMockery2.java                |  307 --
 .../internaltestsupport/jmocking/MyMockomatic.java |  111 -
 .../jmocking/PostponedAction.java                  |   48 -
 core/jdk-supplemental/pom.xml                      |    8 +-
 core/metamodel/pom.xml                             |   28 +-
 core/metamodel/src/main/java/module-info.java      |  176 +-
 .../core/metamodel/IsisModuleCoreMetamodel.java    |  249 ++
 .../_testing/FactoryService_forTesting.java        |   82 +
 .../_testing/MetaModelContext_forTesting.java      |  583 ++++
 .../_testing/MethodRemover_forTesting.java         |   87 +
 .../_testing/ServiceInjector_forTesting.java       |   64 +
 .../_testing/ServiceRegistry_forTesting.java       |  168 +
 .../_testing/TranslationService_forTesting.java    |   42 +
 .../_testing/WrapperFactory_forTesting.java        |   97 +
 .../_testing/_InjectorMethodEvaluator.java         |   36 +
 .../metamodel/_testing/_ServiceInjectorLegacy.java |  316 ++
 .../core/metamodel/_testing/_TestDummies.java      |   51 +
 .../core/metamodel/commons/ArrayExtensions.java    |   68 +
 .../causeway/core/metamodel/commons/CanBeVoid.java |   24 +
 .../core/metamodel/commons/CanonicalInvoker.java   |  206 ++
 .../core/metamodel/commons/ClassExtensions.java    |  198 ++
 .../core/metamodel/commons/ClassFunctions.java     |   46 +
 .../core/metamodel/commons/ClassPredicates.java    |   37 +
 .../causeway/core/metamodel/commons/ClassUtil.java |  175 +
 .../core/metamodel/commons/DateExtensions.java     |   34 +
 .../metamodel/commons/InputStreamExtensions.java   |   68 +
 .../core/metamodel/commons/ListExtensions.java     |  114 +
 .../core/metamodel/commons/LocaleUtil.java         |   39 +
 .../causeway/core/metamodel/commons/MapUtil.java   |   47 +
 .../core/metamodel/commons/MethodUtil.java         |  209 ++
 .../core/metamodel/commons/ObjectExtensions.java   |   81 +
 .../core/metamodel/commons/ParameterAdapter.java   |   91 +
 .../core/metamodel/commons/ResourceUtil.java       |   63 +
 .../metamodel/commons/ScalarRepresentation.java    |   52 +
 .../core/metamodel/commons/StringExtensions.java   |  352 ++
 .../metamodel/commons/ThrowableExtensions.java     |   57 +
 .../causeway/core/metamodel/commons/ToString.java  |  164 +
 .../core/metamodel/commons/package-info.java       |   27 +
 .../causeway/core/metamodel/consent/Allow.java     |   38 +
 .../causeway/core/metamodel/consent/Consent.java   |   72 +
 .../core/metamodel/consent/ConsentAbstract.java    |  156 +
 .../core/metamodel/consent/InteractionAdvisor.java |   70 +
 .../metamodel/consent/InteractionContextType.java  |  134 +
 .../metamodel/consent/InteractionInitiatedBy.java  |   60 +
 .../core/metamodel/consent/InteractionResult.java  |  153 +
 .../metamodel/consent/InteractionResultSet.java    |  102 +
 .../causeway/core/metamodel/consent/Veto.java      |   47 +
 .../metamodel/context/HasMetaModelContext.java     |  206 ++
 .../core/metamodel/context/MetaModelContext.java   |   39 +
 .../context/MetaModelContext_usingSpring.java      |  214 ++
 .../core/metamodel/context/MetaModelContexts.java  |   45 +
 .../metamodel/execution/InteractionInternal.java   |  155 +
 .../metamodel/execution/MemberExecutorService.java |  104 +
 .../causeway/core/metamodel/facetapi/Facet.java    |  201 ++
 .../core/metamodel/facetapi/FacetAbstract.java     |  114 +
 .../core/metamodel/facetapi/FacetHolder.java       |  159 +
 .../metamodel/facetapi/FacetHolderAbstract.java    |  136 +
 .../metamodel/facetapi/FacetHolderLayered.java     |  185 ++
 .../core/metamodel/facetapi/FacetHolderSimple.java |   38 +
 .../core/metamodel/facetapi/FacetRanking.java      |  290 ++
 .../core/metamodel/facetapi/FacetUtil.java         |  164 +
 .../metamodel/facetapi/FacetWithAttributes.java    |   32 +
 .../core/metamodel/facetapi/FeatureType.java       |  161 +
 .../core/metamodel/facetapi/HasFacetHolder.java    |   81 +
 .../metamodel/facetapi/HasSemanticEquality.java    |   35 +
 .../facetapi/HasSemanticEqualityByClass.java       |   31 +
 .../core/metamodel/facetapi/MetaModelRefiner.java  |   33 +
 .../core/metamodel/facetapi/MethodRemover.java     |   92 +
 .../core/metamodel/facets/ActionSupport.java       |  176 +
 .../core/metamodel/facets/DomainEventHelper.java   |  430 +++
 .../causeway/core/metamodel/facets/Evaluators.java |  220 ++
 .../core/metamodel/facets/FacetFactory.java        |  405 +++
 .../metamodel/facets/FacetFactoryAbstract.java     |   91 +
 .../core/metamodel/facets/FacetedMethod.java       |  241 ++
 .../metamodel/facets/FacetedMethodParameter.java   |   65 +
 .../core/metamodel/facets/HasImperativeAspect.java |   40 +
 .../facets/HasPostConstructMethodCache.java        |   58 +
 .../core/metamodel/facets/ImperativeAspect.java    |   81 +
 .../core/metamodel/facets/ImperativeFacet.java     |  131 +
 .../metamodel/facets/ObjectTypeFacetFactory.java   |   51 +
 .../core/metamodel/facets/ParameterSupport.java    |  255 ++
 ...ropertyOrCollectionIdentifyingFacetFactory.java |   82 +
 ...rCollectionIdentifyingFacetFactoryAbstract.java |   46 +
 .../metamodel/facets/SingleClassValueFacet.java    |   34 +
 .../facets/SingleClassValueFacetAbstract.java      |   71 +
 .../core/metamodel/facets/SingleIntValueFacet.java |   26 +
 .../facets/SingleIntValueFacetAbstract.java        |   83 +
 .../metamodel/facets/SingleStringValueFacet.java   |   22 +
 .../facets/SingleStringValueFacetAbstract.java     |   66 +
 .../core/metamodel/facets/SingleValueFacet.java    |   27 +
 .../metamodel/facets/SingleValueFacetAbstract.java |   48 +
 .../core/metamodel/facets/TypedHolder.java         |   39 +
 .../core/metamodel/facets/TypedHolderAbstract.java |   57 +
 .../core/metamodel/facets/WhereValueFacet.java     |   52 +
 .../metamodel/facets/WhereValueFacetAbstract.java  |   66 +
 .../facets/actcoll/typeof/TypeOfFacet.java         |  101 +
 .../facets/actcoll/typeof/TypeOfFacetAbstract.java |   87 +
 .../actcoll/typeof/TypeOfFacetFromFeature.java     |   31 +
 .../facets/actcoll/typeof/TypeOfFacetFromType.java |   31 +
 .../action/ActionAnnotationFacetFactory.java       |  291 ++
 ...reteTypeToBeIncludedWithMetamodelValidator.java |   71 +
 ...nChoicesForCollectionParameterFacetFactory.java |  159 +
 .../actions/action/ActionOverloadingValidator.java |   81 +
 .../action/choicesfrom/ChoicesFromFacet.java       |   29 +
 .../choicesfrom/ChoicesFromFacetAbstract.java      |   43 +
 .../ChoicesFromFacetForActionAnnotation.java       |   47 +
 .../action/explicit/ActionExplicitFacet.java       |   28 +
 .../explicit/ActionExplicitFacetAbstract.java      |   31 +
 .../ActionExplicitFacetForActionAnnotation.java    |   40 +
 .../hidden/HiddenFacetForActionAnnotation.java     |   54 +
 .../action/invocation/ActionDomainEventFacet.java  |   33 +
 .../invocation/ActionDomainEventFacetAbstract.java |  149 +
 .../invocation/ActionDomainEventFacetDefault.java  |   32 +
 .../ActionDomainEventFacetForActionAnnotation.java |   31 +
 .../action/invocation/ActionInvocationFacet.java   |   50 +
 .../invocation/ActionInvocationFacetAbstract.java  |   37 +
 ...ctionInvocationFacetForDomainEventAbstract.java |  249 ++
 ...ionFacetForDomainEventFromActionAnnotation.java |   39 +
 ...onInvocationFacetForDomainEventFromDefault.java |   39 +
 .../actions/action/invocation/IdentifierUtil.java  |  157 +
 .../PrototypeFacetForActionAnnotation.java         |   49 +
 ...ctionSemanticsFacetFallbackToNonIdempotent.java |   31 +
 .../ActionSemanticsFacetForActionAnnotation.java   |   48 +
 .../typeof/TypeOfFacetForActionAnnotation.java     |   55 +
 .../actions/contributing/ContributingFacet.java    |   82 +
 .../contributing/ContributingFacetAbstract.java    |   55 +
 .../ContributingFacetFromMixinFacetFactory.java    |   73 +
 .../FileAcceptFacetForActionAnnotation.java        |   47 +
 .../facets/actions/homepage/HomePageFacet.java     |   33 +
 .../actions/homepage/HomePageFacetAbstract.java    |   35 +
 .../facets/actions/homepage/HomePageFacetImpl.java |   29 +
 .../annotation/HomePageFacetAnnotation.java        |   30 +
 .../annotation/HomePageFacetAnnotationFactory.java |  138 +
 .../actions/layout/ActionLayoutFacetFactory.java   |  114 +
 ...tionPositionFacetForActionLayoutAnnotation.java |   44 +
 .../ActionPositionFacetForActionLayoutXml.java     |   51 +
 ...okmarkPolicyFacetForActionLayoutAnnotation.java |   56 +
 .../BookmarkPolicyFacetForActionLayoutXml.java     |   54 +
 .../CssClassFaFacetForActionLayoutAnnotation.java  |   60 +
 .../layout/CssClassFaFacetForActionLayoutXml.java  |   57 +
 .../layout/CssClassFaFacetForMenuBarXml.java       |   55 +
 .../CssClassFacetForActionLayoutAnnotation.java    |   46 +
 .../layout/CssClassFacetForActionLayoutXml.java    |   54 +
 .../actions/layout/CssClassFacetForMenuBarXml.java |   48 +
 .../HiddenFacetForActionLayoutAnnotation.java      |   53 +
 .../layout/HiddenFacetForActionLayoutXml.java      |   63 +
 ...berDescribedFacetForActionLayoutAnnotation.java |   50 +
 .../MemberDescribedFacetForActionLayoutXml.java    |   54 +
 .../layout/MemberDescribedFacetForMenuBarXml.java  |   48 +
 .../layout/MemberNamedFacetForActionLayoutXml.java |   54 +
 .../layout/MemberNamedFacetForMenuBarXml.java      |   48 +
 .../NamedFacetForActionLayoutAnnotation.java       |   47 +
 .../PromptStyleFacetForActionLayoutAnnotation.java |  106 +
 .../layout/PromptStyleFacetForActionLayoutXml.java |   68 +
 .../RedirectFacetFromActionLayoutAnnotation.java   |   46 +
 .../layout/RedirectFacetFromActionLayoutXml.java   |   54 +
 .../notinservicemenu/NotInServiceMenuFacet.java    |   36 +
 .../NotInServiceMenuFacetAbstract.java             |   39 +
 ...otInServiceMenuFacetFromDomainServiceFacet.java |   55 +
 ...viceMenuFacetFromDomainServiceFacetFactory.java |   65 +
 .../actions/position/ActionPositionFacet.java      |   43 +
 .../position/ActionPositionFacetAbstract.java      |   62 +
 .../position/ActionPositionFacetFallback.java      |   30 +
 .../facets/actions/prototype/PrototypeFacet.java   |   29 +
 .../actions/prototype/PrototypeFacetAbstract.java  |   57 +
 .../facets/actions/redirect/RedirectFacet.java     |   32 +
 .../actions/redirect/RedirectFacetAbstract.java    |   64 +
 .../actions/redirect/RedirectFacetFallback.java    |   30 +
 .../actions/semantics/ActionSemanticsFacet.java    |   32 +
 .../semantics/ActionSemanticsFacetAbstract.java    |   38 +
 .../validate/ActionParameterValidationFacet.java   |   45 +
 .../ActionParameterValidationFacetAbstract.java    |   47 +
 .../actions/validate/ActionValidationFacet.java    |   48 +
 .../validate/ActionValidationFacetAbstract.java    |   47 +
 .../ActionParameterValidationFacetViaMethod.java   |   80 +
 .../method/ActionValidationFacetViaMethod.java     |   88 +
 .../ActionValidationFacetViaMethodFactory.java     |   69 +
 .../facets/all/described/MemberDescribedFacet.java |   38 +
 ...erDescribedFacetWithImperativeTextAbstract.java |   59 +
 ...MemberDescribedFacetWithStaticTextAbstract.java |   67 +
 .../facets/all/described/ObjectDescribedFacet.java |   29 +
 .../described/ObjectDescribedFacetAbstract.java    |   45 +
 .../facets/all/described/ParamDescribedFacet.java  |   32 +
 .../all/described/ParamDescribedFacetAbstract.java |   58 +
 .../core/metamodel/facets/all/help/HelpFacet.java  |   28 +
 .../facets/all/help/HelpFacetAbstract.java         |   41 +
 .../metamodel/facets/all/hide/HiddenFacet.java     |   61 +
 .../facets/all/i8n/HasMemoizableTranslation.java   |   25 +
 .../all/i8n/imperative/HasImperativeText.java      |   44 +
 .../imperative/HasImperativeTextFacetAbstract.java |   97 +
 .../metamodel/facets/all/i8n/noun/HasNoun.java     |   83 +
 .../facets/all/i8n/noun/HasNounFacetAbstract.java  |  115 +
 .../metamodel/facets/all/i8n/noun/NounForm.java    |   46 +
 .../metamodel/facets/all/i8n/noun/NounForms.java   |  118 +
 .../facets/all/i8n/staatic/HasStaticText.java      |   41 +
 .../i8n/staatic/HasStaticTextFacetAbstract.java    |   98 +
 .../facets/all/named/MemberNamedFacet.java         |   38 +
 .../named/MemberNamedFacetForStaticMemberName.java |   39 +
 ...MemberNamedFacetWithImperativeTextAbstract.java |   59 +
 .../MemberNamedFacetWithStaticTextAbstract.java    |   67 +
 .../facets/all/named/ObjectNamedFacet.java         |   29 +
 .../facets/all/named/ObjectNamedFacetAbstract.java |   57 +
 .../all/named/ObjectNamedFacetSynthesized.java     |   43 +
 .../facets/all/named/ParamNamedFacet.java          |   32 +
 .../facets/all/named/ParamNamedFacetAbstract.java  |   54 +
 .../facets/collections/CollectionFacet.java        |  196 ++
 .../collections/CollectionFacetAbstract.java       |   38 +
 .../CollectionAccessorFacetViaAccessor.java        |   94 +
 .../CollectionAccessorFacetViaAccessorFactory.java |  108 +
 .../CollectionAnnotationFacetFactory.java          |  184 ++
 .../collection/defaultview/DefaultViewFacet.java   |   25 +
 .../defaultview/DefaultViewFacetAbstract.java      |   42 +
 .../hidden/HiddenFacetForCollectionAnnotation.java |   53 +
 .../modify/CollectionDomainEventFacet.java         |   31 +
 .../modify/CollectionDomainEventFacetAbstract.java |   76 +
 .../modify/CollectionDomainEventFacetDefault.java  |   31 +
 ...ionDomainEventFacetForCollectionAnnotation.java |   44 +
 .../typeof/TypeOfFacetForCollectionAnnotation.java |   55 +
 .../javautilcollection/CollectionFacetFactory.java |   55 +
 .../javautilcollection/JavaArrayFacet.java         |   89 +
 .../javautilcollection/JavaCollectionFacet.java    |   80 +
 .../layout/CollectionLayoutFacetFactory.java       |   92 +
 ...CssClassFacetForCollectionLayoutAnnotation.java |   45 +
 .../CssClassFacetForCollectionLayoutXml.java       |   54 +
 .../layout/DefaultViewFacetAsConfigured.java       |   40 +
 ...aultViewFacetForCollectionLayoutAnnotation.java |   48 +
 .../DefaultViewFacetForCollectionLayoutXml.java    |   54 +
 .../HiddenFacetForCollectionLayoutAnnotation.java  |   56 +
 .../layout/HiddenFacetForCollectionLayoutXml.java  |   63 +
 ...escribedFacetForCollectionLayoutAnnotation.java |   50 +
 ...MemberDescribedFacetForCollectionLayoutXml.java |   56 +
 ...berNamedFacetForCollectionLayoutAnnotation.java |   50 +
 .../MemberNamedFacetForCollectionLayoutXml.java    |   57 +
 .../PagedFacetForCollectionLayoutAnnotation.java   |   52 +
 .../layout/PagedFacetForCollectionLayoutXml.java   |   53 +
 ...PagedFacetOverriddenByDataTablesDecoration.java |   34 +
 ...SortedByFacetForCollectionLayoutAnnotation.java |   53 +
 .../SortedByFacetForCollectionLayoutXml.java       |   64 +
 .../CollectionLayoutTableDecorationFacet.java      |   73 +
 ...llectionLayoutTableDecorationFacetAbstract.java |   39 +
 ...corationFacetForCollectionLayoutAnnotation.java |   33 +
 ...tForCollectionLayoutAnnotationAsConfigured.java |   33 +
 ...TableDecorationFacetForCollectionLayoutXml.java |   53 +
 ...ayoutTableDecorationFacetFromConfiguration.java |   33 +
 .../parented/ParentedCollectionFacetDefault.java   |   36 +
 .../ParentedFacetSinceCollectionFactory.java       |   55 +
 .../facets/collections/sortedby/SortedByFacet.java |   31 +
 .../sortedby/SortedByFacetAbstract.java            |   38 +
 .../annotation/SortedByFacetAnnotationFactory.java |   84 +
 .../facets/fallback/FallbackFacetFactory.java      |  117 +
 .../LabelAtFacetFromLayoutConfiguration.java       |   31 +
 .../facets/fallback/MaxLengthFacetUnlimited.java   |   42 +
 .../facets/fallback/MultiLineFacetNone.java        |   33 +
 .../fallback/NamedFacetFallbackFromMemberName.java |   35 +
 .../fallback/PagedFacetFromConfiguration.java      |   29 +
 .../metamodel/facets/fallback/TitleFacetNone.java  |   36 +
 .../metamodel/facets/jaxb/JaxbFacetFactory.java    |  376 +++
 .../facets/jaxb/XmlAccessorTypeFacet.java          |   30 +
 .../facets/jaxb/XmlAccessorTypeFacetAbstract.java  |   39 +
 .../facets/jaxb/XmlAccessorTypeFacetDefault.java   |   32 +
 .../facets/jaxb/XmlJavaTypeAdapterFacet.java       |   28 +
 .../jaxb/XmlJavaTypeAdapterFacetAbstract.java      |   37 +
 .../jaxb/XmlJavaTypeAdapterFacetDefault.java       |   30 +
 .../metamodel/facets/jaxb/XmlTransientFacet.java   |   28 +
 .../facets/jaxb/XmlTransientFacetAbstract.java     |   37 +
 .../facets/jaxb/XmlTransientFacetDefault.java      |   29 +
 .../facets/members/cssclass/CssClassFacet.java     |   38 +
 .../members/cssclass/CssClassFacetAbstract.java    |   40 +
 .../members/cssclass/CssClassFacetSimple.java      |   62 +
 .../CssClassFacetOnActionFromConfiguredRegex.java  |   29 +
 ...assFacetOnActionFromConfiguredRegexFactory.java |   83 +
 .../facets/members/cssclassfa/CssClassFaFacet.java |   37 +
 .../members/cssclassfa/CssClassFaFactory.java      |   78 +
 .../cssclassfa/CssClassFaImperativeFacet.java      |   31 +
 .../CssClassFaImperativeFacetAbstract.java         |   60 +
 .../members/cssclassfa/CssClassFaStaticFacet.java  |   24 +
 .../cssclassfa/CssClassFaStaticFacetAbstract.java  |  162 +
 ...CssClassFaFacetOnMemberFromConfiguredRegex.java |  176 +
 .../CssClassFaFacetOnMemberPostProcessor.java      |   56 +
 .../annotprop/MemberDescribedFacetFromType.java    |   53 +
 .../DescribedAsFacetForMemberViaMethodFactory.java |   52 +
 .../method/MemberDescribedFacetViaMethod.java      |   37 +
 .../facets/members/disabled/DisabledFacet.java     |   76 +
 .../members/disabled/DisabledFacetAbstract.java    |  100 +
 .../disabled/DisabledFacetForContributee.java      |   30 +
 .../disabled/method/DisableForContextFacet.java    |   36 +
 .../method/DisableForContextFacetAbstract.java     |   39 +
 .../method/DisableForContextFacetNone.java         |   42 +
 .../method/DisableForContextFacetViaMethod.java    |   85 +
 .../DisableForContextFacetViaMethodFactory.java    |   53 +
 .../facets/members/hidden/HiddenFacetAbstract.java |   75 +
 .../HiddenFacetAbstractAlwaysEverywhere.java       |   40 +
 .../members/hidden/HiddenFacetAbstractImpl.java    |   42 +
 .../HiddenFacetFromLayoutPropertiesAbstract.java   |   53 +
 .../members/hidden/method/HideForContextFacet.java |   36 +
 .../hidden/method/HideForContextFacetAbstract.java |   39 +
 .../hidden/method/HideForContextFacetNone.java     |   39 +
 .../method/HideForContextFacetViaMethod.java       |   70 +
 .../HideForContextFacetViaMethodFactory.java       |   53 +
 .../members/layout/group/GroupIdAndName.java       |  190 ++
 .../members/layout/group/LayoutGroupFacet.java     |   79 +
 .../layout/group/LayoutGroupFacetAbstract.java     |   62 +
 .../group/LayoutGroupFacetForActionAnnotation.java |   43 +
 .../layout/group/LayoutGroupFacetForLayoutXml.java |   68 +
 ...LayoutGroupFacetFromActionLayoutAnnotation.java |   42 +
 ...youtGroupFacetFromPropertyLayoutAnnotation.java |   42 +
 .../members/layout/order/LayoutOrderFacet.java     |   50 +
 .../layout/order/LayoutOrderFacetAbstract.java     |   46 +
 .../layout/order/LayoutOrderFacetForLayoutXml.java |   41 +
 ...LayoutOrderFacetFromActionLayoutAnnotation.java |   42 +
 ...utOrderFacetFromCollectionLayoutAnnotation.java |   42 +
 ...youtOrderFacetFromPropertyLayoutAnnotation.java |   42 +
 .../named/method/MemberNamedFacetViaMethod.java    |   37 +
 .../NamedFacetForMemberViaMethodFactory.java       |   53 +
 .../facets/members/navigation/NavigationFacet.java |   32 +
 .../publish/command/CommandPublishingFacet.java    |   69 +
 .../command/CommandPublishingFacetAbstract.java    |   90 +
 .../CommandPublishingFacetForActionAnnotation.java |  124 +
 ...ishingFacetForActionAnnotationAsConfigured.java |   33 +
 ...ommandPublishingFacetForPropertyAnnotation.java |   99 +
 ...hingFacetForPropertyAnnotationAsConfigured.java |   32 +
 .../CommandPublishingFacetFromConfiguration.java   |   38 +
 ...onPublishingActionFacetForActionAnnotation.java |  108 +
 ...ActionFacetForActionAnnotationAsConfigured.java |   31 +
 ...tionPublishingActionFacetFromConfiguration.java |   31 +
 .../execution/ExecutionPublishingFacet.java        |   49 +
 .../ExecutionPublishingFacetAbstract.java          |   36 +
 ...blishingPropertyFacetForPropertyAnnotation.java |   88 +
 ...ertyFacetForPropertyAnnotationAsConfigured.java |   29 +
 ...onPublishingPropertyFacetFromConfiguration.java |   30 +
 ...mberAndPropertySupportFacetFactoryAbstract.java |   49 +
 .../support/MemberSupportFacetFactoryAbstract.java |   86 +
 .../ViewModelSemanticCheckingFacetFactory.java     |   77 +
 .../object/autocomplete/AutoCompleteFacet.java     |   34 +
 .../autocomplete/AutoCompleteFacetAbstract.java    |  114 +
 .../object/bookmarkpolicy/BookmarkPolicyFacet.java |   37 +
 .../BookmarkPolicyFacetAbstract.java               |   63 +
 .../BookmarkPolicyFacetFallback.java               |   33 +
 .../BookmarkPolicyFacetFallbackFactory.java        |  103 +
 .../facets/object/callbacks/CallbackFacet.java     |   54 +
 .../object/callbacks/CallbackFacetAbstract.java    |   65 +
 .../object/callbacks/CallbackFacetFactory.java     |   87 +
 .../object/callbacks/CreatedCallbackFacet.java     |   35 +
 .../callbacks/CreatedCallbackFacetAbstract.java    |   42 +
 .../callbacks/CreatedCallbackFacetViaMethod.java   |   38 +
 .../callbacks/CreatedLifecycleEventFacet.java      |   29 +
 ...fecycleEventFacetForDomainObjectAnnotation.java |   46 +
 .../object/callbacks/LifecycleEventFacet.java      |   27 +
 .../object/callbacks/LoadedCallbackFacet.java      |   36 +
 .../callbacks/LoadedCallbackFacetAbstract.java     |   42 +
 .../callbacks/LoadedCallbackFacetViaMethod.java    |   36 +
 .../callbacks/LoadedLifecycleEventFacet.java       |   29 +
 ...fecycleEventFacetForDomainObjectAnnotation.java |   44 +
 .../object/callbacks/PersistedCallbackFacet.java   |   35 +
 .../callbacks/PersistedCallbackFacetAbstract.java  |   42 +
 .../callbacks/PersistedCallbackFacetViaMethod.java |   36 +
 .../callbacks/PersistedLifecycleEventFacet.java    |   29 +
 ...fecycleEventFacetForDomainObjectAnnotation.java |   44 +
 .../object/callbacks/PersistingCallbackFacet.java  |   36 +
 .../callbacks/PersistingCallbackFacetAbstract.java |   42 +
 .../PersistingCallbackFacetViaMethod.java          |   36 +
 .../callbacks/PersistingLifecycleEventFacet.java   |   29 +
 ...fecycleEventFacetForDomainObjectAnnotation.java |   45 +
 .../object/callbacks/RemovingCallbackFacet.java    |   31 +
 .../callbacks/RemovingCallbackFacetAbstract.java   |   42 +
 .../callbacks/RemovingCallbackFacetViaMethod.java  |   36 +
 .../callbacks/RemovingLifecycleEventFacet.java     |   29 +
 ...fecycleEventFacetForDomainObjectAnnotation.java |   47 +
 .../object/callbacks/UpdatedCallbackFacet.java     |   36 +
 .../callbacks/UpdatedCallbackFacetAbstract.java    |   42 +
 .../callbacks/UpdatedCallbackFacetViaMethod.java   |   36 +
 .../callbacks/UpdatedLifecycleEventFacet.java      |   29 +
 ...fecycleEventFacetForDomainObjectAnnotation.java |   47 +
 .../object/callbacks/UpdatingCallbackFacet.java    |   36 +
 .../callbacks/UpdatingCallbackFacetAbstract.java   |   42 +
 .../callbacks/UpdatingCallbackFacetViaMethod.java  |   36 +
 .../callbacks/UpdatingLifecycleEventFacet.java     |   29 +
 ...fecycleEventFacetForDomainObjectAnnotation.java |   47 +
 .../choices/ChoicesFacetFromBoundedAbstract.java   |  123 +
 .../object/choices/enums/ChoicesFacetFromEnum.java |   67 +
 .../choices/enums/ChoicesFacetFromEnumFactory.java |   47 +
 .../method/CssClassFacetViaCssClassMethod.java     |   72 +
 ...ssClassFaFacetForDomainObjectLayoutFactory.java |   54 +
 .../facets/object/defaults/DefaultedFacet.java     |   43 +
 .../object/defaults/DefaultedFacetAbstract.java    |   65 +
 .../defaults/DefaultedFacetFromValueFacet.java     |   44 +
 .../object/disabled/DisabledObjectFacet.java       |   54 +
 .../disabled/DisabledObjectFacetAbstract.java      |   49 +
 .../method/DisabledObjectFacetViaMethod.java       |   93 +
 .../AliasedFacetForDomainObjectAnnotation.java     |   61 +
 .../DomainObjectAnnotationFacetFactory.java        |  653 ++++
 ...AutoCompleteFacetForDomainObjectAnnotation.java |   45 +
 .../ChoicesFacetForDomainObjectAnnotation.java     |   47 +
 ...EventDefaultFacetForDomainObjectAnnotation.java |   51 +
 ...EventDefaultFacetForDomainObjectAnnotation.java |   50 +
 ...EventDefaultFacetForDomainObjectAnnotation.java |   50 +
 ...itingEnabledFacetForDomainObjectAnnotation.java |   57 +
 .../ImmutableFacetForDomainObjectAnnotation.java   |   94 +
 ...FacetForDomainObjectAnnotationAsConfigured.java |   38 +
 .../editing/ImmutableFacetFromConfiguration.java   |   50 +
 ...gePublishingFacetForDomainObjectAnnotation.java |   74 +
 ...FacetForDomainObjectAnnotationAsConfigured.java |   31 +
 ...tityChangePublishingFacetFromConfiguration.java |   38 +
 ...ectionPolicyFacetForDomainObjectAnnotation.java |   59 +
 ...PolicyFacetForDomainObjectLayoutAnnotation.java |   44 +
 ...ookmarkPolicyFacetForDomainObjectLayoutXml.java |   56 +
 ...lassFaFacetForDomainObjectLayoutAnnotation.java |   58 +
 .../CssClassFaFacetForDomainObjectLayoutXml.java   |   59 +
 ...sClassFacetForDomainObjectLayoutAnnotation.java |   57 +
 .../CssClassFacetForDomainObjectLayoutXml.java     |   54 +
 ...ObjectLayoutAnnotationUsingCssClassUiEvent.java |  125 +
 .../DomainObjectLayoutFacetFactory.java            |   98 +
 ...mainObjectLayoutAnnotationUsingIconUiEvent.java |  124 +
 ...inObjectLayoutAnnotationUsingLayoutUiEvent.java |  125 +
 ...cribedFacetForDomainObjectLayoutAnnotation.java |   47 +
 ...jectDescribedFacetForDomainObjectLayoutXml.java |   56 +
 ...tNamedFacetForDomainObjectLayoutAnnotation.java |   71 +
 .../ObjectNamedFacetForDomainObjectLayoutXml.java  |   74 +
 .../PagedFacetForDomainObjectLayoutAnnotation.java |   54 +
 ...PagedFacetOverriddenByDataTablesDecoration.java |   30 +
 ...ainObjectLayoutAnnotationUsingTitleUiEvent.java |  159 +
 .../DomainObjectLayoutTableDecorationFacet.java    |   72 +
 ...inObjectLayoutTableDecorationFacetAbstract.java |   39 +
 ...rationFacetForDomainObjectLayoutAnnotation.java |   33 +
 ...orDomainObjectLayoutAnnotationAsConfigured.java |   33 +
 ...bleDecorationFacetForDomainObjectLayoutXml.java |   62 +
 ...ayoutTableDecorationFacetFromConfiguration.java |   33 +
 .../object/domainservice/DomainServiceFacet.java   |   80 +
 .../domainservice/DomainServiceFacetAbstract.java  |   57 +
 .../AliasedFacetForDomainServiceAnnotation.java    |   61 +
 .../DomainServiceFacetAnnotationFactory.java       |   97 +
 .../DomainServiceFacetForAnnotation.java           |   33 +
 .../DomainServiceLayoutFacet.java                  |   36 +
 .../DomainServiceLayoutFacetAbstract.java          |   55 +
 .../DomainServiceLayoutFacetFactory.java           |   69 +
 ...NamedFacetForDomainServiceLayoutAnnotation.java |   56 +
 .../DomainServiceLayoutFacetAnnotation.java        |   34 +
 .../facets/object/entity/EntityFacet.java          |  175 +
 .../object/entity/_EntityFacetForTesting.java      |  110 +
 .../metamodel/facets/object/grid/GridFacet.java    |   43 +
 .../facets/object/grid/GridFacetDefault.java       |  133 +
 .../facets/object/grid/GridFacetFactory.java       |   53 +
 .../facets/object/hidden/HiddenInstanceFacet.java  |   47 +
 .../facets/object/hidden/HiddenObjectFacet.java    |   36 +
 .../object/hidden/HiddenObjectFacetAbstract.java   |   47 +
 .../facets/object/hidden/HiddenTypeFacet.java      |   23 +
 .../hidden/HiddenTypeFacetFromAuthorization.java   |   77 +
 .../HiddenTypeFacetFromAuthorizationFactory.java   |   48 +
 .../hidden/method/HiddenObjectFacetViaMethod.java  |   80 +
 .../metamodel/facets/object/icon/IconFacet.java    |   43 +
 .../facets/object/icon/IconFacetAbstract.java      |   41 +
 .../metamodel/facets/object/icon/ObjectIcon.java   |  102 +
 .../facets/object/icon/ObjectIconService.java      |   52 +
 .../icon/method/IconFacetViaIconNameMethod.java    |   72 +
 .../RemoveAnnotatedMethodsFacetFactory.java        |   72 +
 ...oveDatanucleusPersistableTypesFacetFactory.java |   74 +
 .../RemoveDnPrefixedMethodsFacetFactory.java       |   48 +
 .../javalang/IteratorFilteringFacetFactory.java    |   60 +
 .../ignore/javalang/RemoveMethodsFacetFactory.java |  147 +
 .../jdo/RemoveJdoEnhancementTypesFacetFactory.java |   74 +
 .../jdo/RemoveJdoPrefixedMethodsFacetFactory.java  |   49 +
 .../object/immutable/EditingEnabledFacet.java      |   38 +
 .../facets/object/immutable/ImmutableFacet.java    |   49 +
 .../object/immutable/ImmutableFacetAbstract.java   |   87 +
 .../CopyImmutableFacetOntoMembersFactory.java      |   53 +
 .../introspection/IntrospectionPolicyFacet.java    |   58 +
 .../IntrospectionPolicyFacetAbstract.java          |   61 +
 .../facets/object/layout/LayoutFacet.java          |   36 +
 .../facets/object/layout/LayoutFacetAbstract.java  |   42 +
 .../facets/object/layout/LayoutFacetFallback.java  |   43 +
 .../object/layout/LayoutFacetViaLayoutMethod.java  |   78 +
 .../facets/object/logicaltype/AliasedFacet.java    |   53 +
 .../object/logicaltype/AliasedFacetAbstract.java   |   64 +
 .../logicaltype/LogicalTypeMalformedValidator.java |   76 +
 .../LogicalTypeFacetFromClassNameFactory.java      |  137 +
 .../mixin/MetaModelValidatorForMixinTypes.java     |   77 +
 .../metamodel/facets/object/mixin/MixinFacet.java  |   65 +
 .../facets/object/mixin/MixinFacetAbstract.java    |  128 +
 .../mixin/MixinFacetForDomainObjectAnnotation.java |   65 +
 .../object/navparent/NavigableParentFacet.java     |   41 +
 .../navparent/NavigableParentFacetAbstract.java    |   37 +
 .../NavigableParentAnnotationFacetFactory.java     |  200 ++
 .../method/NavigableParentFacetViaMethod.java      |  128 +
 .../ObjectValidPropertiesFacet.java                |   41 +
 .../ObjectValidPropertiesFacetAbstract.java        |   46 +
 .../impl/ObjectValidPropertiesFacetImpl.java       |   66 +
 .../ObjectValidPropertiesFacetImplFactory.java     |   40 +
 .../metamodel/facets/object/paged/PagedFacet.java  |   32 +
 .../facets/object/paged/PagedFacetAbstract.java    |   51 +
 .../object/parented/ParentedCollectionFacet.java   |   39 +
 .../parented/ParentedCollectionFacetAbstract.java  |   35 +
 .../facets/object/projection/ProjectionFacet.java  |   28 +
 .../object/projection/ProjectionFacetAbstract.java |   37 +
 .../ProjectionFacetFromProjectingProperty.java     |   59 +
 .../ident/CssClassFacetFromProjectionFacet.java    |   58 +
 .../ident/IconFacetFromProjectionFacet.java        |   64 +
 .../ident/TitleFacetFromProjectionFacet.java       |   57 +
 .../object/promptStyle/PromptStyleFacet.java       |   32 +
 .../promptStyle/PromptStyleFacetAbstract.java      |   41 +
 .../promptStyle/PromptStyleFacetAsConfigured.java  |   46 +
 .../entitychange/EntityChangePublishingFacet.java  |   54 +
 .../EntityChangePublishingFacetAbstract.java       |   43 +
 .../object/support/ObjectSupportFacetAbstract.java |   26 +
 .../object/support/ObjectSupportFacetFactory.java  |  150 +
 .../metamodel/facets/object/title/TitleFacet.java  |   49 +
 .../facets/object/title/TitleFacetAbstract.java    |   73 +
 .../facets/object/title/TitleRenderRequest.java    |   58 +
 .../annotation/TitleAnnotationFacetFactory.java    |  101 +
 .../annotation/TitleFacetViaTitleAnnotation.java   |  254 ++
 .../methods/TitleFacetFromToStringMethod.java      |   74 +
 .../title/methods/TitleFacetViaTitleMethod.java    |  112 +
 .../title/parser/TitleFacetFromValueFacet.java     |  121 +
 .../facets/object/value/CompositeValueUpdater.java |   93 +
 .../value/CompositeValueUpdaterForParameter.java   |   63 +
 .../value/CompositeValueUpdaterForProperty.java    |   63 +
 .../value/ImmutableFacetViaValueSemantics.java     |   37 +
 .../object/value/MaxLengthFacetFromValueFacet.java |   58 +
 .../value/TypicalLengthFacetFromValueFacet.java    |   52 +
 .../metamodel/facets/object/value/ValueFacet.java  |  175 +
 .../facets/object/value/ValueFacetAbstract.java    |  420 +++
 .../facets/object/value/ValueSerializer.java       |   43 +
 .../object/value/ValueSerializerDefault.java       |   71 +
 ...ionOrAnyMatchingValueSemanticsFacetFactory.java |  160 +
 .../vsp/ValueFacetUsingSemanticsProvider.java      |   44 +
 .../value/vsp/ValueSemanticsFacetAbstract.java     |   65 +
 .../facets/object/viewmodel/ViewModelFacet.java    |   57 +
 .../object/viewmodel/ViewModelFacetAbstract.java   |  112 +
 .../object/viewmodel/ViewModelFacetFactory.java    |  124 +
 .../ViewModelFacetForDomainObjectAnnotation.java   |  186 ++
 .../ViewModelFacetForSerializableInterface.java    |  101 +
 .../ViewModelFacetForViewModelInterface.java       |  114 +
 .../ViewModelFacetForXmlRootElementAnnotation.java |  106 +
 .../facets/objectvalue/choices/ChoicesFacet.java   |   36 +
 .../objectvalue/choices/ChoicesFacetAbstract.java  |   37 +
 .../daterenderedadjust/DateRenderAdjustFacet.java  |   44 +
 .../DateRenderAdjustFacetAbstract.java             |   62 +
 .../digits/MaxFractionalDigitsFacet.java           |   47 +
 .../digits/MaxFractionalDigitsFacetAbstract.java   |   91 +
 .../objectvalue/digits/MaxTotalDigitsFacet.java    |   46 +
 .../digits/MaxTotalDigitsFacetAbstract.java        |   90 +
 .../digits/MinFractionalDigitsFacet.java           |   44 +
 .../digits/MinFractionalDigitsFacetAbstract.java   |   71 +
 .../objectvalue/digits/MinIntegerDigitsFacet.java  |   43 +
 .../digits/MinIntegerDigitsFacetAbstract.java      |   71 +
 .../objectvalue/fileaccept/FileAcceptFacet.java    |   34 +
 .../fileaccept/FileAcceptFacetAbstract.java        |   36 +
 .../facets/objectvalue/labelat/LabelAtFacet.java   |   35 +
 .../objectvalue/labelat/LabelAtFacetAbstract.java  |   62 +
 .../labelat/LabelAtFacetFromMultiLineFacet.java    |   38 +
 .../objectvalue/mandatory/MandatoryFacet.java      |   84 +
 .../mandatory/MandatoryFacetAbstract.java          |  115 +
 .../mandatory/MandatoryFacetDefault.java           |   43 +
 .../facets/objectvalue/maxlen/MaxLengthFacet.java  |   40 +
 .../objectvalue/maxlen/MaxLengthFacetAbstract.java |   88 +
 .../objectvalue/multiline/MultiLineFacet.java      |   38 +
 .../multiline/MultiLineFacetAbstract.java          |   66 +
 .../MustSatisfySpecificationFacet.java             |   26 +
 .../MustSatisfySpecificationFacetAbstract.java     |  117 +
 .../mustsatisfyspec/SpecificationEvaluator.java    |   79 +
 .../facets/objectvalue/regex/RegExFacet.java       |   38 +
 .../objectvalue/regex/RegExFacetAbstract.java      |  120 +
 .../temporalformat/DateFormatStyleFacet.java       |   38 +
 .../DateFormatStyleFacetAbstract.java              |   73 +
 .../temporalformat/TimeFormatPrecisionFacet.java   |   39 +
 .../TimeFormatPrecisionFacetAbstract.java          |   73 +
 .../temporalformat/TimeFormatStyleFacet.java       |   38 +
 .../TimeFormatStyleFacetAbstract.java              |   73 +
 .../temporalformat/TimeZoneTranslationFacet.java   |   41 +
 .../TimeZoneTranslationFacetAbstract.java          |   73 +
 .../objectvalue/typicallen/TypicalLengthFacet.java |   54 +
 .../typicallen/TypicalLengthFacetAbstract.java     |   60 +
 .../ValueSemanticsSelectingFacet.java              |   36 +
 .../ValueSemanticsSelectingFacetAbstract.java      |   38 +
 .../ActionParameterAutoCompleteFacet.java          |   48 +
 .../ActionParameterAutoCompleteFacetAbstract.java  |   40 +
 .../facets/param/autocomplete/MinLengthUtil.java   |   55 +
 .../ActionParameterAutoCompleteFacetViaMethod.java |  112 +
 ...ParameterAutoCompleteFacetViaMethodFactory.java |   55 +
 .../param/choices/ActionParameterChoicesFacet.java |   43 +
 .../ActionParameterChoicesFacetAbstract.java       |   41 +
 ...ctionParameterChoicesFacetFromChoicesFacet.java |   60 +
 ...nParameterChoicesFacetFromChoicesFromFacet.java |   74 +
 .../ActionParameterChoicesFacetViaMethod.java      |  100 +
 ...ctionParameterChoicesFacetViaMethodFactory.java |   52 +
 .../defaults/ActionParameterDefaultsFacet.java     |   47 +
 .../ActionParameterDefaultsFacetAbstract.java      |   37 +
 .../ActionParameterDefaultsFacetViaMethod.java     |  104 +
 ...tionParameterDefaultsFacetViaMethodFactory.java |   51 +
 .../annotderived/ParamDescribedFacetFromType.java  |   52 +
 .../disable/ActionParameterDisabledFacet.java      |   41 +
 .../ActionParameterDisabledFacetAbstract.java      |   47 +
 .../ActionParameterDisabledFacetViaMethod.java     |   90 +
 ...tionParameterDisabledFacetViaMethodFactory.java |   54 +
 .../param/hide/ActionParameterHiddenFacet.java     |   42 +
 .../hide/ActionParameterHiddenFacetAbstract.java   |   53 +
 .../ActionParameterHiddenFacetViaMethod.java       |   97 +
 ...ActionParameterHiddenFacetViaMethodFactory.java |   55 +
 .../CssClassFacetForParameterLayoutAnnotation.java |   46 +
 .../LabelAtFacetForParameterLayoutAnnotation.java  |   45 +
 ...MultiLineFacetForParameterLayoutAnnotation.java |   44 +
 .../NamedFacetForParameterLayoutAnnotation.java    |   52 +
 ...DescribedFacetForParameterLayoutAnnotation.java |   48 +
 .../param/layout/ParameterLayoutFacetFactory.java  |   77 +
 ...calLengthFacetForParameterLayoutAnnotation.java |   47 +
 .../MandatoryFacetOnParametersDefaultFactory.java  |   58 +
 .../NamedFacetForParameterUsingReflection.java     |   37 +
 .../ParameterNameFacetFactoryUsingReflection.java  |   74 +
 .../parameter/ParameterAnnotationFacetFactory.java |  154 +
 ...ActionFacetForActionAnnotationAsConfigured.java |   33 +
 .../depdef/ParameterDependentDefaultsFacet.java    |   73 +
 .../ParameterDependentDefaultsFacetAbstract.java   |   39 +
 ...pendentDefaultsFacetForParameterAnnotation.java |   33 +
 ...terDependentDefaultsFacetFromConfiguration.java |   33 +
 .../FileAcceptFacetForParameterAnnotation.java     |   47 +
 .../MandatoryFacetForParameterAnnotation.java      |   78 +
 ...cetInvertedByNullableAnnotationOnParameter.java |   59 +
 .../MaxLengthFacetForParameterAnnotation.java      |   45 +
 ...fySpecificationFacetForParameterAnnotation.java |   59 +
 .../regex/RegExFacetForParameterAnnotation.java    |   57 +
 .../RegExFacetForPatternAnnotationOnParameter.java |   55 +
 ...ActionParameterSupportFacetFactoryAbstract.java |   95 +
 .../TypicalLengthFacetOnParameterFromType.java     |   75 +
 .../validate/ActionParameterValidationFacet.java   |   51 +
 .../ActionParameterValidationFacetAbstract.java    |   52 +
 .../ActionParameterValidationFacetViaMethod.java   |   91 +
 ...onParameterValidationFacetViaMethodFactory.java |   54 +
 .../PropertyOrCollectionAccessorFacet.java         |   52 +
 .../PropertyOrCollectionAccessorFacetAbstract.java |   55 +
 .../propcoll/memserexcl/SnapshotExcludeFacet.java  |   29 +
 .../memserexcl/SnapshotExcludeFacetAbstract.java   |   37 +
 .../accessor/PropertyAccessorFacetViaAccessor.java |   90 +
 .../PropertyAccessorFacetViaAccessorFactory.java   |  102 +
 .../autocomplete/PropertyAutoCompleteFacet.java    |   50 +
 .../PropertyAutoCompleteFacetAbstract.java         |   38 +
 .../method/PropertyAutoCompleteFacetMethod.java    |   95 +
 .../PropertyAutoCompleteFacetMethodFactory.java    |   58 +
 .../properties/businesskey/BusinessKeyFacet.java   |   35 +
 .../businesskey/BusinessKeyFacetAbstract.java      |   35 +
 .../properties/choices/PropertyChoicesFacet.java   |   51 +
 .../choices/PropertyChoicesFacetAbstract.java      |   39 +
 .../PropertyChoicesFacetFromChoicesFacet.java      |   57 +
 .../method/PropertyChoicesFacetViaMethod.java      |   82 +
 .../PropertyChoicesFacetViaMethodFactory.java      |   58 +
 .../properties/defaults/PropertyDefaultFacet.java  |   45 +
 .../defaults/PropertyDefaultFacetAbstract.java     |   39 +
 .../defaults/PropertyDefaultFacetNone.java         |   39 +
 .../PropertyDefaultFacetFromDefaultedFacet.java    |   71 +
 .../PropertyDefaultFacetFromTypeFactory.java       |   69 +
 .../method/PropertyDefaultFacetViaMethod.java      |   80 +
 .../PropertyDefaultFacetViaMethodFactory.java      |   53 +
 .../DisabledFacetOnPropertyFromImmutable.java      |   74 +
 ...isabledFacetOnPropertyFromImmutableFactory.java |   61 +
 .../DisabledFacetOnPropertyFromMissingSetter.java  |   33 +
 .../DisabledFacetOnPropertyInferredFactory.java    |   60 +
 .../MandatoryFacetOnProperyDefaultFactory.java     |   59 +
 .../properties/projection/ProjectingFacet.java     |   29 +
 .../projection/ProjectingFacetAbstract.java        |   37 +
 .../ProjectingFacetFromPropertyAnnotation.java     |   67 +
 .../property/PropertyAnnotationFacetFactory.java   |  382 +++
 .../DisabledFacetForPropertyAnnotation.java        |   64 +
 ...acetForPropertyAnnotationInvertedSemantics.java |   36 +
 .../EntityPropertyChangePublishingPolicyFacet.java |   71 +
 ...ropertyChangePublishingPolicyFacetAbstract.java |   65 +
 ...PublishingPolicyFacetForPropertyAnnotation.java |   50 +
 .../FileAcceptFacetForPropertyAnnotation.java      |   46 +
 .../hidden/HiddenFacetForPropertyAnnotation.java   |   54 +
 .../MandatoryFacetForPropertyAnnotation.java       |   89 +
 ...acetInvertedByNullableAnnotationOnProperty.java |   63 +
 .../MaxLengthFacetForPropertyAnnotation.java       |   43 +
 ...ropertyClearFacetForDomainEventFromDefault.java |   40 +
 ...rFacetForDomainEventFromPropertyAnnotation.java |   40 +
 .../property/modify/PropertyDomainEventFacet.java  |   32 +
 .../modify/PropertyDomainEventFacetAbstract.java   |  163 +
 .../modify/PropertyDomainEventFacetDefault.java    |   39 +
 ...pertyDomainEventFacetForPropertyAnnotation.java |   39 +
 ...opertySetterFacetForDomainEventFromDefault.java |   41 +
 ...rFacetForDomainEventFromPropertyAnnotation.java |   40 +
 ...tySetterOrClearFacetForDomainEventAbstract.java |  297 ++
 .../facets/properties/property/modify/Utils.java   |   23 +
 ...sfySpecificationFacetForPropertyAnnotation.java |   59 +
 .../RegExFacetForPatternAnnotationOnProperty.java  |   56 +
 .../regex/RegExFacetForPropertyAnnotation.java     |   59 +
 .../SnapshotExcludeFacetForPropertyAnnotation.java |   46 +
 .../CssClassFacetForPropertyLayoutAnnotation.java  |   45 +
 .../CssClassFacetForPropertyLayoutXml.java         |   54 +
 .../HiddenFacetForPropertyLayoutAnnotation.java    |   54 +
 .../HiddenFacetForPropertyLayoutXml.java           |   63 +
 .../LabelAtFacetForPropertyLayoutAnnotation.java   |   45 +
 .../LabelAtFacetForPropertyLayoutXml.java          |   53 +
 ...rDescribedFacetForPropertyLayoutAnnotation.java |   49 +
 .../MemberDescribedFacetForPropertyLayoutXml.java  |   55 +
 .../MemberNamedFacetForPropertyLayoutXml.java      |   56 +
 .../MultiLineFacetForPropertyLayoutAnnotation.java |   43 +
 .../MultiLineFacetForPropertyLayoutXml.java        |   52 +
 .../NamedFacetForPropertyLayoutAnnotation.java     |   52 +
 ...romptStyleFacetForPropertyLayoutAnnotation.java |  115 +
 .../PromptStyleFacetForPropertyLayoutXml.java      |   68 +
 .../propertylayout/PropertyLayoutFacetFactory.java |   95 +
 .../RenderedAdjustedFacetForPropertyLayoutXml.java |   52 +
 ...icalLengthFacetForPropertyLayoutAnnotation.java |   46 +
 .../TypicalLengthFacetForPropertyLayoutXml.java    |   53 +
 ...UnchangingFacetForPropertyLayoutAnnotation.java |   56 +
 .../UnchangingFacetForPropertyLayoutXml.java       |   55 +
 .../renderunchanged/UnchangingFacet.java           |   29 +
 .../renderunchanged/UnchangingFacetAbstract.java   |   34 +
 .../properties/searchable/SearchableFacet.java     |   48 +
 .../searchable/SearchableFacetAbstract.java        |   50 +
 .../TypicalLengthFacetOnPropertyFromType.java      |   77 +
 .../update/PropertySetterFacetFactory.java         |   94 +
 .../SnapshotExcludeFacetFromImmutableMember.java   |   31 +
 .../update/clear/PropertyClearFacet.java           |   36 +
 .../update/clear/PropertyClearFacetAbstract.java   |   34 +
 .../clear/PropertyClearFacetViaClearMethod.java    |   69 +
 .../clear/PropertyClearFacetViaSetterMethod.java   |   70 +
 .../update/clear/PropertyClearingAccessor.java     |   38 +
 .../update/init/PropertyInitializationFacet.java   |   49 +
 .../init/PropertyInitializationFacetAbstract.java  |   34 +
 ...PropertyInitializationFacetViaSetterMethod.java |   64 +
 .../update/modify/PropertySetterFacet.java         |   39 +
 .../update/modify/PropertySetterFacetAbstract.java |   34 +
 .../modify/PropertySetterFacetViaSetterMethod.java |   71 +
 .../update/modify/PropertySettingAccessor.java     |   44 +
 .../validating/PropertyValidateFacet.java          |   49 +
 .../validating/PropertyValidateFacetAbstract.java  |   58 +
 .../validating/PropertyValidateFacetNone.java      |   42 +
 .../dflt/PropertyValidateFacetDefault.java         |   47 +
 .../dflt/PropertyValidateFacetDefaultFactory.java  |   63 +
 .../method/PropertyValidateFacetViaMethod.java     |   80 +
 .../PropertyValidateFacetViaMethodFactory.java     |   58 +
 ...rmatStyleFacetFromValueSemanticsAnnotation.java |   47 +
 ...derAdjustFacetFromValueSemanticsAnnotation.java |   45 +
 ...tsFacetFromJavaxValidationDigitsAnnotation.java |   48 +
 ...nalDigitsFacetFromValueSemanticsAnnotation.java |   48 +
 ...tsFacetFromJavaxValidationDigitsAnnotation.java |   49 +
 ...talDigitsFacetFromValueSemanticsAnnotation.java |   47 +
 ...nalDigitsFacetFromValueSemanticsAnnotation.java |   47 +
 ...gerDigitsFacetFromValueSemanticsAnnotation.java |   47 +
 ...PrecisionFacetFromValueSemanticsAnnotation.java |   47 +
 ...rmatStyleFacetFromValueSemanticsAnnotation.java |   47 +
 ...anslationFacetFromValueSemanticsAnnotation.java |   47 +
 .../ValueSemanticsAnnotationFacetFactory.java      |  152 +
 .../ValueSemanticsSelectingFacetForAnnotation.java |   47 +
 .../inspect/IsisModuleCoreMetamodelInspection.java |   48 +
 .../metamodel/inspect/Object_inspectMetamodel.java |  118 +
 .../metamodel/inspect/model/ActionNode-mixedin.svg |    0
 .../core/metamodel/inspect/model/ActionNode.java   |   88 +
 .../core/metamodel/inspect/model/ActionNode.svg    |    0
 .../metamodel/inspect/model/AnnotationNode.java    |   83 +
 .../metamodel/inspect/model/AnnotationNode.svg     |    0
 .../inspect/model/CollectionNode-mixedin.svg       |    0
 .../metamodel/inspect/model/CollectionNode.java    |   73 +
 .../metamodel/inspect/model/CollectionNode.svg     |    0
 .../metamodel/inspect/model/FacetAttrNode.java     |   83 +
 .../core/metamodel/inspect/model/FacetAttrNode.svg |    0
 .../metamodel/inspect/model/FacetGroupNode.java    |   89 +
 .../metamodel/inspect/model/FacetGroupNode.svg     |    0
 .../core/metamodel/inspect/model/FacetNode.java    |   99 +
 .../core/metamodel/inspect/model/FacetNode.svg     |    0
 .../core/metamodel/inspect/model/MMNode.java       |  135 +
 .../metamodel/inspect/model/MMNodeFactory.java     |  103 +
 .../metamodel/inspect/model/MMTreeAdapter.java     |   45 +
 .../core/metamodel/inspect/model/MemberNode.java   |   71 +
 .../metamodel/inspect/model/ParameterNode.java     |   89 +
 .../core/metamodel/inspect/model/ParameterNode.svg |    0
 .../inspect/model/PropertyNode-mixedin.svg         |    0
 .../core/metamodel/inspect/model/PropertyNode.java |   71 +
 .../core/metamodel/inspect/model/PropertyNode.svg  |    0
 .../core/metamodel/inspect/model/TypeNode.java     |  107 +
 .../core/metamodel/inspect/model/TypeNode.svg      |    0
 .../core/metamodel/inspect/model/icons.html        |    0
 .../core/metamodel/interactions/AccessContext.java |   43 +
 .../interactions/ActionArgUsabilityContext.java    |   75 +
 .../interactions/ActionArgValidityContext.java     |   74 +
 .../interactions/ActionArgVisibilityContext.java   |   75 +
 .../interactions/ActionInteractionContext.java     |   30 +
 .../interactions/ActionUsabilityContext.java       |   59 +
 .../interactions/ActionValidityContext.java        |   66 +
 .../interactions/ActionVisibilityContext.java      |   59 +
 .../interactions/CollectionAccessContext.java      |   45 +
 .../interactions/CollectionUsabilityContext.java   |   47 +
 .../interactions/CollectionVisibilityContext.java  |   48 +
 .../interactions/DisablingInteractionAdvisor.java  |   45 +
 .../interactions/HidingInteractionAdvisor.java     |   45 +
 .../interactions/InteractionAdvisorFacet.java      |   44 +
 .../metamodel/interactions/InteractionContext.java |  133 +
 .../interactions/InteractionEventSupplier.java     |   36 +
 .../metamodel/interactions/InteractionHead.java    |   91 +
 .../metamodel/interactions/InteractionUtils.java   |   93 +
 .../metamodel/interactions/ObjectTitleContext.java |   57 +
 .../interactions/ObjectValidityContext.java        |   58 +
 .../interactions/ObjectVisibilityContext.java      |   58 +
 .../metamodel/interactions/ParseValueContext.java  |   59 +
 .../interactions/PropertyAccessContext.java        |   62 +
 .../interactions/PropertyModifyContext.java        |   70 +
 .../interactions/PropertyUsabilityContext.java     |   48 +
 .../interactions/PropertyVisibilityContext.java    |   47 +
 .../metamodel/interactions/ProposedHolder.java     |   37 +
 .../metamodel/interactions/UsabilityContext.java   |   44 +
 .../interactions/ValidatingInteractionAdvisor.java |   48 +
 .../metamodel/interactions/ValidityContext.java    |   51 +
 .../metamodel/interactions/VisibilityContext.java  |   44 +
 .../interactions/managed/ActionInteraction.java    |  285 ++
 .../managed/ActionInteractionHead.java             |  176 +
 .../managed/CollectionInteraction.java             |   71 +
 .../interactions/managed/HasMetaModel.java         |   27 +
 .../interactions/managed/InteractionRailway.java   |   67 +
 .../interactions/managed/InteractionVeto.java      |  111 +
 .../interactions/managed/ManagedAction.java        |  235 ++
 .../interactions/managed/ManagedCollection.java    |  115 +
 .../interactions/managed/ManagedFeature.java       |   92 +
 .../interactions/managed/ManagedMember.java        |  173 +
 .../interactions/managed/ManagedParameter.java     |   71 +
 .../interactions/managed/ManagedProperty.java      |  169 +
 .../interactions/managed/ManagedValue.java         |   80 +
 .../interactions/managed/MemberInteraction.java    |  113 +
 .../interactions/managed/MultiselectChoices.java   |   30 +
 .../managed/ParameterNegotiationModel.java         |  427 +++
 .../interactions/managed/PropertyInteraction.java  |   89 +
 .../managed/PropertyNegotiationModel.java          |  230 ++
 .../interactions/managed/_BindingUtil.java         |  190 ++
 .../interactions/managed/nonscalar/DataColumn.java |   48 +
 .../interactions/managed/nonscalar/DataRow.java    |   67 +
 .../managed/nonscalar/DataTableModel.java          |  305 ++
 .../managed/nonscalar/_ToggleDebug.java            |   44 +
 .../core/metamodel/layout/DeweyOrderSet.java       |  407 +++
 .../core/metamodel/layout/LayoutFacetUtil.java     |  409 +++
 .../MemberIdentifierComparator.java                |   43 +
 .../memberorderfacet/MemberOrderComparator.java    |   84 +
 .../OrderSetGroupNameComparator.java               |   54 +
 ...tionEnforcesMetamodelContributionValidator.java |  183 ++
 .../core/metamodel/methods/MethodByClassMap.java   |   30 +
 .../methods/MethodFilteringFacetFactory.java       |   34 +
 .../core/metamodel/methods/MethodFinder.java       |  280 ++
 .../core/metamodel/methods/MethodFinderPAT.java    |   89 +
 .../methods/MethodPrefixBasedFacetFactory.java     |   40 +
 .../MethodPrefixBasedFacetFactoryAbstract.java     |  163 +
 .../_OrphanedSupportingMethodValidator.java        |   75 +
 .../core/metamodel/object/Bookmarkable.java        |   89 +
 .../core/metamodel/object/ManagedObject.java       |  607 ++++
 .../core/metamodel/object/ManagedObjects.java      |  447 +++
 .../core/metamodel/object/MmAssertionUtil.java     |  138 +
 .../core/metamodel/object/MmDebugUtil.java         |   76 +
 .../core/metamodel/object/MmEntityUtil.java        |  164 +
 .../core/metamodel/object/MmInvokeUtil.java        |  177 +
 .../core/metamodel/object/MmRenderUtil.java        |   56 +
 .../causeway/core/metamodel/object/MmSpecUtil.java |   45 +
 .../core/metamodel/object/MmTitleUtil.java         |   54 +
 .../core/metamodel/object/MmUnwrapUtil.java        |  125 +
 .../core/metamodel/object/MmVisibilityUtil.java    |  131 +
 .../core/metamodel/object/PackedManagedObject.java |   32 +
 .../core/metamodel/object/ProtoObject.java         |   59 +
 .../core/metamodel/object/_InternalTitleUtil.java  |  103 +
 .../core/metamodel/object/_ManagedObjectEmpty.java |   41 +
 .../object/_ManagedObjectEntityBookmarked.java     |  157 +
 .../object/_ManagedObjectEntityHybrid.java         |  170 +
 .../object/_ManagedObjectEntityTransient.java      |   73 +
 .../core/metamodel/object/_ManagedObjectMixin.java |   55 +
 .../core/metamodel/object/_ManagedObjectOther.java |   54 +
 .../metamodel/object/_ManagedObjectPacked.java     |   66 +
 .../metamodel/object/_ManagedObjectService.java    |   76 +
 .../metamodel/object/_ManagedObjectSpecified.java  |  191 ++
 .../object/_ManagedObjectUnspecified.java          |   92 +
 .../core/metamodel/object/_ManagedObjectValue.java |   78 +
 .../metamodel/object/_ManagedObjectViewmodel.java  |  160 +
 .../core/metamodel/object/_Refetchable.java        |   27 +
 .../metamodel/object/_RefreshableViewmodel.java    |   41 +
 .../metamodel/objectmanager/ObjectBookmarker.java  |   42 +
 .../metamodel/objectmanager/ObjectBulkLoader.java  |  122 +
 .../metamodel/objectmanager/ObjectCreator.java     |  115 +
 .../core/metamodel/objectmanager/ObjectLoader.java |  155 +
 .../metamodel/objectmanager/ObjectManager.java     |  190 ++
 .../objectmanager/ObjectManagerDefault.java        |  115 +
 .../objectmanager/memento/ObjectMemento.java       |   97 +
 .../memento/ObjectMementoCollection.java           |   59 +
 .../memento/ObjectMementoForEmpty.java             |   51 +
 .../memento/ObjectMementoForScalar.java            |  158 +
 .../objectmanager/memento/_Recreatable.java        |   69 +
 .../objectmanager/memento/_RecreatableLookup.java  |   59 +
 .../objectmanager/memento/_RecreatableValue.java   |   48 +
 .../ObjectSpecificationPostProcessor.java          |   41 +
 .../ObjectSpecificationPostProcessorAbstract.java  |   52 +
 .../all/DescribedAsFromTypePostProcessor.java      |   92 +
 .../i18n/SynthesizeObjectNamingPostProcessor.java  |   98 +
 .../all/i18n/TranslationPostProcessor.java         |  110 +
 .../authorization/AuthorizationFacet.java          |   84 +
 .../authorization/AuthorizationFacetAbstract.java  |   91 +
 .../authorization/AuthorizationFacetImpl.java      |   29 +
 .../authorization/AuthorizationPostProcessor.java  |   63 +
 .../allbutparam/authorization/package-info.java    |   33 +
 .../TweakDomainEventsForMixinPostProcessor.java    |  171 +
 .../navigation/NavigationFacetFromHiddenType.java  |   66 +
 ...NavigationFacetFromHiddenTypePostProcessor.java |   68 +
 .../object/ProjectionFacetsPostProcessor.java      |   80 +
 ...arameterChoicesFacetFromParentedCollection.java |   64 +
 ...meterDefaultsFacetFromAssociatedCollection.java |   48 +
 .../param/ChoicesAndDefaultsPostProcessor.java     |  201 ++
 .../param/TypicalLengthFromTypePostProcessor.java  |   76 +
 .../DisabledFromImmutablePostProcessor.java        |   86 +
 .../core/metamodel/progmodel/ProgrammingModel.java |  174 +
 .../progmodel/ProgrammingModelAbstract.java        |  243 ++
 .../progmodel/ProgrammingModelInitFilter.java      |   81 +
 .../ProgrammingModelInitFilterDefault.java         |   90 +
 .../progmodel/ProgrammingModelService.java         |   32 +
 .../dflt/ProgrammingModelFacetsJava11.java         |  275 ++
 .../core/metamodel/render/ScalarRenderMode.java    |   56 +
 .../core/metamodel/services/CollectionHelper.java  |   95 +
 .../metamodel/services/ServiceInjectorDefault.java |   79 +
 .../core/metamodel/services/ServiceUtil.java       |   37 +
 .../appfeat/ApplicationFeatureDefault.java         |  160 +
 .../ApplicationFeatureRepositoryDefault.java       |  487 +++
 .../core/metamodel/services/appfeat/_Asserts.java  |   51 +
 .../classsubstitutor/ClassSubstitutor.java         |  138 +
 .../classsubstitutor/ClassSubstitutorAbstract.java |  159 +
 .../classsubstitutor/ClassSubstitutorDefault.java  |   73 +
 .../ClassSubstitutorForCollections.java            |   46 +
 .../ClassSubstitutorForDomainObjects.java          |   64 +
 .../classsubstitutor/ClassSubstitutorRegistry.java |   93 +
 .../services/command/CommandDtoFactory.java        |  117 +
 .../metamodel/services/devutils/MemberType.java    |   25 +
 .../services/events/MetamodelEventService.java     |   85 +
 ...ExceptionRecognizerForRecoverableException.java |   50 +
 .../services/grid/GridLoaderServiceDefault.java    |  231 ++
 .../services/grid/GridReaderUsingJaxb.java         |   93 +
 .../services/grid/GridServiceDefault.java          |  209 ++
 .../services/grid/GridSystemServiceAbstract.java   |  509 +++
 .../services/grid/bootstrap/GridFallbackLayout.xml |    0
 .../grid/bootstrap/GridSystemServiceBootstrap.java |  589 ++++
 .../services/grid/bootstrap/_GridModel.java        |  232 ++
 .../metamodel/services/homepage/package-info.java  |   26 +
 .../idstringifier/IdStringifierLookupService.java  |  106 +
 .../services/ixn/InteractionDtoFactory.java        |  101 +
 .../services/layout/LayoutServiceDefault.java      |  132 +
 .../metamodel/services/message/MessageBroker.java  |   41 +
 .../services/message/MessageServiceNoop.java       |   92 +
 .../services/metamodel/DomainMemberDefault.java    |  302 ++
 .../services/metamodel/DomainModelDefault.java     |   59 +
 .../services/metamodel/MetaModelAnnotator.java     |  111 +
 .../services/metamodel/MetaModelExportSupport.java |   31 +
 .../services/metamodel/MetaModelExporter.java      |  497 +++
 .../metamodel/MetaModelServiceDefault.java         |  240 ++
 .../ShadowedFactetAttributeAnnotator.java          |   98 +
 .../services/metamodel/TitleAnnotator.java         |  127 +
 .../core/metamodel/services/metamodel/_Util.java   |  154 +
 .../HasEnlistedEntityPropertyChanges.java          |   32 +
 .../objectlifecycle/ObjectLifecyclePublisher.java  |  126 +
 .../services/objectlifecycle/PreAndPostValue.java  |   95 +
 .../objectlifecycle/PropertyChangeRecord.java      |  144 +
 .../objectlifecycle/PropertyChangeRecordId.java    |   63 +
 .../objectlifecycle/PropertyValuePlaceholder.java  |   38 +
 .../services/publishing/CommandPublisher.java      |   38 +
 .../services/publishing/ExecutionPublisher.java    |   61 +
 .../services/registry/ServiceRegistryDefault.java  |  103 +
 .../services/registry/SpringContextProvider.java   |   23 +
 .../services/schema/SchemaValueMarshaller.java     |  129 +
 .../schema/SchemaValueMarshallerAbstract.java      |  364 +++
 .../tablecol/TableColumnOrderServiceDefault.java   |   73 +
 .../TableColumnOrderServiceUsingTxtFile.java       |  187 ++
 .../services/title/TitleServiceDefault.java        |   97 +
 .../title/TitlesAndTranslationsValidator.java      |  187 ++
 .../causeway/core/metamodel/spec/ActionScope.java  |   49 +
 .../causeway/core/metamodel/spec/Described.java    |   36 +
 .../metamodel/spec/HasObjectSpecification.java     |   60 +
 .../causeway/core/metamodel/spec/Hierarchical.java |   73 +
 .../spec/ObjectInstantiationException.java         |   40 +
 .../core/metamodel/spec/ObjectSpecification.java   |  649 ++++
 .../spec/ObjectSpecificationException.java         |   35 +
 .../core/metamodel/spec/Specification.java         |   43 +
 .../core/metamodel/spec/TypeOfAnyCardinality.java  |  185 ++
 .../core/metamodel/spec/feature/CurrentHolder.java |   45 +
 .../metamodel/spec/feature/HasObjectFeature.java   |   26 +
 .../core/metamodel/spec/feature/MixedIn.java       |   60 +
 .../core/metamodel/spec/feature/MixedInMember.java |   37 +
 .../spec/feature/MutableCurrentHolder.java         |   67 +
 .../core/metamodel/spec/feature/ObjectAction.java  |  537 ++++
 .../spec/feature/ObjectActionContainer.java        |  161 +
 .../spec/feature/ObjectActionParameter.java        |  264 ++
 .../metamodel/spec/feature/ObjectAssociation.java  |  201 ++
 .../spec/feature/ObjectAssociationContainer.java   |  149 +
 .../core/metamodel/spec/feature/ObjectFeature.java |  174 +
 .../core/metamodel/spec/feature/ObjectMember.java  |  334 ++
 .../spec/feature/OneToManyActionParameter.java     |   27 +
 .../spec/feature/OneToManyAssociation.java         |   88 +
 .../metamodel/spec/feature/OneToManyFeature.java   |   49 +
 .../spec/feature/OneToOneActionParameter.java      |   27 +
 .../spec/feature/OneToOneAssociation.java          |   84 +
 .../metamodel/spec/feature/OneToOneFeature.java    |   27 +
 .../spec/feature/memento/ActionMemento.java        |   83 +
 .../feature/memento/ActionParameterMemento.java    |   90 +
 .../spec/feature/memento/CollectionMemento.java    |   82 +
 .../spec/feature/memento/ObjectMemberMemento.java  |   83 +
 .../spec/feature/memento/PropertyMemento.java      |   82 +
 .../metamodel/specloader/LogicalTypeResolver.java  |   69 +
 .../specloader/LogicalTypeResolverDefault.java     |  107 +
 .../specloader/ProgrammingModelServiceDefault.java |  100 +
 .../metamodel/specloader/SpecificationCache.java   |   45 +
 .../specloader/SpecificationCacheDefault.java      |  122 +
 .../metamodel/specloader/SpecificationLoader.java  |  270 ++
 .../specloader/SpecificationLoaderDefault.java     |  690 ++++
 .../causeway/core/metamodel/specloader/_Util.java  |   81 +
 .../specloader/facetprocessor/FacetProcessor.java  |  451 +++
 .../core/metamodel/specloader/package-info.java    |   43 +
 .../specloader/postprocessor/PostProcessor.java    |  104 +
 .../specloader/specimpl/FacetedMethodsBuilder.java |  509 +++
 .../specloader/specimpl/IntrospectionState.java    |   47 +
 .../specloader/specimpl/MemberSortingUtils.java    |   88 +
 .../specloader/specimpl/ObjectActionDefault.java   |  540 ++++
 .../specloader/specimpl/ObjectActionMixedIn.java   |  180 ++
 .../specimpl/ObjectActionParameterAbstract.java    |  385 +++
 .../specimpl/ObjectAssociationAbstract.java        |   90 +
 .../specloader/specimpl/ObjectMemberAbstract.java  |  337 ++
 .../specloader/specimpl/ObjectMemberContainer.java |  159 +
 .../specimpl/ObjectSpecificationAbstract.java      |  900 ++++++
 .../specimpl/OneToManyActionParameterDefault.java  |   53 +
 .../specimpl/OneToManyAssociationDefault.java      |  199 ++
 .../specimpl/OneToManyAssociationMixedIn.java      |  186 ++
 .../specimpl/OneToOneActionParameterDefault.java   |   37 +
 .../specimpl/OneToOneAssociationDefault.java       |  346 ++
 .../specimpl/OneToOneAssociationMixedIn.java       |  169 +
 .../specloader/specimpl/_MixedInMemberFactory.java |   56 +
 .../specimpl/_MixedInMemberNamingStrategy.java     |   83 +
 .../specloader/specimpl/_SpecPredicates.java       |   72 +
 .../specimpl/dflt/ObjectSpecificationDefault.java  |  380 +++
 .../specimpl/dflt/_PropertiesAsColumns.java        |  206 ++
 .../specloader/typeextract/TypeExtractor.java      |  132 +
 .../validator/MetaModelInvalidException.java       |   34 +
 .../specloader/validator/MetaModelValidator.java   |   25 +
 .../validator/MetaModelValidatorAbstract.java      |   44 +
 ...ModelValidatorForAmbiguousMixinAnnotations.java |   45 +
 ...etaModelValidatorForConflictingOptionality.java |   85 +
 .../validator/MetaModelVisitingValidator.java      |   38 +
 .../MetaModelVisitingValidatorAbstract.java        |   45 +
 .../specloader/validator/ValidationFailure.java    |  113 +
 .../specloader/validator/ValidationFailures.java   |  116 +
 .../core/metamodel/util/DeweyOrderComparator.java  |   36 +
 .../causeway/core/metamodel/util/EventUtil.java    |   42 +
 .../causeway/core/metamodel/util/Facets.java       |  456 +++
 .../core/metamodel/util/pchain/ParentChain.java    |   79 +
 .../metamodel/util/pchain/ParentChainDefault.java  |   42 +
 .../core/metamodel/util/snapshot/Helper.java       |   90 +
 .../core/metamodel/util/snapshot/IsisSchema.java   |  179 ++
 .../core/metamodel/util/snapshot/Place.java        |   64 +
 .../core/metamodel/util/snapshot/XmlSchema.java    |  648 ++++
 .../core/metamodel/util/snapshot/XmlSnapshot.java  |  850 +++++
 .../core/metamodel/util/snapshot/XsMetaModel.java  |  336 ++
 .../ApplicationFeatureIdValueSemantics.java        |  109 +
 .../valuesemantics/BigDecimalValueSemantics.java   |  172 +
 .../valuesemantics/BigIntegerValueSemantics.java   |  131 +
 .../valuesemantics/BlobValueSemantics.java         |  112 +
 .../valuesemantics/BookmarkValueSemantics.java     |  136 +
 .../valuesemantics/BooleanValueSemantics.java      |  138 +
 .../BufferedImageValueSemantics.java               |  162 +
 .../valuesemantics/ByteValueSemantics.java         |  155 +
 .../valuesemantics/ChangesDtoValueSemantics.java   |   61 +
 .../valuesemantics/CharacterValueSemantics.java    |  171 +
 .../valuesemantics/ClobValueSemantics.java         |  110 +
 .../valuesemantics/CommandDtoValueSemantics.java   |   61 +
 .../valuesemantics/DoubleValueSemantics.java       |  126 +
 .../valuesemantics/EnumValueSemanticsAbstract.java |  227 ++
 .../valuesemantics/FloatValueSemantics.java        |  126 +
 .../IdStringifierForSerializable.java              |  116 +
 .../valuesemantics/ImageValueSemantics.java        |   37 +
 .../valuesemantics/IntValueSemantics.java          |  153 +
 .../InteractionDtoValueSemantics.java              |   61 +
 .../LocalResourcePathValueSemantics.java           |  130 +
 .../valuesemantics/LocaleValueSemantics.java       |  149 +
 .../valuesemantics/LongValueSemantics.java         |  153 +
 .../valuesemantics/MarkupValueSemantics.java       |  116 +
 .../valuesemantics/OidDtoValueSemantics.java       |   69 +
 .../valuesemantics/PasswordValueSemantics.java     |  107 +
 .../valuesemantics/ShortValueSemantics.java        |  155 +
 .../valuesemantics/StringValueSemantics.java       |  129 +
 .../valuesemantics/TreeNodeValueSemantics.java     |  136 +
 .../valuesemantics/URLValueSemantics.java          |  135 +
 .../valuesemantics/UUIDValueSemantics.java         |  129 +
 .../valuesemantics/XmlValueSemanticsAbstract.java  |  109 +
 .../valuesemantics/temporal/BadgeRenderer.java     |   55 +
 .../temporal/LocalDateTimeValueSemantics.java      |   72 +
 .../temporal/LocalDateValueSemantics.java          |   72 +
 .../temporal/LocalTimeValueSemantics.java          |   70 +
 .../temporal/OffsetDateTimeValueSemantics.java     |   70 +
 .../temporal/OffsetTimeValueSemantics.java         |   70 +
 .../valuesemantics/temporal/TemporalAdjust.java    |  191 ++
 .../temporal/TemporalValueSemanticsProvider.java   |  417 +++
 .../temporal/ZonedDateTimeValueSemantics.java      |   70 +
 .../temporal/legacy/JavaSqlDateValueSemantics.java |   78 +
 .../legacy/JavaSqlTimeStampValueSemantics.java     |   72 +
 .../temporal/legacy/JavaSqlTimeValueSemantics.java |   76 +
 .../legacy/JavaUtilDateValueSemantics.java         |   83 +
 .../valuetypes/TemporalSemanticsAdapter.java       |   32 +
 .../valuetypes/ValueSemanticsAdapter.java          |  157 +
 .../valuetypes/ValueSemanticsResolverDefault.java  |  120 +
 .../core/metamodel/IsisModuleCoreMetamodel.java    |  249 --
 .../_testing/FactoryService_forTesting.java        |   82 -
 .../_testing/MetaModelContext_forTesting.java      |  583 ----
 .../_testing/MethodRemover_forTesting.java         |   87 -
 .../_testing/ServiceInjector_forTesting.java       |   64 -
 .../_testing/ServiceRegistry_forTesting.java       |  167 -
 .../_testing/TranslationService_forTesting.java    |   42 -
 .../_testing/WrapperFactory_forTesting.java        |   97 -
 .../_testing/_InjectorMethodEvaluator.java         |   36 -
 .../metamodel/_testing/_ServiceInjectorLegacy.java |  316 --
 .../isis/core/metamodel/_testing/_TestDummies.java |   51 -
 .../core/metamodel/commons/ArrayExtensions.java    |   68 -
 .../isis/core/metamodel/commons/CanBeVoid.java     |   24 -
 .../core/metamodel/commons/CanonicalInvoker.java   |  207 --
 .../core/metamodel/commons/ClassExtensions.java    |  197 --
 .../core/metamodel/commons/ClassFunctions.java     |   46 -
 .../core/metamodel/commons/ClassPredicates.java    |   37 -
 .../isis/core/metamodel/commons/ClassUtil.java     |  175 -
 .../core/metamodel/commons/DateExtensions.java     |   34 -
 .../metamodel/commons/InputStreamExtensions.java   |   68 -
 .../core/metamodel/commons/ListExtensions.java     |  114 -
 .../isis/core/metamodel/commons/LocaleUtil.java    |   39 -
 .../isis/core/metamodel/commons/MapUtil.java       |   47 -
 .../isis/core/metamodel/commons/MethodUtil.java    |  208 --
 .../core/metamodel/commons/ObjectExtensions.java   |   81 -
 .../core/metamodel/commons/ParameterAdapter.java   |   91 -
 .../isis/core/metamodel/commons/ResourceUtil.java  |   63 -
 .../metamodel/commons/ScalarRepresentation.java    |   52 -
 .../core/metamodel/commons/StringExtensions.java   |  352 --
 .../metamodel/commons/ThrowableExtensions.java     |   57 -
 .../isis/core/metamodel/commons/ToString.java      |  164 -
 .../isis/core/metamodel/commons/package-info.java  |   27 -
 .../apache/isis/core/metamodel/consent/Allow.java  |   38 -
 .../isis/core/metamodel/consent/Consent.java       |   72 -
 .../core/metamodel/consent/ConsentAbstract.java    |  156 -
 .../core/metamodel/consent/InteractionAdvisor.java |   70 -
 .../metamodel/consent/InteractionContextType.java  |  134 -
 .../metamodel/consent/InteractionInitiatedBy.java  |   60 -
 .../core/metamodel/consent/InteractionResult.java  |  153 -
 .../metamodel/consent/InteractionResultSet.java    |  102 -
 .../apache/isis/core/metamodel/consent/Veto.java   |   47 -
 .../metamodel/context/HasMetaModelContext.java     |  206 --
 .../core/metamodel/context/MetaModelContext.java   |   39 -
 .../context/MetaModelContext_usingSpring.java      |  213 --
 .../core/metamodel/context/MetaModelContexts.java  |   45 -
 .../metamodel/execution/InteractionInternal.java   |  155 -
 .../metamodel/execution/MemberExecutorService.java |  103 -
 .../apache/isis/core/metamodel/facetapi/Facet.java |  200 --
 .../core/metamodel/facetapi/FacetAbstract.java     |  114 -
 .../isis/core/metamodel/facetapi/FacetHolder.java  |  159 -
 .../metamodel/facetapi/FacetHolderAbstract.java    |  135 -
 .../metamodel/facetapi/FacetHolderLayered.java     |  184 --
 .../core/metamodel/facetapi/FacetHolderSimple.java |   38 -
 .../isis/core/metamodel/facetapi/FacetRanking.java |  289 --
 .../isis/core/metamodel/facetapi/FacetUtil.java    |  164 -
 .../metamodel/facetapi/FacetWithAttributes.java    |   32 -
 .../isis/core/metamodel/facetapi/FeatureType.java  |  160 -
 .../core/metamodel/facetapi/HasFacetHolder.java    |   81 -
 .../metamodel/facetapi/HasSemanticEquality.java    |   35 -
 .../facetapi/HasSemanticEqualityByClass.java       |   31 -
 .../core/metamodel/facetapi/MetaModelRefiner.java  |   33 -
 .../core/metamodel/facetapi/MethodRemover.java     |   91 -
 .../isis/core/metamodel/facets/ActionSupport.java  |  175 -
 .../core/metamodel/facets/DomainEventHelper.java   |  430 ---
 .../isis/core/metamodel/facets/Evaluators.java     |  219 --
 .../isis/core/metamodel/facets/FacetFactory.java   |  405 ---
 .../metamodel/facets/FacetFactoryAbstract.java     |   91 -
 .../isis/core/metamodel/facets/FacetedMethod.java  |  240 --
 .../metamodel/facets/FacetedMethodParameter.java   |   65 -
 .../core/metamodel/facets/HasImperativeAspect.java |   40 -
 .../facets/HasPostConstructMethodCache.java        |   58 -
 .../core/metamodel/facets/ImperativeAspect.java    |   80 -
 .../core/metamodel/facets/ImperativeFacet.java     |  130 -
 .../metamodel/facets/ObjectTypeFacetFactory.java   |   50 -
 .../core/metamodel/facets/ParameterSupport.java    |  254 --
 ...ropertyOrCollectionIdentifyingFacetFactory.java |   82 -
 ...rCollectionIdentifyingFacetFactoryAbstract.java |   45 -
 .../metamodel/facets/SingleClassValueFacet.java    |   34 -
 .../facets/SingleClassValueFacetAbstract.java      |   71 -
 .../core/metamodel/facets/SingleIntValueFacet.java |   26 -
 .../facets/SingleIntValueFacetAbstract.java        |   83 -
 .../metamodel/facets/SingleStringValueFacet.java   |   22 -
 .../facets/SingleStringValueFacetAbstract.java     |   66 -
 .../core/metamodel/facets/SingleValueFacet.java    |   27 -
 .../metamodel/facets/SingleValueFacetAbstract.java |   48 -
 .../isis/core/metamodel/facets/TypedHolder.java    |   39 -
 .../core/metamodel/facets/TypedHolderAbstract.java |   57 -
 .../core/metamodel/facets/WhereValueFacet.java     |   52 -
 .../metamodel/facets/WhereValueFacetAbstract.java  |   66 -
 .../facets/actcoll/typeof/TypeOfFacet.java         |  101 -
 .../facets/actcoll/typeof/TypeOfFacetAbstract.java |   87 -
 .../actcoll/typeof/TypeOfFacetFromFeature.java     |   31 -
 .../facets/actcoll/typeof/TypeOfFacetFromType.java |   31 -
 .../action/ActionAnnotationFacetFactory.java       |  291 --
 ...reteTypeToBeIncludedWithMetamodelValidator.java |   71 -
 ...nChoicesForCollectionParameterFacetFactory.java |  158 -
 .../actions/action/ActionOverloadingValidator.java |   80 -
 .../action/choicesfrom/ChoicesFromFacet.java       |   29 -
 .../choicesfrom/ChoicesFromFacetAbstract.java      |   43 -
 .../ChoicesFromFacetForActionAnnotation.java       |   46 -
 .../action/explicit/ActionExplicitFacet.java       |   28 -
 .../explicit/ActionExplicitFacetAbstract.java      |   31 -
 .../ActionExplicitFacetForActionAnnotation.java    |   40 -
 .../hidden/HiddenFacetForActionAnnotation.java     |   54 -
 .../action/invocation/ActionDomainEventFacet.java  |   33 -
 .../invocation/ActionDomainEventFacetAbstract.java |  148 -
 .../invocation/ActionDomainEventFacetDefault.java  |   32 -
 .../ActionDomainEventFacetForActionAnnotation.java |   31 -
 .../action/invocation/ActionInvocationFacet.java   |   49 -
 .../invocation/ActionInvocationFacetAbstract.java  |   37 -
 ...ctionInvocationFacetForDomainEventAbstract.java |  248 --
 ...ionFacetForDomainEventFromActionAnnotation.java |   39 -
 ...onInvocationFacetForDomainEventFromDefault.java |   39 -
 .../actions/action/invocation/IdentifierUtil.java  |  157 -
 .../PrototypeFacetForActionAnnotation.java         |   49 -
 ...ctionSemanticsFacetFallbackToNonIdempotent.java |   31 -
 .../ActionSemanticsFacetForActionAnnotation.java   |   48 -
 .../typeof/TypeOfFacetForActionAnnotation.java     |   55 -
 .../actions/contributing/ContributingFacet.java    |   82 -
 .../contributing/ContributingFacetAbstract.java    |   55 -
 .../ContributingFacetFromMixinFacetFactory.java    |   73 -
 .../FileAcceptFacetForActionAnnotation.java        |   46 -
 .../facets/actions/homepage/HomePageFacet.java     |   33 -
 .../actions/homepage/HomePageFacetAbstract.java    |   35 -
 .../facets/actions/homepage/HomePageFacetImpl.java |   29 -
 .../annotation/HomePageFacetAnnotation.java        |   30 -
 .../annotation/HomePageFacetAnnotationFactory.java |  137 -
 .../actions/layout/ActionLayoutFacetFactory.java   |  114 -
 ...tionPositionFacetForActionLayoutAnnotation.java |   44 -
 .../ActionPositionFacetForActionLayoutXml.java     |   51 -
 ...okmarkPolicyFacetForActionLayoutAnnotation.java |   56 -
 .../BookmarkPolicyFacetForActionLayoutXml.java     |   54 -
 .../CssClassFaFacetForActionLayoutAnnotation.java  |   59 -
 .../layout/CssClassFaFacetForActionLayoutXml.java  |   56 -
 .../layout/CssClassFaFacetForMenuBarXml.java       |   55 -
 .../CssClassFacetForActionLayoutAnnotation.java    |   45 -
 .../layout/CssClassFacetForActionLayoutXml.java    |   53 -
 .../actions/layout/CssClassFacetForMenuBarXml.java |   48 -
 .../HiddenFacetForActionLayoutAnnotation.java      |   53 -
 .../layout/HiddenFacetForActionLayoutXml.java      |   63 -
 ...berDescribedFacetForActionLayoutAnnotation.java |   49 -
 .../MemberDescribedFacetForActionLayoutXml.java    |   53 -
 .../layout/MemberDescribedFacetForMenuBarXml.java  |   48 -
 .../layout/MemberNamedFacetForActionLayoutXml.java |   53 -
 .../layout/MemberNamedFacetForMenuBarXml.java      |   48 -
 .../NamedFacetForActionLayoutAnnotation.java       |   46 -
 .../PromptStyleFacetForActionLayoutAnnotation.java |  105 -
 .../layout/PromptStyleFacetForActionLayoutXml.java |   68 -
 .../RedirectFacetFromActionLayoutAnnotation.java   |   46 -
 .../layout/RedirectFacetFromActionLayoutXml.java   |   54 -
 .../notinservicemenu/NotInServiceMenuFacet.java    |   36 -
 .../NotInServiceMenuFacetAbstract.java             |   39 -
 ...otInServiceMenuFacetFromDomainServiceFacet.java |   55 -
 ...viceMenuFacetFromDomainServiceFacetFactory.java |   65 -
 .../actions/position/ActionPositionFacet.java      |   43 -
 .../position/ActionPositionFacetAbstract.java      |   62 -
 .../position/ActionPositionFacetFallback.java      |   30 -
 .../facets/actions/prototype/PrototypeFacet.java   |   29 -
 .../actions/prototype/PrototypeFacetAbstract.java  |   57 -
 .../facets/actions/redirect/RedirectFacet.java     |   32 -
 .../actions/redirect/RedirectFacetAbstract.java    |   64 -
 .../actions/redirect/RedirectFacetFallback.java    |   30 -
 .../actions/semantics/ActionSemanticsFacet.java    |   32 -
 .../semantics/ActionSemanticsFacetAbstract.java    |   38 -
 .../validate/ActionParameterValidationFacet.java   |   45 -
 .../ActionParameterValidationFacetAbstract.java    |   47 -
 .../actions/validate/ActionValidationFacet.java    |   47 -
 .../validate/ActionValidationFacetAbstract.java    |   47 -
 .../ActionParameterValidationFacetViaMethod.java   |   79 -
 .../method/ActionValidationFacetViaMethod.java     |   87 -
 .../ActionValidationFacetViaMethodFactory.java     |   69 -
 .../facets/all/described/MemberDescribedFacet.java |   37 -
 ...erDescribedFacetWithImperativeTextAbstract.java |   58 -
 ...MemberDescribedFacetWithStaticTextAbstract.java |   66 -
 .../facets/all/described/ObjectDescribedFacet.java |   29 -
 .../described/ObjectDescribedFacetAbstract.java    |   45 -
 .../facets/all/described/ParamDescribedFacet.java  |   32 -
 .../all/described/ParamDescribedFacetAbstract.java |   58 -
 .../core/metamodel/facets/all/help/HelpFacet.java  |   28 -
 .../facets/all/help/HelpFacetAbstract.java         |   41 -
 .../metamodel/facets/all/hide/HiddenFacet.java     |   61 -
 .../facets/all/i8n/HasMemoizableTranslation.java   |   25 -
 .../all/i8n/imperative/HasImperativeText.java      |   44 -
 .../imperative/HasImperativeTextFacetAbstract.java |   96 -
 .../metamodel/facets/all/i8n/noun/HasNoun.java     |   83 -
 .../facets/all/i8n/noun/HasNounFacetAbstract.java  |  114 -
 .../metamodel/facets/all/i8n/noun/NounForm.java    |   46 -
 .../metamodel/facets/all/i8n/noun/NounForms.java   |  118 -
 .../facets/all/i8n/staatic/HasStaticText.java      |   41 -
 .../i8n/staatic/HasStaticTextFacetAbstract.java    |   97 -
 .../facets/all/named/MemberNamedFacet.java         |   37 -
 .../named/MemberNamedFacetForStaticMemberName.java |   39 -
 ...MemberNamedFacetWithImperativeTextAbstract.java |   58 -
 .../MemberNamedFacetWithStaticTextAbstract.java    |   66 -
 .../facets/all/named/ObjectNamedFacet.java         |   29 -
 .../facets/all/named/ObjectNamedFacetAbstract.java |   57 -
 .../all/named/ObjectNamedFacetSynthesized.java     |   42 -
 .../facets/all/named/ParamNamedFacet.java          |   32 -
 .../facets/all/named/ParamNamedFacetAbstract.java  |   54 -
 .../facets/collections/CollectionFacet.java        |  196 --
 .../collections/CollectionFacetAbstract.java       |   38 -
 .../CollectionAccessorFacetViaAccessor.java        |   93 -
 .../CollectionAccessorFacetViaAccessorFactory.java |  107 -
 .../CollectionAnnotationFacetFactory.java          |  184 --
 .../collection/defaultview/DefaultViewFacet.java   |   25 -
 .../defaultview/DefaultViewFacetAbstract.java      |   42 -
 .../hidden/HiddenFacetForCollectionAnnotation.java |   53 -
 .../modify/CollectionDomainEventFacet.java         |   31 -
 .../modify/CollectionDomainEventFacetAbstract.java |   75 -
 .../modify/CollectionDomainEventFacetDefault.java  |   31 -
 ...ionDomainEventFacetForCollectionAnnotation.java |   44 -
 .../typeof/TypeOfFacetForCollectionAnnotation.java |   55 -
 .../javautilcollection/CollectionFacetFactory.java |   55 -
 .../javautilcollection/JavaArrayFacet.java         |   89 -
 .../javautilcollection/JavaCollectionFacet.java    |   80 -
 .../layout/CollectionLayoutFacetFactory.java       |   92 -
 ...CssClassFacetForCollectionLayoutAnnotation.java |   44 -
 .../CssClassFacetForCollectionLayoutXml.java       |   53 -
 .../layout/DefaultViewFacetAsConfigured.java       |   39 -
 ...aultViewFacetForCollectionLayoutAnnotation.java |   47 -
 .../DefaultViewFacetForCollectionLayoutXml.java    |   53 -
 .../HiddenFacetForCollectionLayoutAnnotation.java  |   56 -
 .../layout/HiddenFacetForCollectionLayoutXml.java  |   63 -
 ...escribedFacetForCollectionLayoutAnnotation.java |   49 -
 ...MemberDescribedFacetForCollectionLayoutXml.java |   55 -
 ...berNamedFacetForCollectionLayoutAnnotation.java |   49 -
 .../MemberNamedFacetForCollectionLayoutXml.java    |   56 -
 .../PagedFacetForCollectionLayoutAnnotation.java   |   52 -
 .../layout/PagedFacetForCollectionLayoutXml.java   |   53 -
 ...PagedFacetOverriddenByDataTablesDecoration.java |   34 -
 ...SortedByFacetForCollectionLayoutAnnotation.java |   53 -
 .../SortedByFacetForCollectionLayoutXml.java       |   64 -
 .../CollectionLayoutTableDecorationFacet.java      |   72 -
 ...llectionLayoutTableDecorationFacetAbstract.java |   39 -
 ...corationFacetForCollectionLayoutAnnotation.java |   33 -
 ...tForCollectionLayoutAnnotationAsConfigured.java |   33 -
 ...TableDecorationFacetForCollectionLayoutXml.java |   53 -
 ...ayoutTableDecorationFacetFromConfiguration.java |   33 -
 .../parented/ParentedCollectionFacetDefault.java   |   36 -
 .../ParentedFacetSinceCollectionFactory.java       |   55 -
 .../facets/collections/sortedby/SortedByFacet.java |   31 -
 .../sortedby/SortedByFacetAbstract.java            |   38 -
 .../annotation/SortedByFacetAnnotationFactory.java |   84 -
 .../facets/fallback/FallbackFacetFactory.java      |  117 -
 .../LabelAtFacetFromLayoutConfiguration.java       |   31 -
 .../facets/fallback/MaxLengthFacetUnlimited.java   |   42 -
 .../facets/fallback/MultiLineFacetNone.java        |   33 -
 .../fallback/NamedFacetFallbackFromMemberName.java |   35 -
 .../fallback/PagedFacetFromConfiguration.java      |   29 -
 .../metamodel/facets/fallback/TitleFacetNone.java  |   36 -
 .../metamodel/facets/jaxb/JaxbFacetFactory.java    |  375 ---
 .../facets/jaxb/XmlAccessorTypeFacet.java          |   30 -
 .../facets/jaxb/XmlAccessorTypeFacetAbstract.java  |   39 -
 .../facets/jaxb/XmlAccessorTypeFacetDefault.java   |   32 -
 .../facets/jaxb/XmlJavaTypeAdapterFacet.java       |   28 -
 .../jaxb/XmlJavaTypeAdapterFacetAbstract.java      |   37 -
 .../jaxb/XmlJavaTypeAdapterFacetDefault.java       |   30 -
 .../metamodel/facets/jaxb/XmlTransientFacet.java   |   28 -
 .../facets/jaxb/XmlTransientFacetAbstract.java     |   37 -
 .../facets/jaxb/XmlTransientFacetDefault.java      |   29 -
 .../facets/members/cssclass/CssClassFacet.java     |   38 -
 .../members/cssclass/CssClassFacetAbstract.java    |   40 -
 .../members/cssclass/CssClassFacetSimple.java      |   62 -
 .../CssClassFacetOnActionFromConfiguredRegex.java  |   29 -
 ...assFacetOnActionFromConfiguredRegexFactory.java |   83 -
 .../facets/members/cssclassfa/CssClassFaFacet.java |   36 -
 .../members/cssclassfa/CssClassFaFactory.java      |   77 -
 .../cssclassfa/CssClassFaImperativeFacet.java      |   31 -
 .../CssClassFaImperativeFacetAbstract.java         |   59 -
 .../members/cssclassfa/CssClassFaStaticFacet.java  |   24 -
 .../cssclassfa/CssClassFaStaticFacetAbstract.java  |  161 -
 ...CssClassFaFacetOnMemberFromConfiguredRegex.java |  175 -
 .../CssClassFaFacetOnMemberPostProcessor.java      |   56 -
 .../annotprop/MemberDescribedFacetFromType.java    |   52 -
 .../DescribedAsFacetForMemberViaMethodFactory.java |   52 -
 .../method/MemberDescribedFacetViaMethod.java      |   37 -
 .../facets/members/disabled/DisabledFacet.java     |   76 -
 .../members/disabled/DisabledFacetAbstract.java    |  100 -
 .../disabled/DisabledFacetForContributee.java      |   30 -
 .../disabled/method/DisableForContextFacet.java    |   36 -
 .../method/DisableForContextFacetAbstract.java     |   39 -
 .../method/DisableForContextFacetNone.java         |   42 -
 .../method/DisableForContextFacetViaMethod.java    |   84 -
 .../DisableForContextFacetViaMethodFactory.java    |   53 -
 .../facets/members/hidden/HiddenFacetAbstract.java |   75 -
 .../HiddenFacetAbstractAlwaysEverywhere.java       |   40 -
 .../members/hidden/HiddenFacetAbstractImpl.java    |   42 -
 .../HiddenFacetFromLayoutPropertiesAbstract.java   |   52 -
 .../members/hidden/method/HideForContextFacet.java |   36 -
 .../hidden/method/HideForContextFacetAbstract.java |   39 -
 .../hidden/method/HideForContextFacetNone.java     |   39 -
 .../method/HideForContextFacetViaMethod.java       |   69 -
 .../HideForContextFacetViaMethodFactory.java       |   53 -
 .../members/layout/group/GroupIdAndName.java       |  190 --
 .../members/layout/group/LayoutGroupFacet.java     |   79 -
 .../layout/group/LayoutGroupFacetAbstract.java     |   62 -
 .../group/LayoutGroupFacetForActionAnnotation.java |   43 -
 .../layout/group/LayoutGroupFacetForLayoutXml.java |   68 -
 ...LayoutGroupFacetFromActionLayoutAnnotation.java |   42 -
 ...youtGroupFacetFromPropertyLayoutAnnotation.java |   42 -
 .../members/layout/order/LayoutOrderFacet.java     |   50 -
 .../layout/order/LayoutOrderFacetAbstract.java     |   46 -
 .../layout/order/LayoutOrderFacetForLayoutXml.java |   41 -
 ...LayoutOrderFacetFromActionLayoutAnnotation.java |   42 -
 ...utOrderFacetFromCollectionLayoutAnnotation.java |   42 -
 ...youtOrderFacetFromPropertyLayoutAnnotation.java |   42 -
 .../named/method/MemberNamedFacetViaMethod.java    |   37 -
 .../NamedFacetForMemberViaMethodFactory.java       |   53 -
 .../facets/members/navigation/NavigationFacet.java |   32 -
 .../publish/command/CommandPublishingFacet.java    |   69 -
 .../command/CommandPublishingFacetAbstract.java    |   90 -
 .../CommandPublishingFacetForActionAnnotation.java |  123 -
 ...ishingFacetForActionAnnotationAsConfigured.java |   33 -
 ...ommandPublishingFacetForPropertyAnnotation.java |   98 -
 ...hingFacetForPropertyAnnotationAsConfigured.java |   32 -
 .../CommandPublishingFacetFromConfiguration.java   |   38 -
 ...onPublishingActionFacetForActionAnnotation.java |  107 -
 ...ActionFacetForActionAnnotationAsConfigured.java |   31 -
 ...tionPublishingActionFacetFromConfiguration.java |   31 -
 .../execution/ExecutionPublishingFacet.java        |   49 -
 .../ExecutionPublishingFacetAbstract.java          |   36 -
 ...blishingPropertyFacetForPropertyAnnotation.java |   87 -
 ...ertyFacetForPropertyAnnotationAsConfigured.java |   29 -
 ...onPublishingPropertyFacetFromConfiguration.java |   30 -
 ...mberAndPropertySupportFacetFactoryAbstract.java |   48 -
 .../support/MemberSupportFacetFactoryAbstract.java |   85 -
 .../ViewModelSemanticCheckingFacetFactory.java     |   77 -
 .../object/autocomplete/AutoCompleteFacet.java     |   33 -
 .../autocomplete/AutoCompleteFacetAbstract.java    |  113 -
 .../object/bookmarkpolicy/BookmarkPolicyFacet.java |   37 -
 .../BookmarkPolicyFacetAbstract.java               |   63 -
 .../BookmarkPolicyFacetFallback.java               |   33 -
 .../BookmarkPolicyFacetFallbackFactory.java        |  103 -
 .../facets/object/callbacks/CallbackFacet.java     |   54 -
 .../object/callbacks/CallbackFacetAbstract.java    |   64 -
 .../object/callbacks/CallbackFacetFactory.java     |   86 -
 .../object/callbacks/CreatedCallbackFacet.java     |   35 -
 .../callbacks/CreatedCallbackFacetAbstract.java    |   41 -
 .../callbacks/CreatedCallbackFacetViaMethod.java   |   37 -
 .../callbacks/CreatedLifecycleEventFacet.java      |   29 -
 ...fecycleEventFacetForDomainObjectAnnotation.java |   45 -
 .../object/callbacks/LifecycleEventFacet.java      |   27 -
 .../object/callbacks/LoadedCallbackFacet.java      |   36 -
 .../callbacks/LoadedCallbackFacetAbstract.java     |   41 -
 .../callbacks/LoadedCallbackFacetViaMethod.java    |   35 -
 .../callbacks/LoadedLifecycleEventFacet.java       |   29 -
 ...fecycleEventFacetForDomainObjectAnnotation.java |   43 -
 .../object/callbacks/PersistedCallbackFacet.java   |   35 -
 .../callbacks/PersistedCallbackFacetAbstract.java  |   41 -
 .../callbacks/PersistedCallbackFacetViaMethod.java |   35 -
 .../callbacks/PersistedLifecycleEventFacet.java    |   29 -
 ...fecycleEventFacetForDomainObjectAnnotation.java |   43 -
 .../object/callbacks/PersistingCallbackFacet.java  |   36 -
 .../callbacks/PersistingCallbackFacetAbstract.java |   41 -
 .../PersistingCallbackFacetViaMethod.java          |   35 -
 .../callbacks/PersistingLifecycleEventFacet.java   |   29 -
 ...fecycleEventFacetForDomainObjectAnnotation.java |   44 -
 .../object/callbacks/RemovingCallbackFacet.java    |   31 -
 .../callbacks/RemovingCallbackFacetAbstract.java   |   41 -
 .../callbacks/RemovingCallbackFacetViaMethod.java  |   35 -
 .../callbacks/RemovingLifecycleEventFacet.java     |   29 -
 ...fecycleEventFacetForDomainObjectAnnotation.java |   46 -
 .../object/callbacks/UpdatedCallbackFacet.java     |   36 -
 .../callbacks/UpdatedCallbackFacetAbstract.java    |   41 -
 .../callbacks/UpdatedCallbackFacetViaMethod.java   |   35 -
 .../callbacks/UpdatedLifecycleEventFacet.java      |   29 -
 ...fecycleEventFacetForDomainObjectAnnotation.java |   46 -
 .../object/callbacks/UpdatingCallbackFacet.java    |   36 -
 .../callbacks/UpdatingCallbackFacetAbstract.java   |   41 -
 .../callbacks/UpdatingCallbackFacetViaMethod.java  |   35 -
 .../callbacks/UpdatingLifecycleEventFacet.java     |   29 -
 ...fecycleEventFacetForDomainObjectAnnotation.java |   46 -
 .../choices/ChoicesFacetFromBoundedAbstract.java   |  122 -
 .../object/choices/enums/ChoicesFacetFromEnum.java |   66 -
 .../choices/enums/ChoicesFacetFromEnumFactory.java |   47 -
 .../method/CssClassFacetViaCssClassMethod.java     |   72 -
 ...ssClassFaFacetForDomainObjectLayoutFactory.java |   53 -
 .../facets/object/defaults/DefaultedFacet.java     |   43 -
 .../object/defaults/DefaultedFacetAbstract.java    |   65 -
 .../defaults/DefaultedFacetFromValueFacet.java     |   44 -
 .../object/disabled/DisabledObjectFacet.java       |   54 -
 .../disabled/DisabledObjectFacetAbstract.java      |   49 -
 .../method/DisabledObjectFacetViaMethod.java       |   93 -
 .../AliasedFacetForDomainObjectAnnotation.java     |   60 -
 .../DomainObjectAnnotationFacetFactory.java        |  652 ----
 ...AutoCompleteFacetForDomainObjectAnnotation.java |   45 -
 .../ChoicesFacetForDomainObjectAnnotation.java     |   47 -
 ...EventDefaultFacetForDomainObjectAnnotation.java |   51 -
 ...EventDefaultFacetForDomainObjectAnnotation.java |   50 -
 ...EventDefaultFacetForDomainObjectAnnotation.java |   50 -
 ...itingEnabledFacetForDomainObjectAnnotation.java |   57 -
 .../ImmutableFacetForDomainObjectAnnotation.java   |   93 -
 ...FacetForDomainObjectAnnotationAsConfigured.java |   38 -
 .../editing/ImmutableFacetFromConfiguration.java   |   50 -
 ...gePublishingFacetForDomainObjectAnnotation.java |   73 -
 ...FacetForDomainObjectAnnotationAsConfigured.java |   31 -
 ...tityChangePublishingFacetFromConfiguration.java |   38 -
 ...ectionPolicyFacetForDomainObjectAnnotation.java |   58 -
 ...PolicyFacetForDomainObjectLayoutAnnotation.java |   44 -
 ...ookmarkPolicyFacetForDomainObjectLayoutXml.java |   56 -
 ...lassFaFacetForDomainObjectLayoutAnnotation.java |   57 -
 .../CssClassFaFacetForDomainObjectLayoutXml.java   |   58 -
 ...sClassFacetForDomainObjectLayoutAnnotation.java |   56 -
 .../CssClassFacetForDomainObjectLayoutXml.java     |   53 -
 ...ObjectLayoutAnnotationUsingCssClassUiEvent.java |  124 -
 .../DomainObjectLayoutFacetFactory.java            |   97 -
 ...mainObjectLayoutAnnotationUsingIconUiEvent.java |  123 -
 ...inObjectLayoutAnnotationUsingLayoutUiEvent.java |  124 -
 ...cribedFacetForDomainObjectLayoutAnnotation.java |   46 -
 ...jectDescribedFacetForDomainObjectLayoutXml.java |   55 -
 ...tNamedFacetForDomainObjectLayoutAnnotation.java |   70 -
 .../ObjectNamedFacetForDomainObjectLayoutXml.java  |   73 -
 .../PagedFacetForDomainObjectLayoutAnnotation.java |   54 -
 ...PagedFacetOverriddenByDataTablesDecoration.java |   30 -
 ...ainObjectLayoutAnnotationUsingTitleUiEvent.java |  158 -
 .../DomainObjectLayoutTableDecorationFacet.java    |   71 -
 ...inObjectLayoutTableDecorationFacetAbstract.java |   39 -
 ...rationFacetForDomainObjectLayoutAnnotation.java |   33 -
 ...orDomainObjectLayoutAnnotationAsConfigured.java |   33 -
 ...bleDecorationFacetForDomainObjectLayoutXml.java |   61 -
 ...ayoutTableDecorationFacetFromConfiguration.java |   33 -
 .../object/domainservice/DomainServiceFacet.java   |   80 -
 .../domainservice/DomainServiceFacetAbstract.java  |   57 -
 .../AliasedFacetForDomainServiceAnnotation.java    |   60 -
 .../DomainServiceFacetAnnotationFactory.java       |   97 -
 .../DomainServiceFacetForAnnotation.java           |   33 -
 .../DomainServiceLayoutFacet.java                  |   36 -
 .../DomainServiceLayoutFacetAbstract.java          |   55 -
 .../DomainServiceLayoutFacetFactory.java           |   69 -
 ...NamedFacetForDomainServiceLayoutAnnotation.java |   55 -
 .../DomainServiceLayoutFacetAnnotation.java        |   34 -
 .../facets/object/entity/EntityFacet.java          |  175 -
 .../object/entity/_EntityFacetForTesting.java      |  109 -
 .../metamodel/facets/object/grid/GridFacet.java    |   43 -
 .../facets/object/grid/GridFacetDefault.java       |  133 -
 .../facets/object/grid/GridFacetFactory.java       |   52 -
 .../facets/object/hidden/HiddenInstanceFacet.java  |   47 -
 .../facets/object/hidden/HiddenObjectFacet.java    |   36 -
 .../object/hidden/HiddenObjectFacetAbstract.java   |   47 -
 .../facets/object/hidden/HiddenTypeFacet.java      |   23 -
 .../hidden/HiddenTypeFacetFromAuthorization.java   |   77 -
 .../HiddenTypeFacetFromAuthorizationFactory.java   |   48 -
 .../hidden/method/HiddenObjectFacetViaMethod.java  |   80 -
 .../metamodel/facets/object/icon/IconFacet.java    |   43 -
 .../facets/object/icon/IconFacetAbstract.java      |   41 -
 .../metamodel/facets/object/icon/ObjectIcon.java   |  101 -
 .../facets/object/icon/ObjectIconService.java      |   52 -
 .../icon/method/IconFacetViaIconNameMethod.java    |   72 -
 .../RemoveAnnotatedMethodsFacetFactory.java        |   72 -
 ...oveDatanucleusPersistableTypesFacetFactory.java |   73 -
 .../RemoveDnPrefixedMethodsFacetFactory.java       |   48 -
 .../javalang/IteratorFilteringFacetFactory.java    |   60 -
 .../ignore/javalang/RemoveMethodsFacetFactory.java |  146 -
 .../jdo/RemoveJdoEnhancementTypesFacetFactory.java |   73 -
 .../jdo/RemoveJdoPrefixedMethodsFacetFactory.java  |   49 -
 .../object/immutable/EditingEnabledFacet.java      |   38 -
 .../facets/object/immutable/ImmutableFacet.java    |   49 -
 .../object/immutable/ImmutableFacetAbstract.java   |   87 -
 .../CopyImmutableFacetOntoMembersFactory.java      |   53 -
 .../introspection/IntrospectionPolicyFacet.java    |   57 -
 .../IntrospectionPolicyFacetAbstract.java          |   61 -
 .../facets/object/layout/LayoutFacet.java          |   36 -
 .../facets/object/layout/LayoutFacetAbstract.java  |   42 -
 .../facets/object/layout/LayoutFacetFallback.java  |   43 -
 .../object/layout/LayoutFacetViaLayoutMethod.java  |   78 -
 .../facets/object/logicaltype/AliasedFacet.java    |   52 -
 .../object/logicaltype/AliasedFacetAbstract.java   |   63 -
 .../logicaltype/LogicalTypeMalformedValidator.java |   75 -
 .../LogicalTypeFacetFromClassNameFactory.java      |  137 -
 .../mixin/MetaModelValidatorForMixinTypes.java     |   76 -
 .../metamodel/facets/object/mixin/MixinFacet.java  |   65 -
 .../facets/object/mixin/MixinFacetAbstract.java    |  127 -
 .../mixin/MixinFacetForDomainObjectAnnotation.java |   65 -
 .../object/navparent/NavigableParentFacet.java     |   41 -
 .../navparent/NavigableParentFacetAbstract.java    |   37 -
 .../NavigableParentAnnotationFacetFactory.java     |  199 --
 .../method/NavigableParentFacetViaMethod.java      |  127 -
 .../ObjectValidPropertiesFacet.java                |   41 -
 .../ObjectValidPropertiesFacetAbstract.java        |   46 -
 .../impl/ObjectValidPropertiesFacetImpl.java       |   66 -
 .../ObjectValidPropertiesFacetImplFactory.java     |   40 -
 .../metamodel/facets/object/paged/PagedFacet.java  |   32 -
 .../facets/object/paged/PagedFacetAbstract.java    |   51 -
 .../object/parented/ParentedCollectionFacet.java   |   39 -
 .../parented/ParentedCollectionFacetAbstract.java  |   35 -
 .../facets/object/projection/ProjectionFacet.java  |   28 -
 .../object/projection/ProjectionFacetAbstract.java |   37 -
 .../ProjectionFacetFromProjectingProperty.java     |   59 -
 .../ident/CssClassFacetFromProjectionFacet.java    |   58 -
 .../ident/IconFacetFromProjectionFacet.java        |   64 -
 .../ident/TitleFacetFromProjectionFacet.java       |   57 -
 .../object/promptStyle/PromptStyleFacet.java       |   32 -
 .../promptStyle/PromptStyleFacetAbstract.java      |   41 -
 .../promptStyle/PromptStyleFacetAsConfigured.java  |   46 -
 .../entitychange/EntityChangePublishingFacet.java  |   54 -
 .../EntityChangePublishingFacetAbstract.java       |   43 -
 .../object/support/ObjectSupportFacetAbstract.java |   26 -
 .../object/support/ObjectSupportFacetFactory.java  |  149 -
 .../metamodel/facets/object/title/TitleFacet.java  |   49 -
 .../facets/object/title/TitleFacetAbstract.java    |   73 -
 .../facets/object/title/TitleRenderRequest.java    |   58 -
 .../annotation/TitleAnnotationFacetFactory.java    |  100 -
 .../annotation/TitleFacetViaTitleAnnotation.java   |  253 --
 .../methods/TitleFacetFromToStringMethod.java      |   74 -
 .../title/methods/TitleFacetViaTitleMethod.java    |  112 -
 .../title/parser/TitleFacetFromValueFacet.java     |  121 -
 .../facets/object/value/CompositeValueUpdater.java |   92 -
 .../value/CompositeValueUpdaterForParameter.java   |   62 -
 .../value/CompositeValueUpdaterForProperty.java    |   62 -
 .../value/ImmutableFacetViaValueSemantics.java     |   37 -
 .../object/value/MaxLengthFacetFromValueFacet.java |   58 -
 .../value/TypicalLengthFacetFromValueFacet.java    |   52 -
 .../metamodel/facets/object/value/ValueFacet.java  |  175 -
 .../facets/object/value/ValueFacetAbstract.java    |  420 ---
 .../facets/object/value/ValueSerializer.java       |   43 -
 .../object/value/ValueSerializerDefault.java       |   71 -
 ...ionOrAnyMatchingValueSemanticsFacetFactory.java |  159 -
 .../vsp/ValueFacetUsingSemanticsProvider.java      |   43 -
 .../value/vsp/ValueSemanticsFacetAbstract.java     |   65 -
 .../facets/object/viewmodel/ViewModelFacet.java    |   57 -
 .../object/viewmodel/ViewModelFacetAbstract.java   |  111 -
 .../object/viewmodel/ViewModelFacetFactory.java    |  124 -
 .../ViewModelFacetForDomainObjectAnnotation.java   |  185 --
 .../ViewModelFacetForSerializableInterface.java    |  100 -
 .../ViewModelFacetForViewModelInterface.java       |  114 -
 .../ViewModelFacetForXmlRootElementAnnotation.java |  105 -
 .../facets/objectvalue/choices/ChoicesFacet.java   |   35 -
 .../objectvalue/choices/ChoicesFacetAbstract.java  |   37 -
 .../daterenderedadjust/DateRenderAdjustFacet.java  |   44 -
 .../DateRenderAdjustFacetAbstract.java             |   62 -
 .../digits/MaxFractionalDigitsFacet.java           |   47 -
 .../digits/MaxFractionalDigitsFacetAbstract.java   |   91 -
 .../objectvalue/digits/MaxTotalDigitsFacet.java    |   46 -
 .../digits/MaxTotalDigitsFacetAbstract.java        |   90 -
 .../digits/MinFractionalDigitsFacet.java           |   44 -
 .../digits/MinFractionalDigitsFacetAbstract.java   |   71 -
 .../objectvalue/digits/MinIntegerDigitsFacet.java  |   43 -
 .../digits/MinIntegerDigitsFacetAbstract.java      |   71 -
 .../objectvalue/fileaccept/FileAcceptFacet.java    |   34 -
 .../fileaccept/FileAcceptFacetAbstract.java        |   36 -
 .../facets/objectvalue/labelat/LabelAtFacet.java   |   35 -
 .../objectvalue/labelat/LabelAtFacetAbstract.java  |   62 -
 .../labelat/LabelAtFacetFromMultiLineFacet.java    |   38 -
 .../objectvalue/mandatory/MandatoryFacet.java      |   84 -
 .../mandatory/MandatoryFacetAbstract.java          |  114 -
 .../mandatory/MandatoryFacetDefault.java           |   43 -
 .../facets/objectvalue/maxlen/MaxLengthFacet.java  |   40 -
 .../objectvalue/maxlen/MaxLengthFacetAbstract.java |   88 -
 .../objectvalue/multiline/MultiLineFacet.java      |   38 -
 .../multiline/MultiLineFacetAbstract.java          |   66 -
 .../MustSatisfySpecificationFacet.java             |   26 -
 .../MustSatisfySpecificationFacetAbstract.java     |  116 -
 .../mustsatisfyspec/SpecificationEvaluator.java    |   79 -
 .../facets/objectvalue/regex/RegExFacet.java       |   38 -
 .../objectvalue/regex/RegExFacetAbstract.java      |  120 -
 .../temporalformat/DateFormatStyleFacet.java       |   38 -
 .../DateFormatStyleFacetAbstract.java              |   73 -
 .../temporalformat/TimeFormatPrecisionFacet.java   |   39 -
 .../TimeFormatPrecisionFacetAbstract.java          |   73 -
 .../temporalformat/TimeFormatStyleFacet.java       |   38 -
 .../TimeFormatStyleFacetAbstract.java              |   73 -
 .../temporalformat/TimeZoneTranslationFacet.java   |   41 -
 .../TimeZoneTranslationFacetAbstract.java          |   73 -
 .../objectvalue/typicallen/TypicalLengthFacet.java |   53 -
 .../typicallen/TypicalLengthFacetAbstract.java     |   60 -
 .../ValueSemanticsSelectingFacet.java              |   36 -
 .../ValueSemanticsSelectingFacetAbstract.java      |   38 -
 .../ActionParameterAutoCompleteFacet.java          |   47 -
 .../ActionParameterAutoCompleteFacetAbstract.java  |   40 -
 .../facets/param/autocomplete/MinLengthUtil.java   |   55 -
 .../ActionParameterAutoCompleteFacetViaMethod.java |  111 -
 ...ParameterAutoCompleteFacetViaMethodFactory.java |   54 -
 .../param/choices/ActionParameterChoicesFacet.java |   42 -
 .../ActionParameterChoicesFacetAbstract.java       |   41 -
 ...ctionParameterChoicesFacetFromChoicesFacet.java |   59 -
 ...nParameterChoicesFacetFromChoicesFromFacet.java |   73 -
 .../ActionParameterChoicesFacetViaMethod.java      |   99 -
 ...ctionParameterChoicesFacetViaMethodFactory.java |   52 -
 .../defaults/ActionParameterDefaultsFacet.java     |   46 -
 .../ActionParameterDefaultsFacetAbstract.java      |   37 -
 .../ActionParameterDefaultsFacetViaMethod.java     |  103 -
 ...tionParameterDefaultsFacetViaMethodFactory.java |   51 -
 .../annotderived/ParamDescribedFacetFromType.java  |   51 -
 .../disable/ActionParameterDisabledFacet.java      |   40 -
 .../ActionParameterDisabledFacetAbstract.java      |   47 -
 .../ActionParameterDisabledFacetViaMethod.java     |   89 -
 ...tionParameterDisabledFacetViaMethodFactory.java |   54 -
 .../param/hide/ActionParameterHiddenFacet.java     |   41 -
 .../hide/ActionParameterHiddenFacetAbstract.java   |   53 -
 .../ActionParameterHiddenFacetViaMethod.java       |   96 -
 ...ActionParameterHiddenFacetViaMethodFactory.java |   55 -
 .../CssClassFacetForParameterLayoutAnnotation.java |   45 -
 .../LabelAtFacetForParameterLayoutAnnotation.java  |   45 -
 ...MultiLineFacetForParameterLayoutAnnotation.java |   44 -
 .../NamedFacetForParameterLayoutAnnotation.java    |   51 -
 ...DescribedFacetForParameterLayoutAnnotation.java |   47 -
 .../param/layout/ParameterLayoutFacetFactory.java  |   77 -
 ...calLengthFacetForParameterLayoutAnnotation.java |   47 -
 .../MandatoryFacetOnParametersDefaultFactory.java  |   58 -
 .../NamedFacetForParameterUsingReflection.java     |   37 -
 .../ParameterNameFacetFactoryUsingReflection.java  |   74 -
 .../parameter/ParameterAnnotationFacetFactory.java |  154 -
 ...ActionFacetForActionAnnotationAsConfigured.java |   33 -
 .../depdef/ParameterDependentDefaultsFacet.java    |   72 -
 .../ParameterDependentDefaultsFacetAbstract.java   |   39 -
 ...pendentDefaultsFacetForParameterAnnotation.java |   33 -
 ...terDependentDefaultsFacetFromConfiguration.java |   33 -
 .../FileAcceptFacetForParameterAnnotation.java     |   46 -
 .../MandatoryFacetForParameterAnnotation.java      |   78 -
 ...cetInvertedByNullableAnnotationOnParameter.java |   59 -
 .../MaxLengthFacetForParameterAnnotation.java      |   45 -
 ...fySpecificationFacetForParameterAnnotation.java |   58 -
 .../regex/RegExFacetForParameterAnnotation.java    |   56 -
 .../RegExFacetForPatternAnnotationOnParameter.java |   54 -
 ...ActionParameterSupportFacetFactoryAbstract.java |   95 -
 .../TypicalLengthFacetOnParameterFromType.java     |   75 -
 .../validate/ActionParameterValidationFacet.java   |   50 -
 .../ActionParameterValidationFacetAbstract.java    |   52 -
 .../ActionParameterValidationFacetViaMethod.java   |   90 -
 ...onParameterValidationFacetViaMethodFactory.java |   54 -
 .../PropertyOrCollectionAccessorFacet.java         |   52 -
 .../PropertyOrCollectionAccessorFacetAbstract.java |   55 -
 .../propcoll/memserexcl/SnapshotExcludeFacet.java  |   29 -
 .../memserexcl/SnapshotExcludeFacetAbstract.java   |   37 -
 .../accessor/PropertyAccessorFacetViaAccessor.java |   89 -
 .../PropertyAccessorFacetViaAccessorFactory.java   |  101 -
 .../autocomplete/PropertyAutoCompleteFacet.java    |   50 -
 .../PropertyAutoCompleteFacetAbstract.java         |   38 -
 .../method/PropertyAutoCompleteFacetMethod.java    |   94 -
 .../PropertyAutoCompleteFacetMethodFactory.java    |   58 -
 .../properties/businesskey/BusinessKeyFacet.java   |   35 -
 .../businesskey/BusinessKeyFacetAbstract.java      |   35 -
 .../properties/choices/PropertyChoicesFacet.java   |   50 -
 .../choices/PropertyChoicesFacetAbstract.java      |   39 -
 .../PropertyChoicesFacetFromChoicesFacet.java      |   56 -
 .../method/PropertyChoicesFacetViaMethod.java      |   81 -
 .../PropertyChoicesFacetViaMethodFactory.java      |   58 -
 .../properties/defaults/PropertyDefaultFacet.java  |   45 -
 .../defaults/PropertyDefaultFacetAbstract.java     |   39 -
 .../defaults/PropertyDefaultFacetNone.java         |   39 -
 .../PropertyDefaultFacetFromDefaultedFacet.java    |   71 -
 .../PropertyDefaultFacetFromTypeFactory.java       |   69 -
 .../method/PropertyDefaultFacetViaMethod.java      |   79 -
 .../PropertyDefaultFacetViaMethodFactory.java      |   53 -
 .../DisabledFacetOnPropertyFromImmutable.java      |   73 -
 ...isabledFacetOnPropertyFromImmutableFactory.java |   61 -
 .../DisabledFacetOnPropertyFromMissingSetter.java  |   33 -
 .../DisabledFacetOnPropertyInferredFactory.java    |   60 -
 .../MandatoryFacetOnProperyDefaultFactory.java     |   59 -
 .../properties/projection/ProjectingFacet.java     |   29 -
 .../projection/ProjectingFacetAbstract.java        |   37 -
 .../ProjectingFacetFromPropertyAnnotation.java     |   67 -
 .../property/PropertyAnnotationFacetFactory.java   |  381 ---
 .../DisabledFacetForPropertyAnnotation.java        |   64 -
 ...acetForPropertyAnnotationInvertedSemantics.java |   36 -
 .../EntityPropertyChangePublishingPolicyFacet.java |   71 -
 ...ropertyChangePublishingPolicyFacetAbstract.java |   65 -
 ...PublishingPolicyFacetForPropertyAnnotation.java |   50 -
 .../FileAcceptFacetForPropertyAnnotation.java      |   45 -
 .../hidden/HiddenFacetForPropertyAnnotation.java   |   54 -
 .../MandatoryFacetForPropertyAnnotation.java       |   89 -
 ...acetInvertedByNullableAnnotationOnProperty.java |   63 -
 .../MaxLengthFacetForPropertyAnnotation.java       |   43 -
 ...ropertyClearFacetForDomainEventFromDefault.java |   40 -
 ...rFacetForDomainEventFromPropertyAnnotation.java |   40 -
 .../property/modify/PropertyDomainEventFacet.java  |   32 -
 .../modify/PropertyDomainEventFacetAbstract.java   |  162 -
 .../modify/PropertyDomainEventFacetDefault.java    |   39 -
 ...pertyDomainEventFacetForPropertyAnnotation.java |   39 -
 ...opertySetterFacetForDomainEventFromDefault.java |   41 -
 ...rFacetForDomainEventFromPropertyAnnotation.java |   40 -
 ...tySetterOrClearFacetForDomainEventAbstract.java |  297 --
 .../facets/properties/property/modify/Utils.java   |   23 -
 ...sfySpecificationFacetForPropertyAnnotation.java |   58 -
 .../RegExFacetForPatternAnnotationOnProperty.java  |   55 -
 .../regex/RegExFacetForPropertyAnnotation.java     |   58 -
 .../SnapshotExcludeFacetForPropertyAnnotation.java |   46 -
 .../CssClassFacetForPropertyLayoutAnnotation.java  |   44 -
 .../CssClassFacetForPropertyLayoutXml.java         |   53 -
 .../HiddenFacetForPropertyLayoutAnnotation.java    |   54 -
 .../HiddenFacetForPropertyLayoutXml.java           |   63 -
 .../LabelAtFacetForPropertyLayoutAnnotation.java   |   45 -
 .../LabelAtFacetForPropertyLayoutXml.java          |   53 -
 ...rDescribedFacetForPropertyLayoutAnnotation.java |   48 -
 .../MemberDescribedFacetForPropertyLayoutXml.java  |   54 -
 .../MemberNamedFacetForPropertyLayoutXml.java      |   55 -
 .../MultiLineFacetForPropertyLayoutAnnotation.java |   43 -
 .../MultiLineFacetForPropertyLayoutXml.java        |   52 -
 .../NamedFacetForPropertyLayoutAnnotation.java     |   51 -
 ...romptStyleFacetForPropertyLayoutAnnotation.java |  114 -
 .../PromptStyleFacetForPropertyLayoutXml.java      |   68 -
 .../propertylayout/PropertyLayoutFacetFactory.java |   95 -
 .../RenderedAdjustedFacetForPropertyLayoutXml.java |   52 -
 ...icalLengthFacetForPropertyLayoutAnnotation.java |   46 -
 .../TypicalLengthFacetForPropertyLayoutXml.java    |   53 -
 ...UnchangingFacetForPropertyLayoutAnnotation.java |   56 -
 .../UnchangingFacetForPropertyLayoutXml.java       |   55 -
 .../renderunchanged/UnchangingFacet.java           |   29 -
 .../renderunchanged/UnchangingFacetAbstract.java   |   34 -
 .../properties/searchable/SearchableFacet.java     |   48 -
 .../searchable/SearchableFacetAbstract.java        |   50 -
 .../TypicalLengthFacetOnPropertyFromType.java      |   77 -
 .../update/PropertySetterFacetFactory.java         |   93 -
 .../SnapshotExcludeFacetFromImmutableMember.java   |   31 -
 .../update/clear/PropertyClearFacet.java           |   36 -
 .../update/clear/PropertyClearFacetAbstract.java   |   34 -
 .../clear/PropertyClearFacetViaClearMethod.java    |   68 -
 .../clear/PropertyClearFacetViaSetterMethod.java   |   69 -
 .../update/clear/PropertyClearingAccessor.java     |   38 -
 .../update/init/PropertyInitializationFacet.java   |   49 -
 .../init/PropertyInitializationFacetAbstract.java  |   34 -
 ...PropertyInitializationFacetViaSetterMethod.java |   63 -
 .../update/modify/PropertySetterFacet.java         |   39 -
 .../update/modify/PropertySetterFacetAbstract.java |   34 -
 .../modify/PropertySetterFacetViaSetterMethod.java |   70 -
 .../update/modify/PropertySettingAccessor.java     |   44 -
 .../validating/PropertyValidateFacet.java          |   49 -
 .../validating/PropertyValidateFacetAbstract.java  |   58 -
 .../validating/PropertyValidateFacetNone.java      |   42 -
 .../dflt/PropertyValidateFacetDefault.java         |   47 -
 .../dflt/PropertyValidateFacetDefaultFactory.java  |   63 -
 .../method/PropertyValidateFacetViaMethod.java     |   79 -
 .../PropertyValidateFacetViaMethodFactory.java     |   58 -
 ...rmatStyleFacetFromValueSemanticsAnnotation.java |   47 -
 ...derAdjustFacetFromValueSemanticsAnnotation.java |   45 -
 ...tsFacetFromJavaxValidationDigitsAnnotation.java |   48 -
 ...nalDigitsFacetFromValueSemanticsAnnotation.java |   48 -
 ...tsFacetFromJavaxValidationDigitsAnnotation.java |   49 -
 ...talDigitsFacetFromValueSemanticsAnnotation.java |   47 -
 ...nalDigitsFacetFromValueSemanticsAnnotation.java |   47 -
 ...gerDigitsFacetFromValueSemanticsAnnotation.java |   47 -
 ...PrecisionFacetFromValueSemanticsAnnotation.java |   47 -
 ...rmatStyleFacetFromValueSemanticsAnnotation.java |   47 -
 ...anslationFacetFromValueSemanticsAnnotation.java |   47 -
 .../ValueSemanticsAnnotationFacetFactory.java      |  152 -
 .../ValueSemanticsSelectingFacetForAnnotation.java |   46 -
 .../inspect/IsisModuleCoreMetamodelInspection.java |   48 -
 .../metamodel/inspect/Object_inspectMetamodel.java |  117 -
 .../core/metamodel/inspect/model/ActionNode.java   |   88 -
 .../metamodel/inspect/model/AnnotationNode.java    |   83 -
 .../metamodel/inspect/model/CollectionNode.java    |   73 -
 .../metamodel/inspect/model/FacetAttrNode.java     |   83 -
 .../metamodel/inspect/model/FacetGroupNode.java    |   88 -
 .../core/metamodel/inspect/model/FacetNode.java    |   98 -
 .../isis/core/metamodel/inspect/model/MMNode.java  |  134 -
 .../metamodel/inspect/model/MMNodeFactory.java     |  103 -
 .../metamodel/inspect/model/MMTreeAdapter.java     |   44 -
 .../core/metamodel/inspect/model/MemberNode.java   |   71 -
 .../metamodel/inspect/model/ParameterNode.java     |   89 -
 .../core/metamodel/inspect/model/PropertyNode.java |   71 -
 .../core/metamodel/inspect/model/TypeNode.java     |  106 -
 .../core/metamodel/interactions/AccessContext.java |   43 -
 .../interactions/ActionArgUsabilityContext.java    |   74 -
 .../interactions/ActionArgValidityContext.java     |   73 -
 .../interactions/ActionArgVisibilityContext.java   |   74 -
 .../interactions/ActionInteractionContext.java     |   30 -
 .../interactions/ActionUsabilityContext.java       |   59 -
 .../interactions/ActionValidityContext.java        |   65 -
 .../interactions/ActionVisibilityContext.java      |   59 -
 .../interactions/CollectionAccessContext.java      |   45 -
 .../interactions/CollectionUsabilityContext.java   |   47 -
 .../interactions/CollectionVisibilityContext.java  |   48 -
 .../interactions/DisablingInteractionAdvisor.java  |   45 -
 .../interactions/HidingInteractionAdvisor.java     |   45 -
 .../interactions/InteractionAdvisorFacet.java      |   44 -
 .../metamodel/interactions/InteractionContext.java |  133 -
 .../interactions/InteractionEventSupplier.java     |   36 -
 .../metamodel/interactions/InteractionHead.java    |   90 -
 .../metamodel/interactions/InteractionUtils.java   |   93 -
 .../metamodel/interactions/ObjectTitleContext.java |   57 -
 .../interactions/ObjectValidityContext.java        |   58 -
 .../interactions/ObjectVisibilityContext.java      |   58 -
 .../metamodel/interactions/ParseValueContext.java  |   59 -
 .../interactions/PropertyAccessContext.java        |   62 -
 .../interactions/PropertyModifyContext.java        |   70 -
 .../interactions/PropertyUsabilityContext.java     |   48 -
 .../interactions/PropertyVisibilityContext.java    |   47 -
 .../metamodel/interactions/ProposedHolder.java     |   37 -
 .../metamodel/interactions/UsabilityContext.java   |   44 -
 .../interactions/ValidatingInteractionAdvisor.java |   48 -
 .../metamodel/interactions/ValidityContext.java    |   51 -
 .../metamodel/interactions/VisibilityContext.java  |   44 -
 .../interactions/managed/ActionInteraction.java    |  284 --
 .../managed/ActionInteractionHead.java             |  176 -
 .../managed/CollectionInteraction.java             |   71 -
 .../interactions/managed/HasMetaModel.java         |   27 -
 .../interactions/managed/InteractionRailway.java   |   67 -
 .../interactions/managed/InteractionVeto.java      |  111 -
 .../interactions/managed/ManagedAction.java        |  235 --
 .../interactions/managed/ManagedCollection.java    |  114 -
 .../interactions/managed/ManagedFeature.java       |   92 -
 .../interactions/managed/ManagedMember.java        |  172 -
 .../interactions/managed/ManagedParameter.java     |   70 -
 .../interactions/managed/ManagedProperty.java      |  169 -
 .../interactions/managed/ManagedValue.java         |   79 -
 .../interactions/managed/MemberInteraction.java    |  113 -
 .../interactions/managed/MultiselectChoices.java   |   29 -
 .../managed/ParameterNegotiationModel.java         |  427 ---
 .../interactions/managed/PropertyInteraction.java  |   89 -
 .../managed/PropertyNegotiationModel.java          |  229 --
 .../interactions/managed/_BindingUtil.java         |  189 --
 .../interactions/managed/nonscalar/DataColumn.java |   47 -
 .../interactions/managed/nonscalar/DataRow.java    |   66 -
 .../managed/nonscalar/DataTableModel.java          |  305 --
 .../managed/nonscalar/_ToggleDebug.java            |   44 -
 .../isis/core/metamodel/layout/DeweyOrderSet.java  |  406 ---
 .../core/metamodel/layout/LayoutFacetUtil.java     |  408 ---
 .../MemberIdentifierComparator.java                |   43 -
 .../memberorderfacet/MemberOrderComparator.java    |   83 -
 .../OrderSetGroupNameComparator.java               |   54 -
 ...tionEnforcesMetamodelContributionValidator.java |  182 --
 .../core/metamodel/methods/MethodByClassMap.java   |   30 -
 .../methods/MethodFilteringFacetFactory.java       |   34 -
 .../isis/core/metamodel/methods/MethodFinder.java  |  280 --
 .../core/metamodel/methods/MethodFinderPAT.java    |   89 -
 .../methods/MethodPrefixBasedFacetFactory.java     |   39 -
 .../MethodPrefixBasedFacetFactoryAbstract.java     |  162 -
 .../_OrphanedSupportingMethodValidator.java        |   75 -
 .../isis/core/metamodel/object/Bookmarkable.java   |   88 -
 .../isis/core/metamodel/object/ManagedObject.java  |  607 ----
 .../isis/core/metamodel/object/ManagedObjects.java |  447 ---
 .../core/metamodel/object/MmAssertionUtil.java     |  138 -
 .../isis/core/metamodel/object/MmDebugUtil.java    |   75 -
 .../isis/core/metamodel/object/MmEntityUtil.java   |  164 -
 .../isis/core/metamodel/object/MmInvokeUtil.java   |  177 -
 .../isis/core/metamodel/object/MmRenderUtil.java   |   56 -
 .../isis/core/metamodel/object/MmSpecUtil.java     |   45 -
 .../isis/core/metamodel/object/MmTitleUtil.java    |   54 -
 .../isis/core/metamodel/object/MmUnwrapUtil.java   |  126 -
 .../core/metamodel/object/MmVisibilityUtil.java    |  130 -
 .../core/metamodel/object/PackedManagedObject.java |   32 -
 .../isis/core/metamodel/object/ProtoObject.java    |   59 -
 .../core/metamodel/object/_InternalTitleUtil.java  |  103 -
 .../core/metamodel/object/_ManagedObjectEmpty.java |   41 -
 .../object/_ManagedObjectEntityBookmarked.java     |  157 -
 .../object/_ManagedObjectEntityHybrid.java         |  169 -
 .../object/_ManagedObjectEntityTransient.java      |   72 -
 .../core/metamodel/object/_ManagedObjectMixin.java |   54 -
 .../core/metamodel/object/_ManagedObjectOther.java |   53 -
 .../metamodel/object/_ManagedObjectPacked.java     |   66 -
 .../metamodel/object/_ManagedObjectService.java    |   75 -
 .../metamodel/object/_ManagedObjectSpecified.java  |  191 --
 .../object/_ManagedObjectUnspecified.java          |   91 -
 .../core/metamodel/object/_ManagedObjectValue.java |   77 -
 .../metamodel/object/_ManagedObjectViewmodel.java  |  160 -
 .../isis/core/metamodel/object/_Refetchable.java   |   27 -
 .../metamodel/object/_RefreshableViewmodel.java    |   41 -
 .../metamodel/objectmanager/ObjectBookmarker.java  |   42 -
 .../metamodel/objectmanager/ObjectBulkLoader.java  |  121 -
 .../metamodel/objectmanager/ObjectCreator.java     |  114 -
 .../core/metamodel/objectmanager/ObjectLoader.java |  154 -
 .../metamodel/objectmanager/ObjectManager.java     |  190 --
 .../objectmanager/ObjectManagerDefault.java        |  115 -
 .../objectmanager/memento/ObjectMemento.java       |   97 -
 .../memento/ObjectMementoCollection.java           |   58 -
 .../memento/ObjectMementoForEmpty.java             |   51 -
 .../memento/ObjectMementoForScalar.java            |  158 -
 .../objectmanager/memento/_Recreatable.java        |   69 -
 .../objectmanager/memento/_RecreatableLookup.java  |   59 -
 .../objectmanager/memento/_RecreatableValue.java   |   48 -
 .../ObjectSpecificationPostProcessor.java          |   41 -
 .../ObjectSpecificationPostProcessorAbstract.java  |   52 -
 .../all/DescribedAsFromTypePostProcessor.java      |   92 -
 .../i18n/SynthesizeObjectNamingPostProcessor.java  |   97 -
 .../all/i18n/TranslationPostProcessor.java         |  110 -
 .../authorization/AuthorizationFacet.java          |   84 -
 .../authorization/AuthorizationFacetAbstract.java  |   91 -
 .../authorization/AuthorizationFacetImpl.java      |   29 -
 .../authorization/AuthorizationPostProcessor.java  |   63 -
 .../allbutparam/authorization/package-info.java    |   33 -
 .../TweakDomainEventsForMixinPostProcessor.java    |  170 -
 .../navigation/NavigationFacetFromHiddenType.java  |   66 -
 ...NavigationFacetFromHiddenTypePostProcessor.java |   68 -
 .../object/ProjectionFacetsPostProcessor.java      |   80 -
 ...arameterChoicesFacetFromParentedCollection.java |   63 -
 ...meterDefaultsFacetFromAssociatedCollection.java |   47 -
 .../param/ChoicesAndDefaultsPostProcessor.java     |  201 --
 .../param/TypicalLengthFromTypePostProcessor.java  |   76 -
 .../DisabledFromImmutablePostProcessor.java        |   86 -
 .../core/metamodel/progmodel/ProgrammingModel.java |  174 -
 .../progmodel/ProgrammingModelAbstract.java        |  242 --
 .../progmodel/ProgrammingModelInitFilter.java      |   81 -
 .../ProgrammingModelInitFilterDefault.java         |   90 -
 .../progmodel/ProgrammingModelService.java         |   32 -
 .../dflt/ProgrammingModelFacetsJava11.java         |  275 --
 .../core/metamodel/render/ScalarRenderMode.java    |   56 -
 .../core/metamodel/services/CollectionHelper.java  |   95 -
 .../metamodel/services/ServiceInjectorDefault.java |   79 -
 .../isis/core/metamodel/services/ServiceUtil.java  |   37 -
 .../appfeat/ApplicationFeatureDefault.java         |  159 -
 .../ApplicationFeatureRepositoryDefault.java       |  487 ---
 .../core/metamodel/services/appfeat/_Asserts.java  |   51 -
 .../classsubstitutor/ClassSubstitutor.java         |  138 -
 .../classsubstitutor/ClassSubstitutorAbstract.java |  158 -
 .../classsubstitutor/ClassSubstitutorDefault.java  |   73 -
 .../ClassSubstitutorForCollections.java            |   46 -
 .../ClassSubstitutorForDomainObjects.java          |   64 -
 .../classsubstitutor/ClassSubstitutorRegistry.java |   93 -
 .../services/command/CommandDtoFactory.java        |  116 -
 .../metamodel/services/devutils/MemberType.java    |   25 -
 .../services/events/MetamodelEventService.java     |   85 -
 ...ExceptionRecognizerForRecoverableException.java |   50 -
 .../services/grid/GridLoaderServiceDefault.java    |  231 --
 .../services/grid/GridReaderUsingJaxb.java         |   93 -
 .../services/grid/GridServiceDefault.java          |  209 --
 .../services/grid/GridSystemServiceAbstract.java   |  508 ---
 .../grid/bootstrap/GridSystemServiceBootstrap.java |  589 ----
 .../services/grid/bootstrap/_GridModel.java        |  231 --
 .../metamodel/services/homepage/package-info.java  |   26 -
 .../idstringifier/IdStringifierLookupService.java  |  106 -
 .../services/ixn/InteractionDtoFactory.java        |  100 -
 .../services/layout/LayoutServiceDefault.java      |  132 -
 .../metamodel/services/message/MessageBroker.java  |   41 -
 .../services/message/MessageServiceNoop.java       |   92 -
 .../services/metamodel/DomainMemberDefault.java    |  301 --
 .../services/metamodel/DomainModelDefault.java     |   58 -
 .../services/metamodel/MetaModelAnnotator.java     |  111 -
 .../services/metamodel/MetaModelExportSupport.java |   31 -
 .../services/metamodel/MetaModelExporter.java      |  496 ---
 .../metamodel/MetaModelServiceDefault.java         |  240 --
 .../ShadowedFactetAttributeAnnotator.java          |   97 -
 .../services/metamodel/TitleAnnotator.java         |  127 -
 .../core/metamodel/services/metamodel/_Util.java   |  153 -
 .../HasEnlistedEntityPropertyChanges.java          |   31 -
 .../objectlifecycle/ObjectLifecyclePublisher.java  |  126 -
 .../services/objectlifecycle/PreAndPostValue.java  |   95 -
 .../objectlifecycle/PropertyChangeRecord.java      |  144 -
 .../objectlifecycle/PropertyChangeRecordId.java    |   63 -
 .../objectlifecycle/PropertyValuePlaceholder.java  |   38 -
 .../services/publishing/CommandPublisher.java      |   38 -
 .../services/publishing/ExecutionPublisher.java    |   61 -
 .../services/registry/ServiceRegistryDefault.java  |  103 -
 .../services/registry/SpringContextProvider.java   |   23 -
 .../services/schema/SchemaValueMarshaller.java     |  128 -
 .../schema/SchemaValueMarshallerAbstract.java      |  364 ---
 .../tablecol/TableColumnOrderServiceDefault.java   |   73 -
 .../TableColumnOrderServiceUsingTxtFile.java       |  187 --
 .../services/title/TitleServiceDefault.java        |   97 -
 .../title/TitlesAndTranslationsValidator.java      |  186 --
 .../isis/core/metamodel/spec/ActionScope.java      |   48 -
 .../apache/isis/core/metamodel/spec/Described.java |   36 -
 .../metamodel/spec/HasObjectSpecification.java     |   60 -
 .../isis/core/metamodel/spec/Hierarchical.java     |   73 -
 .../spec/ObjectInstantiationException.java         |   40 -
 .../core/metamodel/spec/ObjectSpecification.java   |  649 ----
 .../spec/ObjectSpecificationException.java         |   35 -
 .../isis/core/metamodel/spec/Specification.java    |   43 -
 .../core/metamodel/spec/TypeOfAnyCardinality.java  |  185 --
 .../core/metamodel/spec/feature/CurrentHolder.java |   45 -
 .../metamodel/spec/feature/HasObjectFeature.java   |   26 -
 .../isis/core/metamodel/spec/feature/MixedIn.java  |   60 -
 .../core/metamodel/spec/feature/MixedInMember.java |   37 -
 .../spec/feature/MutableCurrentHolder.java         |   67 -
 .../core/metamodel/spec/feature/ObjectAction.java  |  536 ----
 .../spec/feature/ObjectActionContainer.java        |  160 -
 .../spec/feature/ObjectActionParameter.java        |  264 --
 .../metamodel/spec/feature/ObjectAssociation.java  |  200 --
 .../spec/feature/ObjectAssociationContainer.java   |  148 -
 .../core/metamodel/spec/feature/ObjectFeature.java |  173 -
 .../core/metamodel/spec/feature/ObjectMember.java  |  333 --
 .../spec/feature/OneToManyActionParameter.java     |   27 -
 .../spec/feature/OneToManyAssociation.java         |   87 -
 .../metamodel/spec/feature/OneToManyFeature.java   |   48 -
 .../spec/feature/OneToOneActionParameter.java      |   27 -
 .../spec/feature/OneToOneAssociation.java          |   84 -
 .../metamodel/spec/feature/OneToOneFeature.java    |   27 -
 .../spec/feature/memento/ActionMemento.java        |   83 -
 .../feature/memento/ActionParameterMemento.java    |   90 -
 .../spec/feature/memento/CollectionMemento.java    |   82 -
 .../spec/feature/memento/ObjectMemberMemento.java  |   83 -
 .../spec/feature/memento/PropertyMemento.java      |   82 -
 .../metamodel/specloader/LogicalTypeResolver.java  |   69 -
 .../specloader/LogicalTypeResolverDefault.java     |  106 -
 .../specloader/ProgrammingModelServiceDefault.java |  100 -
 .../metamodel/specloader/SpecificationCache.java   |   44 -
 .../specloader/SpecificationCacheDefault.java      |  122 -
 .../metamodel/specloader/SpecificationLoader.java  |  270 --
 .../specloader/SpecificationLoaderDefault.java     |  690 ----
 .../isis/core/metamodel/specloader/_Util.java      |   81 -
 .../specloader/facetprocessor/FacetProcessor.java  |  450 ---
 .../core/metamodel/specloader/package-info.java    |   43 -
 .../specloader/postprocessor/PostProcessor.java    |  103 -
 .../specloader/specimpl/FacetedMethodsBuilder.java |  509 ---
 .../specloader/specimpl/IntrospectionState.java    |   47 -
 .../specloader/specimpl/MemberSortingUtils.java    |   87 -
 .../specloader/specimpl/ObjectActionDefault.java   |  539 ----
 .../specloader/specimpl/ObjectActionMixedIn.java   |  179 --
 .../specimpl/ObjectActionParameterAbstract.java    |  384 ---
 .../specimpl/ObjectAssociationAbstract.java        |   90 -
 .../specloader/specimpl/ObjectMemberAbstract.java  |  336 --
 .../specloader/specimpl/ObjectMemberContainer.java |  158 -
 .../specimpl/ObjectSpecificationAbstract.java      |  900 ------
 .../specimpl/OneToManyActionParameterDefault.java  |   52 -
 .../specimpl/OneToManyAssociationDefault.java      |  198 --
 .../specimpl/OneToManyAssociationMixedIn.java      |  185 --
 .../specimpl/OneToOneActionParameterDefault.java   |   37 -
 .../specimpl/OneToOneAssociationDefault.java       |  345 --
 .../specimpl/OneToOneAssociationMixedIn.java       |  168 -
 .../specloader/specimpl/_MixedInMemberFactory.java |   56 -
 .../specimpl/_MixedInMemberNamingStrategy.java     |   82 -
 .../specloader/specimpl/_SpecPredicates.java       |   72 -
 .../specimpl/dflt/ObjectSpecificationDefault.java  |  380 ---
 .../specimpl/dflt/_PropertiesAsColumns.java        |  206 --
 .../specloader/typeextract/TypeExtractor.java      |  132 -
 .../validator/MetaModelInvalidException.java       |   34 -
 .../specloader/validator/MetaModelValidator.java   |   25 -
 .../validator/MetaModelValidatorAbstract.java      |   44 -
 ...ModelValidatorForAmbiguousMixinAnnotations.java |   45 -
 ...etaModelValidatorForConflictingOptionality.java |   84 -
 .../validator/MetaModelVisitingValidator.java      |   38 -
 .../MetaModelVisitingValidatorAbstract.java        |   45 -
 .../specloader/validator/ValidationFailure.java    |  113 -
 .../specloader/validator/ValidationFailures.java   |  115 -
 .../core/metamodel/util/DeweyOrderComparator.java  |   36 -
 .../apache/isis/core/metamodel/util/EventUtil.java |   42 -
 .../apache/isis/core/metamodel/util/Facets.java    |  456 ---
 .../core/metamodel/util/pchain/ParentChain.java    |   79 -
 .../metamodel/util/pchain/ParentChainDefault.java  |   42 -
 .../isis/core/metamodel/util/snapshot/Helper.java  |   90 -
 .../core/metamodel/util/snapshot/IsisSchema.java   |  179 --
 .../isis/core/metamodel/util/snapshot/Place.java   |   64 -
 .../core/metamodel/util/snapshot/XmlSchema.java    |  648 ----
 .../core/metamodel/util/snapshot/XmlSnapshot.java  |  850 -----
 .../core/metamodel/util/snapshot/XsMetaModel.java  |  336 --
 .../ApplicationFeatureIdValueSemantics.java        |  109 -
 .../valuesemantics/BigDecimalValueSemantics.java   |  172 -
 .../valuesemantics/BigIntegerValueSemantics.java   |  131 -
 .../valuesemantics/BlobValueSemantics.java         |  112 -
 .../valuesemantics/BookmarkValueSemantics.java     |  136 -
 .../valuesemantics/BooleanValueSemantics.java      |  138 -
 .../BufferedImageValueSemantics.java               |  162 -
 .../valuesemantics/ByteValueSemantics.java         |  155 -
 .../valuesemantics/ChangesDtoValueSemantics.java   |   61 -
 .../valuesemantics/CharacterValueSemantics.java    |  171 -
 .../valuesemantics/ClobValueSemantics.java         |  110 -
 .../valuesemantics/CommandDtoValueSemantics.java   |   61 -
 .../valuesemantics/DoubleValueSemantics.java       |  126 -
 .../valuesemantics/EnumValueSemanticsAbstract.java |  226 --
 .../valuesemantics/FloatValueSemantics.java        |  126 -
 .../IdStringifierForSerializable.java              |  116 -
 .../valuesemantics/ImageValueSemantics.java        |   37 -
 .../valuesemantics/IntValueSemantics.java          |  153 -
 .../InteractionDtoValueSemantics.java              |   61 -
 .../LocalResourcePathValueSemantics.java           |  130 -
 .../valuesemantics/LocaleValueSemantics.java       |  149 -
 .../valuesemantics/LongValueSemantics.java         |  153 -
 .../valuesemantics/MarkupValueSemantics.java       |  116 -
 .../valuesemantics/OidDtoValueSemantics.java       |   69 -
 .../valuesemantics/PasswordValueSemantics.java     |  107 -
 .../valuesemantics/ShortValueSemantics.java        |  155 -
 .../valuesemantics/StringValueSemantics.java       |  129 -
 .../valuesemantics/TreeNodeValueSemantics.java     |  136 -
 .../valuesemantics/URLValueSemantics.java          |  135 -
 .../valuesemantics/UUIDValueSemantics.java         |  129 -
 .../valuesemantics/XmlValueSemanticsAbstract.java  |  109 -
 .../valuesemantics/temporal/BadgeRenderer.java     |   55 -
 .../temporal/LocalDateTimeValueSemantics.java      |   72 -
 .../temporal/LocalDateValueSemantics.java          |   72 -
 .../temporal/LocalTimeValueSemantics.java          |   70 -
 .../temporal/OffsetDateTimeValueSemantics.java     |   70 -
 .../temporal/OffsetTimeValueSemantics.java         |   70 -
 .../valuesemantics/temporal/TemporalAdjust.java    |  191 --
 .../temporal/TemporalValueSemanticsProvider.java   |  417 ---
 .../temporal/ZonedDateTimeValueSemantics.java      |   70 -
 .../temporal/legacy/JavaSqlDateValueSemantics.java |   78 -
 .../legacy/JavaSqlTimeStampValueSemantics.java     |   72 -
 .../temporal/legacy/JavaSqlTimeValueSemantics.java |   76 -
 .../legacy/JavaUtilDateValueSemantics.java         |   83 -
 .../valuetypes/TemporalSemanticsAdapter.java       |   32 -
 .../valuetypes/ValueSemanticsAdapter.java          |  157 -
 .../valuetypes/ValueSemanticsResolverDefault.java  |  120 -
 .../metamodel/MetaModelContext_configTest.java     |   68 +
 .../core/metamodel/MetaModelTestAbstract.java      |   70 +
 .../core/metamodel/commons/IoUtils_CopyTest.java   |  138 +
 .../commons/JavaClassUtilsTest_getBuiltIn.java     |   40 +
 .../metamodel/commons/ListUtilsTest_adjust.java    |   67 +
 .../metamodel/commons/ListUtilsTest_insert.java    |   83 +
 .../commons/ListUtilsTest_mutableCopy.java         |   89 +
 .../core/metamodel/commons/LocaleUtilsTest.java    |   34 +
 .../core/metamodel/commons/NameUtilTest.java       |   77 +
 .../core/metamodel/commons/PrintLocale.java        |   58 +
 .../commons/StringUtilsTest_enumTitle.java         |   40 +
 .../commons/StringUtils_NaturalNameTest.java       |   58 +
 .../commons/StringUtils_NaturalizeTest.java        |   48 +
 .../commons/StringUtils_NormalizedTest.java        |   54 +
 .../StringUtils_RemoveLeadingWhiteSpace.java       |   52 +
 .../commons/StringUtils_SplitOnCommas.java         |   81 +
 .../commons/StringUtils_StripLeadingSlashTest.java |   50 +
 .../commons/StringUtils_StripNewLinesTest.java     |   58 +
 .../commons/StringUtils_camelLowerFirst.java       |   37 +
 .../commons/StringUtils_toLineSeparated.java       |   51 +
 .../commons/StringUtils_toLowerDashed.java         |   35 +
 .../metamodel/commons/TypesTest_filteredList.java  |   70 +
 .../metamodel/commons/matchers/IsisMatchers.java   |   72 +
 .../matchers/IsisMatchers_NonEmptyStringTest.java  |   52 +
 .../metamodel/consent/InteractionResultTest.java   |   82 +
 .../core/metamodel/facetapi/FacetAbstractTest.java |   73 +
 .../facetapi/FeatureTypeTest_identifierFor.java    |   87 +
 .../AbstractFacetFactoryJupiterTestCase.java       |  138 +
 .../metamodel/facets/AbstractFacetFactoryTest.java |  164 +
 .../facets/AbstractTestWithMetaModelContext.java   |   67 +
 .../Annotations_getAnnotations_on_Class_Test.java  |  248 ++
 .../Annotations_getAnnotations_on_Field_Test.java  |  203 ++
 .../Annotations_getAnnotations_on_Method_Test.java |  183 ++
 ...notations_getAnnotations_on_Parameter_Test.java |  199 ++
 .../metamodel/facets/CollectionFacetUtilsTest.java |  118 +
 ...nEventHelperTest_newActionInteractionEvent.java |   87 +
 ...HelperTest_newCollectionDomainEvent_forAdd.java |   82 +
 ...perTest_newCollectionDomainEvent_forRemove.java |   82 +
 ...HelperTest_newPropertyDomainEvent_forClear.java |   79 +
 ...elperTest_newPropertyDomainEvent_forModify.java |   76 +
 .../metamodel/facets/MethodFinderUtilsTest.java    |   77 +
 .../metamodel/facets/ObjectAdapterUtilsTest.java   |   74 +
 .../causeway/core/metamodel/facets/Utils.java      |   64 +
 .../actions/ActionMethodsFacetFactoryTest.java     |  265 ++
 .../actions/IteratorFilteringFacetFactoryTest.java |   88 +
 .../action/ActionAnnotationFacetFactoryTest.java   |   91 +
 ...nnotationFacetFactoryTest_ActionInvocation.java |  238 ++
 .../ActionAnnotationFacetFactoryTest_Hidden.java   |   73 +
 ...ctionAnnotationFacetFactoryTest_Invocation.java |  209 ++
 ...ctionAnnotationFacetFactoryTest_RestrictTo.java |  110 +
 ...ActionAnnotationFacetFactoryTest_Semantics.java |  115 +
 .../ActionAnnotationFacetFactoryTest_TypeOf.java   |  187 ++
 ...notationFacetFactoryTest_commandPublishing.java |  120 +
 ...tationFacetFactoryTest_executionPublishing.java |  324 ++
 ...icsFacetFallbackToNonIdempotentFactoryTest.java |   77 +
 .../PrototypeFacetAnnotationFactoryTest.java       |   78 +
 ...kmarkableAnnotationFacetFactoryTest_action.java |   68 +
 ...nLayoutXmlLayoutAnnotationFacetFactoryTest.java |  142 +
 ...MenuFacetFromDomainServiceFacetFactoryTest.java |  158 +
 .../prototype/PrototypeFacetAbstractTest.java      |   51 +
 .../CollectionFieldMethodsFacetFactoryTest.java    |  199 ++
 .../collections/JavaCollectionFacetTest.java       |   62 +
 .../CollectionAnnotationFacetFactoryTest.java      |  239 ++
 ...ollectionAnnotationFacetFactoryTest_typeOf.java |  124 +
 ...etForCollectionLayoutAnnotationFactoryTest.java |   64 +
 .../cssclassfa/CssClassFaFacetAbstractTest.java    |   45 +
 .../ViewModelSemanticCheckingFacetFactoryTest.java |   84 +
 ...okmarkableAnnotationFacetFactoryTest_class.java |   66 +
 .../callback/CallbackFacetFactoryTestAbstract.java |   81 +
 .../callback/CreatedCallbackFacetFactoryTest.java  |   36 +
 .../callback/LoadedCallbackFacetFactoryTest.java   |   36 +
 .../PersistedCallbackFacetFactoryTest.java         |   59 +
 .../PersistingCallbackFacetFactoryTest.java        |   59 +
 .../callback/RemovingCallbackFacetFactoryTest.java |   57 +
 .../callback/UpdatedCallbackFacetFactoryTest.java  |   36 +
 .../callback/UpdatingCallbackFacetFactoryTest.java |   36 +
 ...CssClassFaFacetOnTypeAnnotationFactoryTest.java |   68 +
 .../ObjectDisabledMethodFacetFactoryTest.java      |   37 +
 ...oicesFacetFromBoundedAnnotationFactoryTest.java |   68 +
 .../DomainObjectAnnotationFacetFactoryTest.java    |  656 ++++
 .../NamedAnnotationFacetFactoryTest.java           |   47 +
 .../DomainObjectLayoutFactoryTest.java             |  415 +++
 .../DomainServiceFacetAnnotationFactoryTest.java   |   66 +
 .../DomainServiceLayoutFacetFactoryTest.java       |  128 +
 .../hidden/ObjectHiddenMethodFacetFactoryTest.java |   37 +
 .../cssclass/CssClassFacetMethodFactoryTest.java   |   38 +
 .../ident/cssclass/CssClassFacetMethodTest.java    |  101 +
 .../CssClassFacetMethodWithProblemTest.java        |   79 +
 .../ident/icon/IconFacetMethodFactoryTest.java     |   38 +
 .../object/ident/icon/IconFacetMethodTest.java     |   79 +
 .../ident/layout/LayoutFacetFactoryTest.java       |   38 +
 .../object/ident/layout/LayoutFacetMethodTest.java |   78 +
 .../title/TitleAnnotationFacetFactoryTest.java     |  250 ++
 .../ident/title/TitleFacetViaMethodTest.java       |   80 +
 .../title/TitleFacetViaMethodsFactoryTest.java     |   92 +
 .../title/TitleFacetViaTitleAnnotationTest.java    |  119 +
 .../object/layoutxml/GridFacetDefaultTest.java     |   60 +
 .../logicaltype/LogicalTypeInferenceTest.java      |   66 +
 .../object/mixin/MixinFacetAbstract_Test.java      |   61 +
 .../facets/object/mixin/MixinIntendedAs.java       |  104 +
 .../object/mixin/MixinIntendedAsActionTest.java    |  175 +
 .../navparent/NavigableParentFacetMethodTest.java  |   80 +
 .../NavigableParentAnnotationFacetFactoryTest.java |  107 +
 .../annotation/NavigableParentTestSamples.java     |   63 +
 .../RecreatableObjectFacetFactoryTest.java         |   74 +
 .../ObjectSupportFacetFactoryTestAbstract.java     |   80 +
 .../memberorder/DeweyOrderComparatorTest.java      |  200 ++
 .../ordering/memberorder/DeweyOrderSetTest.java    |  285 ++
 .../ordering/memberorder/LayoutOrderTest.java      |  137 +
 ...cetForParameterLayoutAnnotationFactoryTest.java |   61 +
 ...cetForParameterLayoutAnnotationFactoryTest.java |   65 +
 .../facets/param/name/ParameterNameFacetTest.java  |  145 +
 .../ParameterAnnotationFacetFactoryTest.java       |  394 +++
 ...lableAnnotationOnParameterFacetFactoryTest.java |  117 +
 ...RegExAnnotationOnParameterFacetFactoryTest.java |   87 +
 .../PropertyMethodsFacetFactoryTest.java           |  509 +++
 ...romptStyleFacetFromPropertyAnnotation_Test.java |  160 +
 ...sabledAnnotationOnPropertyFacetFactoryTest.java |  107 +
 .../MandatoryAnnotationFacetFactoryTest.java       |   76 +
 .../PropertyAnnotationFacetFactoryTest.java        |  919 ++++++
 ...tionWithSnapshotOnPropertyFacetFactoryTest.java |   75 +
 ...llableAnnotationOnPropertyFacetFactoryTest.java |  126 +
 .../RegExAnnotationOnPropertyFacetFactoryTest.java |   98 +
 ...acetForPropertyLayoutAnnotationFactoryTest.java |   64 +
 ...acetForPropertyLayoutAnnotationFactoryTest.java |   67 +
 .../DomainObjectWithMustSatisfyAnnotations.java    |   47 +
 .../DomainObjectWithoutMustSatisfyAnnotations.java |   47 +
 .../SpecificationAlwaysSatisfied.java              |   30 +
 .../specification/SpecificationAndTests.java       |  110 +
 .../specification/SpecificationNeverSatisfied.java |   30 +
 .../specification/SpecificationNotTests.java       |   61 +
 .../specification/SpecificationOrTests.java        |  109 +
 ...cificationRequiresFirstLetterToBeUpperCase.java |   38 +
 .../BigDecimalValueSemanticsProviderTest.java      |   79 +
 .../value/BigIntValueSemanticsProviderTest.java    |   77 +
 .../value/BlobValueSemanticsProviderTest.java      |   72 +
 .../value/BooleanValueSemanticsProviderTest.java   |   97 +
 .../value/ByteValueSemanticsProviderTest.java      |   73 +
 .../value/CharacterValueSemanticsProviderTest.java |   85 +
 .../value/ClobValueSemanticsProviderTest.java      |   72 +
 .../value/DoubleValueSemanticsProviderTest.java    |   86 +
 .../value/FloatValueSemanticsProviderTest.java     |   81 +
 .../value/IntValueSemanticsProviderTest.java       |   79 +
 .../JavaSqlDateValueSemanticsProviderTest.java     |   95 +
 .../value/JavaTimeValueSemanticsProviderTest.java  |  155 +
 .../value/LongValueSemanticsProviderTest.java      |   81 +
 .../value/PasswordValueSemanticsProviderTest.java  |   64 +
 .../value/ShortValueSemanticsProviderTest.java     |   86 +
 .../value/StringValueSemanticsProviderTest.java    |   85 +
 .../ValueSemanticsProviderAbstractTestCase.java    |  185 ++
 .../ValueSemanticsAnnotationFacetFactoryTest.java  |  410 +++
 .../facets/value/temporal/TemporalAdjustTest.java  |  122 +
 ...jectAssociationPredicatesTest_visibleWhere.java |  100 +
 .../metamodel/id/TypeIdentifierTestFactory.java    |   34 +
 .../interactions/InteractionUtils_isA_Test.java    |  110 +
 .../core/metamodel/object/ManagedObjectTest.java   |  127 +
 .../objects/ObjectActionLayoutXmlDefaultTest.java  |   77 +
 .../objects/OneToManyAssociationDefaultTest.java   |   94 +
 .../objects/TypeExtractorMethodReturnTest.java     |   99 +
 .../TypeExtractorMethodsParametersTest.java        |   58 +
 .../core/metamodel/objects/dom/Interface1.java     |   23 +
 .../objects/dom/JavaActionTestObject.java          |   54 +
 .../dom/JavaObjectWithBasicProgramConventions.java |  268 ++
 .../dom/JavaObjectWithOneToOneAssociations.java    |   46 +
 .../objects/dom/JavaReferencedObject.java          |   34 +
 .../metamodel/objects/dom/RuntimeTestPojo.java     |   51 +
 .../metamodel/objects/dom/TestDomainObject.java    |   23 +
 .../core/metamodel/objects/dom/TestObject.java     |   22 +
 .../objects/dom/TestObjectAsAggregated.java        |   28 +
 .../metamodel/objects/dom/TestObjectAsService.java |   36 +
 .../objects/dom/TestObjectWithCollection.java      |  107 +
 .../ServiceInjectorDefaultTest_usingFields.java    |  143 +
 ...erviceInjectorDefaultTest_validateServices.java |   80 +
 ...InjectorDefaultTest_validateServices_happy.java |   83 +
 .../services/ServiceInjectorLegacyTest.java        |   90 +
 .../services/appfeat/ApplicationFeatureIdTest.java |  557 ++++
 .../ApplicationFeatureRepositoryDefaultTest.java   |  110 +
 .../services/appfeat/ApplicationFeatureTest.java   |  157 +
 .../appfeat/ApplicationFeatureTypeTest.java        |  174 +
 ...zerForRecoverableException_recognizes_Test.java |   50 +
 .../causeway/core/metamodel/services/grid/Bar.java |   37 +
 .../core/metamodel/services/grid/Bar.layout.xml    |    0
 .../causeway/core/metamodel/services/grid/Foo.java |   22 +
 .../core/metamodel/services/grid/Foo.layout.xml    |    0
 .../core/metamodel/services/grid/Foo2.java         |   22 +
 .../services/grid/Foo2.layout.fallback.xml         |    0
 .../core/metamodel/services/grid/Foo3.java         |   22 +
 .../services/grid/Foo3.layout.fallback.xml         |    0
 .../core/metamodel/services/grid/Foo3.layout.xml   |    0
 .../core/metamodel/services/grid/Foo4.java         |   22 +
 .../GridLoaderServiceDefault_resourceNameTest.java |   74 +
 .../metamodel/services/grid/GridLoadingTest.java   |  106 +
 .../services/grid/GridXmlRoundtripTest.java        |  158 +
 .../services/menubars/BSMenuBarsTest.java          |   64 +
 .../services/menubars/menubars.layout.xml          |    0
 .../metamodel/MetaModelServiceDefaultTest.java     |  218 ++
 .../tablecol/Customer#orders.columnOrder.txt       |    0
 .../services/tablecol/Order.columnOrder.txt        |    0
 .../TableColumnOrderServiceUsingTxtFile_Test.java  |   94 +
 .../services/title/TitleServiceDefaultTest.java    |   85 +
 .../metamodel/spec/TypeOfAnyCardinalityTest.java   |  182 ++
 .../metamodel/specloader/ReflectorTestPojo.java    |   51 +
 .../specloader/SpecificationCacheDefaultTest.java  |  114 +
 .../SpecificationLoaderTestAbstract.java           |  105 +
 .../SpecificationLoaderTest_nonScalar.java         |  132 +
 .../specloader/SpecificationLoaderTest_value.java  |   45 +
 .../specloader/_LogicalTypeTestFactory.java        |   39 +
 .../ClassSubstitutorTest_getClass.java             |   77 +
 .../IntrospectionState_comparable_Test.java        |   87 +
 .../specimpl/MixedInMemberNamingStrategyTest.java  |   75 +
 ...ionParameterAbstractTest_getId_and_getName.java |   59 +
 .../specimpl/ObjectAssociationAbstractTest.java    |  186 ++
 ...ObjectAssociationAbstractTest_alwaysHidden.java |  226 ++
 .../specimpl/OneToOneAssociationAbstractTest.java  |  171 +
 .../IdStringifierForBigDecimal_Test.java           |   65 +
 .../IdStringifierForBigInteger_Test.java           |   62 +
 .../valuesemantics/IdStringifierForByte_Test.java  |   57 +
 .../IdStringifierForByte_primitive_Test.java       |   58 +
 .../IdStringifierForCharacter_Test.java            |   72 +
 .../IdStringifierForInteger_Test.java              |   58 +
 .../IdStringifierForInteger_primitive_Test.java    |   57 +
 .../valuesemantics/IdStringifierForLong_Test.java  |   57 +
 .../IdStringifierForLong_primitive_Test.java       |   58 +
 .../IdStringifierForSerializable_Test.java         |   76 +
 .../valuesemantics/IdStringifierForShort_Test.java |   57 +
 .../IdStringifierForShort_primitive_Test.java      |   57 +
 .../IdStringifierForString_Test.java               |   62 +
 .../valuesemantics/IdStringifierForUuid_Test.java  |   56 +
 .../TemporalValueSemanticsProviderTest.java        |  113 +
 .../metamodel/MetaModelContext_configTest.java     |   68 -
 .../isis/core/metamodel/MetaModelTestAbstract.java |   70 -
 .../core/metamodel/commons/IoUtils_CopyTest.java   |  138 -
 .../commons/JavaClassUtilsTest_getBuiltIn.java     |   40 -
 .../metamodel/commons/ListUtilsTest_adjust.java    |   67 -
 .../metamodel/commons/ListUtilsTest_insert.java    |   84 -
 .../commons/ListUtilsTest_mutableCopy.java         |   89 -
 .../core/metamodel/commons/LocaleUtilsTest.java    |   34 -
 .../isis/core/metamodel/commons/NameUtilTest.java  |   77 -
 .../isis/core/metamodel/commons/PrintLocale.java   |   58 -
 .../commons/StringUtilsTest_enumTitle.java         |   40 -
 .../commons/StringUtils_NaturalNameTest.java       |   58 -
 .../commons/StringUtils_NaturalizeTest.java        |   48 -
 .../commons/StringUtils_NormalizedTest.java        |   54 -
 .../StringUtils_RemoveLeadingWhiteSpace.java       |   52 -
 .../commons/StringUtils_SplitOnCommas.java         |   81 -
 .../commons/StringUtils_StripLeadingSlashTest.java |   50 -
 .../commons/StringUtils_StripNewLinesTest.java     |   58 -
 .../commons/StringUtils_camelLowerFirst.java       |   37 -
 .../commons/StringUtils_toLineSeparated.java       |   51 -
 .../commons/StringUtils_toLowerDashed.java         |   35 -
 .../metamodel/commons/TypesTest_filteredList.java  |   70 -
 .../metamodel/commons/matchers/IsisMatchers.java   |   72 -
 .../matchers/IsisMatchers_NonEmptyStringTest.java  |   52 -
 .../metamodel/consent/InteractionResultTest.java   |   82 -
 .../core/metamodel/facetapi/FacetAbstractTest.java |   73 -
 .../facetapi/FeatureTypeTest_identifierFor.java    |   87 -
 .../AbstractFacetFactoryJupiterTestCase.java       |  138 -
 .../metamodel/facets/AbstractFacetFactoryTest.java |  164 -
 .../facets/AbstractTestWithMetaModelContext.java   |   67 -
 .../Annotations_getAnnotations_on_Class_Test.java  |  248 --
 .../Annotations_getAnnotations_on_Field_Test.java  |  203 --
 .../Annotations_getAnnotations_on_Method_Test.java |  184 --
 ...notations_getAnnotations_on_Parameter_Test.java |  200 --
 .../metamodel/facets/CollectionFacetUtilsTest.java |  118 -
 ...nEventHelperTest_newActionInteractionEvent.java |   87 -
 ...HelperTest_newCollectionDomainEvent_forAdd.java |   82 -
 ...perTest_newCollectionDomainEvent_forRemove.java |   82 -
 ...HelperTest_newPropertyDomainEvent_forClear.java |   79 -
 ...elperTest_newPropertyDomainEvent_forModify.java |   76 -
 .../metamodel/facets/MethodFinderUtilsTest.java    |   77 -
 .../metamodel/facets/ObjectAdapterUtilsTest.java   |   74 -
 .../apache/isis/core/metamodel/facets/Utils.java   |   63 -
 .../actions/ActionMethodsFacetFactoryTest.java     |  265 --
 .../actions/IteratorFilteringFacetFactoryTest.java |   88 -
 .../action/ActionAnnotationFacetFactoryTest.java   |   91 -
 ...nnotationFacetFactoryTest_ActionInvocation.java |  238 --
 .../ActionAnnotationFacetFactoryTest_Hidden.java   |   73 -
 ...ctionAnnotationFacetFactoryTest_Invocation.java |  209 --
 ...ctionAnnotationFacetFactoryTest_RestrictTo.java |  110 -
 ...ActionAnnotationFacetFactoryTest_Semantics.java |  115 -
 .../ActionAnnotationFacetFactoryTest_TypeOf.java   |  187 --
 ...notationFacetFactoryTest_commandPublishing.java |  120 -
 ...tationFacetFactoryTest_executionPublishing.java |  324 --
 ...icsFacetFallbackToNonIdempotentFactoryTest.java |   77 -
 .../PrototypeFacetAnnotationFactoryTest.java       |   78 -
 ...kmarkableAnnotationFacetFactoryTest_action.java |   68 -
 ...nLayoutXmlLayoutAnnotationFacetFactoryTest.java |  142 -
 ...MenuFacetFromDomainServiceFacetFactoryTest.java |  158 -
 .../prototype/PrototypeFacetAbstractTest.java      |   51 -
 .../CollectionFieldMethodsFacetFactoryTest.java    |  199 --
 .../collections/JavaCollectionFacetTest.java       |   62 -
 .../CollectionAnnotationFacetFactoryTest.java      |  239 --
 ...ollectionAnnotationFacetFactoryTest_typeOf.java |  124 -
 ...etForCollectionLayoutAnnotationFactoryTest.java |   63 -
 .../cssclassfa/CssClassFaFacetAbstractTest.java    |   45 -
 .../ViewModelSemanticCheckingFacetFactoryTest.java |   84 -
 ...okmarkableAnnotationFacetFactoryTest_class.java |   66 -
 .../callback/CallbackFacetFactoryTestAbstract.java |   81 -
 .../callback/CreatedCallbackFacetFactoryTest.java  |   36 -
 .../callback/LoadedCallbackFacetFactoryTest.java   |   36 -
 .../PersistedCallbackFacetFactoryTest.java         |   59 -
 .../PersistingCallbackFacetFactoryTest.java        |   59 -
 .../callback/RemovingCallbackFacetFactoryTest.java |   57 -
 .../callback/UpdatedCallbackFacetFactoryTest.java  |   36 -
 .../callback/UpdatingCallbackFacetFactoryTest.java |   36 -
 ...CssClassFaFacetOnTypeAnnotationFactoryTest.java |   68 -
 .../ObjectDisabledMethodFacetFactoryTest.java      |   37 -
 ...oicesFacetFromBoundedAnnotationFactoryTest.java |   68 -
 .../DomainObjectAnnotationFacetFactoryTest.java    |  656 ----
 .../NamedAnnotationFacetFactoryTest.java           |   47 -
 .../DomainObjectLayoutFactoryTest.java             |  415 ---
 .../DomainServiceFacetAnnotationFactoryTest.java   |   66 -
 .../DomainServiceLayoutFacetFactoryTest.java       |  128 -
 .../hidden/ObjectHiddenMethodFacetFactoryTest.java |   37 -
 .../cssclass/CssClassFacetMethodFactoryTest.java   |   38 -
 .../ident/cssclass/CssClassFacetMethodTest.java    |  101 -
 .../CssClassFacetMethodWithProblemTest.java        |   79 -
 .../ident/icon/IconFacetMethodFactoryTest.java     |   38 -
 .../object/ident/icon/IconFacetMethodTest.java     |   79 -
 .../ident/layout/LayoutFacetFactoryTest.java       |   38 -
 .../object/ident/layout/LayoutFacetMethodTest.java |   78 -
 .../title/TitleAnnotationFacetFactoryTest.java     |  250 --
 .../ident/title/TitleFacetViaMethodTest.java       |   80 -
 .../title/TitleFacetViaMethodsFactoryTest.java     |   91 -
 .../title/TitleFacetViaTitleAnnotationTest.java    |  119 -
 .../object/layoutxml/GridFacetDefaultTest.java     |   60 -
 .../logicaltype/LogicalTypeInferenceTest.java      |   66 -
 .../object/mixin/MixinFacetAbstract_Test.java      |   61 -
 .../facets/object/mixin/MixinIntendedAs.java       |  104 -
 .../object/mixin/MixinIntendedAsActionTest.java    |  175 -
 .../navparent/NavigableParentFacetMethodTest.java  |   80 -
 .../NavigableParentAnnotationFacetFactoryTest.java |  107 -
 .../annotation/NavigableParentTestSamples.java     |   63 -
 .../RecreatableObjectFacetFactoryTest.java         |   74 -
 .../ObjectSupportFacetFactoryTestAbstract.java     |   80 -
 .../memberorder/DeweyOrderComparatorTest.java      |  200 --
 .../ordering/memberorder/DeweyOrderSetTest.java    |  285 --
 .../ordering/memberorder/LayoutOrderTest.java      |  137 -
 ...cetForParameterLayoutAnnotationFactoryTest.java |   61 -
 ...cetForParameterLayoutAnnotationFactoryTest.java |   65 -
 .../facets/param/name/ParameterNameFacetTest.java  |  145 -
 .../ParameterAnnotationFacetFactoryTest.java       |  394 ---
 ...lableAnnotationOnParameterFacetFactoryTest.java |  117 -
 ...RegExAnnotationOnParameterFacetFactoryTest.java |   87 -
 .../PropertyMethodsFacetFactoryTest.java           |  509 ---
 ...romptStyleFacetFromPropertyAnnotation_Test.java |  160 -
 ...sabledAnnotationOnPropertyFacetFactoryTest.java |  107 -
 .../MandatoryAnnotationFacetFactoryTest.java       |   76 -
 .../PropertyAnnotationFacetFactoryTest.java        |  919 ------
 ...tionWithSnapshotOnPropertyFacetFactoryTest.java |   75 -
 ...llableAnnotationOnPropertyFacetFactoryTest.java |  126 -
 .../RegExAnnotationOnPropertyFacetFactoryTest.java |   98 -
 ...acetForPropertyLayoutAnnotationFactoryTest.java |   64 -
 ...acetForPropertyLayoutAnnotationFactoryTest.java |   67 -
 .../DomainObjectWithMustSatisfyAnnotations.java    |   47 -
 .../DomainObjectWithoutMustSatisfyAnnotations.java |   47 -
 .../SpecificationAlwaysSatisfied.java              |   30 -
 .../specification/SpecificationAndTests.java       |  110 -
 .../specification/SpecificationNeverSatisfied.java |   30 -
 .../specification/SpecificationNotTests.java       |   61 -
 .../specification/SpecificationOrTests.java        |  109 -
 ...cificationRequiresFirstLetterToBeUpperCase.java |   38 -
 .../BigDecimalValueSemanticsProviderTest.java      |   79 -
 .../value/BigIntValueSemanticsProviderTest.java    |   77 -
 .../value/BlobValueSemanticsProviderTest.java      |   72 -
 .../value/BooleanValueSemanticsProviderTest.java   |   97 -
 .../value/ByteValueSemanticsProviderTest.java      |   73 -
 .../value/CharacterValueSemanticsProviderTest.java |   85 -
 .../value/ClobValueSemanticsProviderTest.java      |   72 -
 .../value/DoubleValueSemanticsProviderTest.java    |   86 -
 .../value/FloatValueSemanticsProviderTest.java     |   81 -
 .../value/IntValueSemanticsProviderTest.java       |   79 -
 .../JavaSqlDateValueSemanticsProviderTest.java     |   95 -
 .../value/JavaTimeValueSemanticsProviderTest.java  |  155 -
 .../value/LongValueSemanticsProviderTest.java      |   81 -
 .../value/PasswordValueSemanticsProviderTest.java  |   64 -
 .../value/ShortValueSemanticsProviderTest.java     |   86 -
 .../value/StringValueSemanticsProviderTest.java    |   85 -
 .../ValueSemanticsProviderAbstractTestCase.java    |  185 --
 .../ValueSemanticsAnnotationFacetFactoryTest.java  |  409 ---
 .../facets/value/temporal/TemporalAdjustTest.java  |  122 -
 ...jectAssociationPredicatesTest_visibleWhere.java |  100 -
 .../metamodel/id/TypeIdentifierTestFactory.java    |   34 -
 .../interactions/InteractionUtils_isA_Test.java    |  110 -
 .../core/metamodel/object/ManagedObjectTest.java   |  127 -
 .../objects/ObjectActionLayoutXmlDefaultTest.java  |   77 -
 .../objects/OneToManyAssociationDefaultTest.java   |   94 -
 .../objects/TypeExtractorMethodReturnTest.java     |   99 -
 .../TypeExtractorMethodsParametersTest.java        |   58 -
 .../core/metamodel/objects/dom/Interface1.java     |   23 -
 .../objects/dom/JavaActionTestObject.java          |   54 -
 .../dom/JavaObjectWithBasicProgramConventions.java |  268 --
 .../dom/JavaObjectWithOneToOneAssociations.java    |   46 -
 .../objects/dom/JavaReferencedObject.java          |   34 -
 .../metamodel/objects/dom/RuntimeTestPojo.java     |   51 -
 .../metamodel/objects/dom/TestDomainObject.java    |   23 -
 .../core/metamodel/objects/dom/TestObject.java     |   22 -
 .../objects/dom/TestObjectAsAggregated.java        |   28 -
 .../metamodel/objects/dom/TestObjectAsService.java |   36 -
 .../objects/dom/TestObjectWithCollection.java      |  107 -
 .../ServiceInjectorDefaultTest_usingFields.java    |  143 -
 ...erviceInjectorDefaultTest_validateServices.java |   80 -
 ...InjectorDefaultTest_validateServices_happy.java |   83 -
 .../services/ServiceInjectorLegacyTest.java        |   90 -
 .../services/appfeat/ApplicationFeatureIdTest.java |  557 ----
 .../ApplicationFeatureRepositoryDefaultTest.java   |  110 -
 .../services/appfeat/ApplicationFeatureTest.java   |  157 -
 .../appfeat/ApplicationFeatureTypeTest.java        |  174 -
 ...zerForRecoverableException_recognizes_Test.java |   50 -
 .../isis/core/metamodel/services/grid/Bar.java     |   37 -
 .../isis/core/metamodel/services/grid/Foo.java     |   22 -
 .../isis/core/metamodel/services/grid/Foo2.java    |   22 -
 .../isis/core/metamodel/services/grid/Foo3.java    |   22 -
 .../isis/core/metamodel/services/grid/Foo4.java    |   22 -
 .../GridLoaderServiceDefault_resourceNameTest.java |   74 -
 .../metamodel/services/grid/GridLoadingTest.java   |  106 -
 .../services/grid/GridXmlRoundtripTest.java        |  158 -
 .../services/menubars/BSMenuBarsTest.java          |   64 -
 .../metamodel/MetaModelServiceDefaultTest.java     |  218 --
 .../TableColumnOrderServiceUsingTxtFile_Test.java  |   94 -
 .../services/title/TitleServiceDefaultTest.java    |   85 -
 .../metamodel/spec/TypeOfAnyCardinalityTest.java   |  182 --
 .../metamodel/specloader/ReflectorTestPojo.java    |   51 -
 .../specloader/SpecificationCacheDefaultTest.java  |  114 -
 .../SpecificationLoaderTestAbstract.java           |  105 -
 .../SpecificationLoaderTest_nonScalar.java         |  132 -
 .../specloader/SpecificationLoaderTest_value.java  |   45 -
 .../specloader/_LogicalTypeTestFactory.java        |   39 -
 .../ClassSubstitutorTest_getClass.java             |   77 -
 .../IntrospectionState_comparable_Test.java        |   87 -
 .../specimpl/MixedInMemberNamingStrategyTest.java  |   76 -
 ...ionParameterAbstractTest_getId_and_getName.java |   59 -
 .../specimpl/ObjectAssociationAbstractTest.java    |  186 --
 ...ObjectAssociationAbstractTest_alwaysHidden.java |  226 --
 .../specimpl/OneToOneAssociationAbstractTest.java  |  171 -
 .../IdStringifierForBigDecimal_Test.java           |   65 -
 .../IdStringifierForBigInteger_Test.java           |   62 -
 .../valuesemantics/IdStringifierForByte_Test.java  |   57 -
 .../IdStringifierForByte_primitive_Test.java       |   58 -
 .../IdStringifierForCharacter_Test.java            |   72 -
 .../IdStringifierForInteger_Test.java              |   58 -
 .../IdStringifierForInteger_primitive_Test.java    |   57 -
 .../valuesemantics/IdStringifierForLong_Test.java  |   57 -
 .../IdStringifierForLong_primitive_Test.java       |   58 -
 .../IdStringifierForSerializable_Test.java         |   76 -
 .../valuesemantics/IdStringifierForShort_Test.java |   57 -
 .../IdStringifierForShort_primitive_Test.java      |   57 -
 .../IdStringifierForString_Test.java               |   62 -
 .../valuesemantics/IdStringifierForUuid_Test.java  |   56 -
 .../TemporalValueSemanticsProviderTest.java        |  113 -
 .../dom/CustomerAsProxiedByDataNucleus.java        |    2 +-
 core/pom.xml                                       |  238 +-
 core/privileged/pom.xml                            |   12 +-
 core/runtime/pom.xml                               |   32 +-
 core/runtime/src/main/java/module-info.java        |   22 +-
 .../core/runtime/IsisModuleCoreRuntime.java        |   51 +
 .../core/runtime/events/MetamodelEventService.java |   66 +
 .../runtime/events/TransactionEventEmitter.java    |   67 +
 .../apache/causeway/core/runtime/events/_Xray.java |  135 +
 .../isis/core/runtime/IsisModuleCoreRuntime.java   |   51 -
 .../core/runtime/events/MetamodelEventService.java |   66 -
 .../runtime/events/TransactionEventEmitter.java    |   67 -
 .../org/apache/isis/core/runtime/events/_Xray.java |  134 -
 core/runtimeservices/pom.xml                       |   24 +-
 .../runtimeservices/src/main/java/module-info.java |  100 +-
 .../IsisModuleCoreRuntimeServices.java             |  147 +
 .../bookmarks/BookmarkServiceDefault.java          |  129 +
 .../command/CommandDtoFactoryDefault.java          |  180 ++
 .../command/CommandExecutorServiceDefault.java     |  363 +++
 .../command/SchemaValueMarshallerDefault.java      |  162 +
 .../runtimeservices/email/EmailServiceDefault.java |  249 ++
 .../eventbus/EventBusServiceSpring.java            |   45 +
 .../executor/MemberExecutorServiceDefault.java     |  316 ++
 .../core/runtimeservices/executor/_Xray.java       |  135 +
 .../factory/FactoryServiceDefault.java             |  173 +
 .../homepage/HomePageResolverServiceDefault.java   |   77 +
 .../core/runtimeservices/i18n/po/Block.java        |  153 +
 .../runtimeservices/i18n/po/ContextAndMsgId.java   |  116 +
 .../core/runtimeservices/i18n/po/PoAbstract.java   |   46 +
 .../core/runtimeservices/i18n/po/PoDisabled.java   |   40 +
 .../core/runtimeservices/i18n/po/PoReader.java     |  261 ++
 .../core/runtimeservices/i18n/po/PoWriter.java     |  171 +
 .../i18n/po/TranslationServicePo.java              |  188 ++
 .../i18n/po/TranslationServicePoMenu.java          |  157 +
 .../icons/ObjectIconServiceDefault.java            |  208 ++
 .../interaction/InteractionDtoFactoryDefault.java  |  150 +
 .../runtimeservices/jaxb/JaxbServiceDefault.java   |  130 +
 .../locale/LanguageProviderDefault.java            |   59 +
 .../locale/LocaleChoiceProviderDefault.java        |   78 +
 .../menubars/MenuBarsLoaderServiceDefault.java     |  157 +
 .../menubars/bootstrap/MenuBarsServiceBS.java      |  506 +++
 .../menubars/bootstrap/ServiceAndAction.java       |   42 +
 .../message/MessageServiceDefault.java             |  137 +
 .../PlaceholderRenderServiceDefault.java           |   69 +
 .../publish/CommandPublisherDefault.java           |  109 +
 .../publish/EntityChangesPublisherDefault.java     |  105 +
 .../EntityPropertyChangePublisherDefault.java      |  127 +
 .../publish/ExecutionPublisherDefault.java         |  133 +
 .../publish/LifecycleCallbackNotifier.java         |  147 +
 .../publish/ObjectLifecyclePublisherDefault.java   |  116 +
 .../core/runtimeservices/publish/_Xray.java        |  262 ++
 .../ExceptionRecognizerServiceDefault.java         |  104 +
 .../ExceptionRecognizerForDataAccessException.java |  123 +
 .../repository/RepositoryServiceDefault.java       |  269 ++
 .../routing/RoutingServiceDefault.java             |   57 +
 .../scratchpad/ScratchpadDefault.java              |   72 +
 .../serializing/SerializingAdapterDefault.java     |  134 +
 .../session/InteractionIdGenerator.java            |   34 +
 .../session/InteractionServiceDefault.java         |  453 +++
 .../core/runtimeservices/session/_Xray.java        |  129 +
 .../sitemap/SitemapServiceDefault.java             |  185 ++
 .../runtimeservices/spring/BeanDescriptor.java     |  110 +
 .../core/runtimeservices/spring/ContextBeans.java  |   70 +
 .../runtimeservices/spring/SpringBeansService.java |   73 +
 .../transaction/TransactionServiceSpring.java      |  326 ++
 .../UrlEncodingServiceWithCompression.java         |   52 +
 .../user/ImpersonateMenuAdvisorDefault.java        |   69 +
 .../user/ImpersonatedUserHolderDefault.java        |   69 +
 .../UserCurrentSessionTimeZoneHolderDefault.java   |   65 +
 .../userreg/EmailNotificationServiceDefault.java   |  162 +
 .../userreg/EmailVerificationTemplate.html         |    0
 .../userreg/PasswordResetTemplate.html             |    0
 .../wrapper/WrapperFactoryDefault.java             |  659 ++++
 .../dispatchers/InteractionEventDispatcher.java    |   27 +
 .../InteractionEventDispatcherTypeSafe.java        |   35 +
 .../handlers/CollectionInvocationHandler.java      |   55 +
 .../handlers/DelegatingInvocationHandler.java      |   31 +
 .../DelegatingInvocationHandlerDefault.java        |  115 +
 .../handlers/DomainObjectInvocationHandler.java    |  649 ++++
 .../wrapper/handlers/MapInvocationHandler.java     |   52 +
 .../NonScalarInvocationHandlerAbstract.java        |  118 +
 .../wrapper/handlers/ProxyContextHandler.java      |  105 +
 .../wrapper/proxy/ProxyCreator.java                |   56 +
 .../runtimeservices/xml/XmlServiceDefault.java     |  125 +
 .../xmlsnapshot/XmlSnapshotBuilder.java            |   97 +
 .../xmlsnapshot/XmlSnapshotServiceDefault.java     |  165 +
 .../IsisModuleCoreRuntimeServices.java             |  148 -
 .../bookmarks/BookmarkServiceDefault.java          |  129 -
 .../command/CommandDtoFactoryDefault.java          |  180 --
 .../command/CommandExecutorServiceDefault.java     |  363 ---
 .../command/SchemaValueMarshallerDefault.java      |  162 -
 .../runtimeservices/email/EmailServiceDefault.java |  249 --
 .../eventbus/EventBusServiceSpring.java            |   46 -
 .../executor/MemberExecutorServiceDefault.java     |  316 --
 .../isis/core/runtimeservices/executor/_Xray.java  |  135 -
 .../factory/FactoryServiceDefault.java             |  173 -
 .../homepage/HomePageResolverServiceDefault.java   |   77 -
 .../isis/core/runtimeservices/i18n/po/Block.java   |  153 -
 .../runtimeservices/i18n/po/ContextAndMsgId.java   |  116 -
 .../core/runtimeservices/i18n/po/PoAbstract.java   |   46 -
 .../core/runtimeservices/i18n/po/PoDisabled.java   |   40 -
 .../core/runtimeservices/i18n/po/PoReader.java     |  260 --
 .../core/runtimeservices/i18n/po/PoWriter.java     |  170 -
 .../i18n/po/TranslationServicePo.java              |  188 --
 .../i18n/po/TranslationServicePoMenu.java          |  156 -
 .../icons/ObjectIconServiceDefault.java            |  208 --
 .../interaction/InteractionDtoFactoryDefault.java  |  150 -
 .../runtimeservices/jaxb/JaxbServiceDefault.java   |  130 -
 .../locale/LanguageProviderDefault.java            |   59 -
 .../locale/LocaleChoiceProviderDefault.java        |   78 -
 .../menubars/MenuBarsLoaderServiceDefault.java     |  157 -
 .../menubars/bootstrap/MenuBarsServiceBS.java      |  506 ---
 .../menubars/bootstrap/ServiceAndAction.java       |   42 -
 .../message/MessageServiceDefault.java             |  137 -
 .../PlaceholderRenderServiceDefault.java           |   69 -
 .../publish/CommandPublisherDefault.java           |  109 -
 .../publish/EntityChangesPublisherDefault.java     |  105 -
 .../EntityPropertyChangePublisherDefault.java      |  128 -
 .../publish/ExecutionPublisherDefault.java         |  133 -
 .../publish/LifecycleCallbackNotifier.java         |  147 -
 .../publish/ObjectLifecyclePublisherDefault.java   |  116 -
 .../isis/core/runtimeservices/publish/_Xray.java   |  262 --
 .../ExceptionRecognizerServiceDefault.java         |  104 -
 .../ExceptionRecognizerForDataAccessException.java |  123 -
 .../repository/RepositoryServiceDefault.java       |  269 --
 .../routing/RoutingServiceDefault.java             |   57 -
 .../scratchpad/ScratchpadDefault.java              |   72 -
 .../serializing/SerializingAdapterDefault.java     |  134 -
 .../session/InteractionIdGenerator.java            |   34 -
 .../session/InteractionServiceDefault.java         |  452 ---
 .../isis/core/runtimeservices/session/_Xray.java   |  128 -
 .../sitemap/SitemapServiceDefault.java             |  185 --
 .../runtimeservices/spring/BeanDescriptor.java     |  111 -
 .../core/runtimeservices/spring/ContextBeans.java  |   70 -
 .../runtimeservices/spring/SpringBeansService.java |   73 -
 .../transaction/TransactionServiceSpring.java      |  326 --
 .../UrlEncodingServiceWithCompression.java         |   52 -
 .../user/ImpersonateMenuAdvisorDefault.java        |   69 -
 .../user/ImpersonatedUserHolderDefault.java        |   69 -
 .../UserCurrentSessionTimeZoneHolderDefault.java   |   65 -
 .../userreg/EmailNotificationServiceDefault.java   |  162 -
 .../wrapper/WrapperFactoryDefault.java             |  659 ----
 .../dispatchers/InteractionEventDispatcher.java    |   27 -
 .../InteractionEventDispatcherTypeSafe.java        |   34 -
 .../handlers/CollectionInvocationHandler.java      |   54 -
 .../handlers/DelegatingInvocationHandler.java      |   31 -
 .../DelegatingInvocationHandlerDefault.java        |  114 -
 .../handlers/DomainObjectInvocationHandler.java    |  648 ----
 .../wrapper/handlers/MapInvocationHandler.java     |   51 -
 .../NonScalarInvocationHandlerAbstract.java        |  117 -
 .../wrapper/handlers/ProxyContextHandler.java      |  105 -
 .../wrapper/proxy/ProxyCreator.java                |   56 -
 .../runtimeservices/xml/XmlServiceDefault.java     |  125 -
 .../xmlsnapshot/XmlSnapshotBuilder.java            |   97 -
 .../xmlsnapshot/XmlSnapshotServiceDefault.java     |  165 -
 .../runtimeservices/icons/ObjectIconFallback.png   |  Bin
 .../RuntimeServicesTestAbstract.java               |  117 +
 .../email/EmailServiceDefaultTest_actually.java    |   61 +
 .../email/EmailServiceDefaultTest_notEmpty.java    |   46 +
 .../core/runtimeservices/i18n/po/PoReaderTest.java |  240 ++
 .../i18n/po/PoWriterTest_escape.java               |   45 +
 .../runtimeservices/menubars/bootstrap/Bar.java    |   38 +
 .../menubars/bootstrap/MenuBarsServiceBSTest.java  |  167 +
 ...eptionRecognizerForDataAccessExceptionTest.java |   82 +
 .../runtimeservices/urlencoding/MementosTest.java  |  135 +
 .../urlencoding/UrlEncodingServiceTest.java        |   65 +
 .../wrapper/WrapperFactoryDefaultTest.java         |  138 +
 .../wrapper/dom/claims/Approver.java               |   23 +
 .../wrapper/dom/claims/Claimant.java               |   25 +
 .../wrapper/dom/employees/Employee.java            |  113 +
 .../wrapper/dom/employees/EmployeeRepository.java  |   28 +
 .../dom/employees/EmployeeRepositoryImpl.java      |   34 +
 .../proxy/ProxyCreatorTestUsingCodegenPlugin.java  |  103 +
 .../xmlsnapshot/XmlSnapshotServiceAbstractTest.xml |    0
 .../XmlSnapshotServiceDefault_Test.java            |  106 +
 .../RuntimeServicesTestAbstract.java               |  117 -
 .../email/EmailServiceDefaultTest_actually.java    |   61 -
 .../email/EmailServiceDefaultTest_notEmpty.java    |   45 -
 .../core/runtimeservices/i18n/po/PoReaderTest.java |  238 --
 .../i18n/po/PoWriterTest_escape.java               |   44 -
 .../runtimeservices/menubars/bootstrap/Bar.java    |   38 -
 .../menubars/bootstrap/MenuBarsServiceBSTest.java  |  166 -
 ...eptionRecognizerForDataAccessExceptionTest.java |   81 -
 .../runtimeservices/urlencoding/MementosTest.java  |  134 -
 .../urlencoding/UrlEncodingServiceTest.java        |   64 -
 .../wrapper/WrapperFactoryDefaultTest.java         |  137 -
 .../wrapper/dom/claims/Approver.java               |   23 -
 .../wrapper/dom/claims/Claimant.java               |   25 -
 .../wrapper/dom/employees/Employee.java            |  113 -
 .../wrapper/dom/employees/EmployeeRepository.java  |   28 -
 .../dom/employees/EmployeeRepositoryImpl.java      |   34 -
 .../proxy/ProxyCreatorTestUsingCodegenPlugin.java  |  103 -
 .../XmlSnapshotServiceDefault_Test.java            |  106 -
 core/security/pom.xml                              |   24 +-
 core/security/src/main/java/module-info.java       |   34 +-
 .../core/security/IsisModuleCoreSecurity.java      |   42 +
 .../_testing/InteractionService_forTesting.java    |  143 +
 .../authentication/AuthenticationRequest.java      |   60 +
 .../AuthenticationRequestAbstract.java             |   75 +
 .../AuthenticationRequestPassword.java             |   34 +
 .../security/authentication/Authenticator.java     |   60 +
 .../authentication/InteractionContextFactory.java  |   62 +
 .../AuthenticationRequestLogonFixture.java         |   49 +
 .../login/LoginSuccessHandlerUNUSED.java           |   39 +
 .../authentication/logout/LogoutHandler.java       |   42 +
 .../security/authentication/logout/LogoutMenu.java |  115 +
 .../manager/AuthenticationManager.java             |  214 ++
 .../manager/RegistrationDetails.java               |   23 +
 .../authentication/manager/UserMementoRefiner.java |   71 +
 .../AuthenticationRequestSingleUser.java           |   36 +
 .../standard/AuthenticatorAbstract.java            |   60 +
 .../standard/RandomCodeGenerator.java              |   25 +
 .../standard/RandomCodeGeneratorDefault.java       |   52 +
 .../authentication/standard/Registrar.java         |   34 +
 .../standard/RegistrationDetailsPassword.java      |   31 +
 .../core/security/authorization/Authorizor.java    |   52 +
 .../manager/AuthorizationManager.java              |  133 +
 .../authorization/manager/AuthorizorChooser.java   |   39 +
 .../standard/AuthorizationConstants.java           |   31 +
 .../causeway/core/security/util/XrayUtil.java      |   96 +
 .../isis/core/security/IsisModuleCoreSecurity.java |   43 -
 .../_testing/InteractionService_forTesting.java    |  142 -
 .../authentication/AuthenticationRequest.java      |   60 -
 .../AuthenticationRequestAbstract.java             |   76 -
 .../AuthenticationRequestPassword.java             |   34 -
 .../security/authentication/Authenticator.java     |   60 -
 .../authentication/InteractionContextFactory.java  |   62 -
 .../AuthenticationRequestLogonFixture.java         |   48 -
 .../login/LoginSuccessHandlerUNUSED.java           |   39 -
 .../authentication/logout/LogoutHandler.java       |   42 -
 .../security/authentication/logout/LogoutMenu.java |  114 -
 .../manager/AuthenticationManager.java             |  214 --
 .../manager/RegistrationDetails.java               |   23 -
 .../authentication/manager/UserMementoRefiner.java |   71 -
 .../AuthenticationRequestSingleUser.java           |   36 -
 .../standard/AuthenticatorAbstract.java            |   60 -
 .../standard/RandomCodeGenerator.java              |   25 -
 .../standard/RandomCodeGeneratorDefault.java       |   52 -
 .../authentication/standard/Registrar.java         |   34 -
 .../standard/RegistrationDetailsPassword.java      |   31 -
 .../core/security/authorization/Authorizor.java    |   52 -
 .../manager/AuthorizationManager.java              |  133 -
 .../authorization/manager/AuthorizorChooser.java   |   39 -
 .../standard/AuthorizationConstants.java           |   31 -
 .../apache/isis/core/security/util/XrayUtil.java   |   95 -
 .../security/AuthenticatorsForTesting.java         |   75 +
 .../security/EncodabilityContractTest.java         |   91 +
 .../AuthenticationManager_authenticators_Test.java |   74 +
 .../SimpleSessionEncodabilityNoRolesTest.java      |   34 +
 .../SimpleSessionEncodabilityTestAbstract.java     |   46 +
 .../SimpleSessionEncodabilityWithRolesTest.java    |   35 +
 ...rdAuthenticationManager_AuthenticationTest.java |   67 +
 .../isis/security/AuthenticatorsForTesting.java    |   75 -
 .../isis/security/EncodabilityContractTest.java    |   92 -
 .../AuthenticationManager_authenticators_Test.java |   75 -
 .../SimpleSessionEncodabilityNoRolesTest.java      |   34 -
 .../SimpleSessionEncodabilityTestAbstract.java     |   46 -
 .../SimpleSessionEncodabilityWithRolesTest.java    |   35 -
 ...rdAuthenticationManager_AuthenticationTest.java |   68 -
 core/transaction/pom.xml                           |   20 +-
 core/transaction/src/main/java/module-info.java    |   18 +-
 .../transaction/IsisModuleCoreTransaction.java     |   33 +
 .../changetracking/EntityChangeTracker.java        |   98 +
 .../changetracking/EntityChangesPublisher.java     |   38 +
 .../EntityPropertyChangePublisher.java             |   40 +
 .../changetracking/HasEnlistedEntityChanges.java   |   29 +
 .../changetracking/events/PostStoreEvent.java      |   32 +
 .../changetracking/events/PreStoreEvent.java       |   32 +
 .../changetracking/events/TimestampService.java    |   61 +
 .../events/TransactionAfterCompletionEvent.java    |   55 +
 .../events/TransactionBeforeCompletionEvent.java   |   32 +
 .../transaction/IsisModuleCoreTransaction.java     |   34 -
 .../changetracking/EntityChangeTracker.java        |   98 -
 .../changetracking/EntityChangesPublisher.java     |   38 -
 .../EntityPropertyChangePublisher.java             |   40 -
 .../changetracking/HasEnlistedEntityChanges.java   |   29 -
 .../changetracking/events/PostStoreEvent.java      |   32 -
 .../changetracking/events/PreStoreEvent.java       |   32 -
 .../changetracking/events/TimestampService.java    |   61 -
 .../events/TransactionAfterCompletionEvent.java    |   55 -
 .../events/TransactionBeforeCompletionEvent.java   |   32 -
 .../PreAndPostValues_shouldAudit_Test.java         |   68 +
 .../PreAndPostValues_shouldAudit_Test.java         |   68 -
 core/webapp/pom.xml                                |   28 +-
 core/webapp/src/main/java/module-info.java         |   34 +-
 .../causeway/core/webapp/IsisModuleCoreWebapp.java |   80 +
 .../confmenu/ConfigurationViewServiceDefault.java  |  231 ++
 .../HealthIndicatorUsingHealthCheckService.java    |   74 +
 .../KeyValueStoreUsingHttpSession.java             |   90 +
 .../causeway/core/webapp/modules/WebModule.java    |  103 +
 .../core/webapp/modules/WebModuleAbstract.java     |   90 +
 .../core/webapp/modules/WebModuleContext.java      |  121 +
 .../modules/logonlog/IsisLogOnExceptionFilter.java |   97 +
 .../logonlog/WebModuleLogOnExceptionLogger.java    |   78 +
 .../TemplateResourceCachingFilter.java             |  219 ++
 .../templresources/TemplateResourceServlet.java    |  168 +
 .../templresources/WebModuleTemplateResources.java |   85 +
 .../core/webapp/modules/templresources/_Util.java  |   48 +
 .../core/webapp/routing/ForwardingServlet.java     |   60 +
 .../core/webapp/routing/RedirectFilter.java        |   60 +
 .../core/webapp/routing/RedirectServlet.java       |   55 +
 .../core/webapp/routing/RedirectToDocsFilter.java  |  110 +
 .../webappctx/IsisWebAppContextInitializer.java    |  134 +
 .../isis/core/webapp/IsisModuleCoreWebapp.java     |   80 -
 .../confmenu/ConfigurationViewServiceDefault.java  |  231 --
 .../HealthIndicatorUsingHealthCheckService.java    |   74 -
 .../KeyValueStoreUsingHttpSession.java             |   90 -
 .../apache/isis/core/webapp/modules/WebModule.java |  103 -
 .../core/webapp/modules/WebModuleAbstract.java     |   89 -
 .../isis/core/webapp/modules/WebModuleContext.java |  120 -
 .../modules/logonlog/IsisLogOnExceptionFilter.java |   97 -
 .../logonlog/WebModuleLogOnExceptionLogger.java    |   78 -
 .../TemplateResourceCachingFilter.java             |  219 --
 .../templresources/TemplateResourceServlet.java    |  168 -
 .../templresources/WebModuleTemplateResources.java |   85 -
 .../core/webapp/modules/templresources/_Util.java  |   48 -
 .../core/webapp/routing/ForwardingServlet.java     |   60 -
 .../isis/core/webapp/routing/RedirectFilter.java   |   60 -
 .../isis/core/webapp/routing/RedirectServlet.java  |   55 -
 .../core/webapp/routing/RedirectToDocsFilter.java  |  110 -
 .../webappctx/IsisWebAppContextInitializer.java    |  134 -
 4644 files changed, 225252 insertions(+), 224937 deletions(-)

diff --git a/antora/pom.xml b/antora/pom.xml
index a67ea55a12..0348663b57 100644
--- a/antora/pom.xml
+++ b/antora/pom.xml
@@ -15,8 +15,8 @@
 	<modelVersion>4.0.0</modelVersion>
 
 	<parent>
-		<groupId>org.apache.isis</groupId>
-		<artifactId>isis-bom</artifactId>
+		<groupId>org.apache.causeway</groupId>
+		<artifactId>causeway-bom</artifactId>
 		<version>2.0.0-SNAPSHOT</version>
 		<relativePath>../bom/pom.xml</relativePath>
 	</parent>
@@ -25,7 +25,7 @@
 
 	<packaging>pom</packaging>
 
-	<name>Apache Isis - Antora</name>
+	<name>Apache Causeway - Antora</name>
 
 	<build>
 		<plugins>
diff --git a/api/applib/pom.xml b/api/applib/pom.xml
index d1edc7c419..e7356674cd 100644
--- a/api/applib/pom.xml
+++ b/api/applib/pom.xml
@@ -21,23 +21,23 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache.isis.core</groupId>
-        <artifactId>isis-core</artifactId>
+        <groupId>org.apache.causeway.core</groupId>
+        <artifactId>causeway-core</artifactId>
         <version>2.0.0-SNAPSHOT</version>
         <relativePath>../../core/pom.xml</relativePath>
     </parent>
 
-    <artifactId>isis-applib</artifactId>
+    <artifactId>causeway-applib</artifactId>
 
-    <name>Apache Isis Api - AppLib</name>
+    <name>Apache Causeway Api - AppLib</name>
     <description>
         Isis application library, defining annotations and utilities for the
         default (Java) programming model.
     </description>
 
     <properties>
-        <jar-plugin.automaticModuleName>org.apache.isis.applib</jar-plugin.automaticModuleName>
-        <git-plugin.propertiesDir>org/apache/isis/applib</git-plugin.propertiesDir>
+        <jar-plugin.automaticModuleName>org.apache.causeway.applib</jar-plugin.automaticModuleName>
+        <git-plugin.propertiesDir>org/apache/causeway/applib</git-plugin.propertiesDir>
     </properties>
 
     <build>
@@ -72,20 +72,20 @@
 
 		<!-- JDK11+ SUPPORT AND JEE API -->
 		<dependency>
-			<groupId>org.apache.isis.core</groupId>
-			<artifactId>isis-jdk-supplemental</artifactId>
+			<groupId>org.apache.causeway.core</groupId>
+			<artifactId>causeway-jdk-supplemental</artifactId>
 			<type>pom</type>
 		</dependency>
 
         <dependency>
-            <groupId>org.apache.isis.commons</groupId>
-			<artifactId>isis-commons</artifactId>
+            <groupId>org.apache.causeway.commons</groupId>
+			<artifactId>causeway-commons</artifactId>
             <scope>provided</scope>
         </dependency>
 
         <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-schema</artifactId>
+            <groupId>org.apache.causeway.core</groupId>
+            <artifactId>causeway-schema</artifactId>
         </dependency>
         
      	<!-- provides @Digits -->
@@ -103,8 +103,8 @@
         <!-- TEST -->
 
 		<dependency>
-			<groupId>org.apache.isis.core</groupId>
-			<artifactId>isis-core-internaltestsupport</artifactId>
+			<groupId>org.apache.causeway.core</groupId>
+			<artifactId>causeway-core-internaltestsupport</artifactId>
 			<scope>test</scope>
 		</dependency>
 
diff --git a/api/applib/src/main/java/module-info.java b/api/applib/src/main/java/module-info.java
index 5bc777efd5..7385177345 100644
--- a/api/applib/src/main/java/module-info.java
+++ b/api/applib/src/main/java/module-info.java
@@ -16,110 +16,110 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-module org.apache.isis.applib {
-    exports org.apache.isis.applib;
-    exports org.apache.isis.applib.annotation;
-    exports org.apache.isis.applib.client;
-    exports org.apache.isis.applib.clock;
-    exports org.apache.isis.applib.domain;
-    exports org.apache.isis.applib.events.domain;
-    exports org.apache.isis.applib.events.lifecycle;
-    exports org.apache.isis.applib.events.metamodel;
-    exports org.apache.isis.applib.events.ui;
-    exports org.apache.isis.applib.events;
-    exports org.apache.isis.applib.exceptions.recoverable;
-    exports org.apache.isis.applib.exceptions.unrecoverable;
-    exports org.apache.isis.applib.exceptions;
-    exports org.apache.isis.applib.graph.tree;
-    exports org.apache.isis.applib.graph;
-    exports org.apache.isis.applib.id;
-    exports org.apache.isis.applib.jaxb;
-    exports org.apache.isis.applib.layout.component;
-    exports org.apache.isis.applib.layout.grid.bootstrap;
-    exports org.apache.isis.applib.layout.grid;
-    exports org.apache.isis.applib.layout.links;
-    exports org.apache.isis.applib.layout.menubars.bootstrap;
-    exports org.apache.isis.applib.layout.menubars;
-    exports org.apache.isis.applib.layout;
-    exports org.apache.isis.applib.locale;
-    exports org.apache.isis.applib.mixins.dto;
-    exports org.apache.isis.applib.mixins.layout;
-    exports org.apache.isis.applib.mixins.metamodel;
-    exports org.apache.isis.applib.mixins.rest;
-    exports org.apache.isis.applib.mixins.security;
-    exports org.apache.isis.applib.mixins.system;
-    exports org.apache.isis.applib.mixins.updates;
-    exports org.apache.isis.applib.query;
-    exports org.apache.isis.applib.services.acceptheader;
-    exports org.apache.isis.applib.services.appfeat;
-    exports org.apache.isis.applib.services.appfeatui;
-    exports org.apache.isis.applib.services.bookmark.idstringifiers;
-    exports org.apache.isis.applib.services.bookmark;
-    exports org.apache.isis.applib.services.bookmarkui;
-    exports org.apache.isis.applib.services.clock;
-    exports org.apache.isis.applib.services.command;
-    exports org.apache.isis.applib.services.commanddto.conmap;
-    exports org.apache.isis.applib.services.commanddto.processor.spi;
-    exports org.apache.isis.applib.services.commanddto.processor;
-    exports org.apache.isis.applib.services.commanddto;
-    exports org.apache.isis.applib.services.confview;
-    exports org.apache.isis.applib.services.conmap;
-    exports org.apache.isis.applib.services.email;
-    exports org.apache.isis.applib.services.error;
-    exports org.apache.isis.applib.services.eventbus;
-    exports org.apache.isis.applib.services.exceprecog;
-    exports org.apache.isis.applib.services.factory;
-    exports org.apache.isis.applib.services.grid;
-    exports org.apache.isis.applib.services.health;
-    exports org.apache.isis.applib.services.hint;
-    exports org.apache.isis.applib.services.homepage;
-    exports org.apache.isis.applib.services.i18n;
-    exports org.apache.isis.applib.services.iactn;
-    exports org.apache.isis.applib.services.iactnlayer;
-    exports org.apache.isis.applib.services.inject;
-    exports org.apache.isis.applib.services.jaxb;
-    exports org.apache.isis.applib.services.keyvaluestore;
-    exports org.apache.isis.applib.services.layout;
-    exports org.apache.isis.applib.services.linking;
-    exports org.apache.isis.applib.services.locale;
-    exports org.apache.isis.applib.services.menu;
-    exports org.apache.isis.applib.services.message;
-    exports org.apache.isis.applib.services.metamodel;
-    exports org.apache.isis.applib.services.metrics;
-    exports org.apache.isis.applib.services.placeholder;
-    exports org.apache.isis.applib.services.publishing.log;
-    exports org.apache.isis.applib.services.publishing.spi;
-    exports org.apache.isis.applib.services.queryresultscache;
-    exports org.apache.isis.applib.services.registry;
-    exports org.apache.isis.applib.services.repository;
-    exports org.apache.isis.applib.services.routing;
-    exports org.apache.isis.applib.services.scratchpad;
-    exports org.apache.isis.applib.services.session;
-    exports org.apache.isis.applib.services.sitemap;
-    exports org.apache.isis.applib.services.sudo;
-    exports org.apache.isis.applib.services.swagger;
-    exports org.apache.isis.applib.services.tablecol;
-    exports org.apache.isis.applib.services.title;
-    exports org.apache.isis.applib.services.urlencoding;
-    exports org.apache.isis.applib.services.user;
-    exports org.apache.isis.applib.services.userreg.events;
-    exports org.apache.isis.applib.services.userreg;
-    exports org.apache.isis.applib.services.userui;
-    exports org.apache.isis.applib.services.wrapper.callable;
-    exports org.apache.isis.applib.services.wrapper.control;
-    exports org.apache.isis.applib.services.wrapper.events;
-    exports org.apache.isis.applib.services.wrapper.listeners;
-    exports org.apache.isis.applib.services.wrapper;
-    exports org.apache.isis.applib.services.xactn;
-    exports org.apache.isis.applib.services.xml;
-    exports org.apache.isis.applib.services.xmlsnapshot;
-    exports org.apache.isis.applib.snapshot;
-    exports org.apache.isis.applib.spec;
-    exports org.apache.isis.applib.types;
-    exports org.apache.isis.applib.util.schema;
-    exports org.apache.isis.applib.util;
-    exports org.apache.isis.applib.value;
-    exports org.apache.isis.applib.value.semantics;
+module org.apache.causeway.applib {
+    exports org.apache.causeway.applib;
+    exports org.apache.causeway.applib.annotation;
+    exports org.apache.causeway.applib.client;
+    exports org.apache.causeway.applib.clock;
+    exports org.apache.causeway.applib.domain;
+    exports org.apache.causeway.applib.events.domain;
+    exports org.apache.causeway.applib.events.lifecycle;
+    exports org.apache.causeway.applib.events.metamodel;
+    exports org.apache.causeway.applib.events.ui;
+    exports org.apache.causeway.applib.events;
+    exports org.apache.causeway.applib.exceptions.recoverable;
+    exports org.apache.causeway.applib.exceptions.unrecoverable;
+    exports org.apache.causeway.applib.exceptions;
+    exports org.apache.causeway.applib.graph.tree;
+    exports org.apache.causeway.applib.graph;
+    exports org.apache.causeway.applib.id;
+    exports org.apache.causeway.applib.jaxb;
+    exports org.apache.causeway.applib.layout.component;
+    exports org.apache.causeway.applib.layout.grid.bootstrap;
+    exports org.apache.causeway.applib.layout.grid;
+    exports org.apache.causeway.applib.layout.links;
+    exports org.apache.causeway.applib.layout.menubars.bootstrap;
+    exports org.apache.causeway.applib.layout.menubars;
+    exports org.apache.causeway.applib.layout;
+    exports org.apache.causeway.applib.locale;
+    exports org.apache.causeway.applib.mixins.dto;
+    exports org.apache.causeway.applib.mixins.layout;
+    exports org.apache.causeway.applib.mixins.metamodel;
+    exports org.apache.causeway.applib.mixins.rest;
+    exports org.apache.causeway.applib.mixins.security;
+    exports org.apache.causeway.applib.mixins.system;
+    exports org.apache.causeway.applib.mixins.updates;
+    exports org.apache.causeway.applib.query;
+    exports org.apache.causeway.applib.services.acceptheader;
+    exports org.apache.causeway.applib.services.appfeat;
+    exports org.apache.causeway.applib.services.appfeatui;
+    exports org.apache.causeway.applib.services.bookmark.idstringifiers;
+    exports org.apache.causeway.applib.services.bookmark;
+    exports org.apache.causeway.applib.services.bookmarkui;
+    exports org.apache.causeway.applib.services.clock;
+    exports org.apache.causeway.applib.services.command;
+    exports org.apache.causeway.applib.services.commanddto.conmap;
+    exports org.apache.causeway.applib.services.commanddto.processor.spi;
+    exports org.apache.causeway.applib.services.commanddto.processor;
+    exports org.apache.causeway.applib.services.commanddto;
+    exports org.apache.causeway.applib.services.confview;
+    exports org.apache.causeway.applib.services.conmap;
+    exports org.apache.causeway.applib.services.email;
+    exports org.apache.causeway.applib.services.error;
+    exports org.apache.causeway.applib.services.eventbus;
+    exports org.apache.causeway.applib.services.exceprecog;
+    exports org.apache.causeway.applib.services.factory;
+    exports org.apache.causeway.applib.services.grid;
+    exports org.apache.causeway.applib.services.health;
+    exports org.apache.causeway.applib.services.hint;
+    exports org.apache.causeway.applib.services.homepage;
+    exports org.apache.causeway.applib.services.i18n;
+    exports org.apache.causeway.applib.services.iactn;
+    exports org.apache.causeway.applib.services.iactnlayer;
+    exports org.apache.causeway.applib.services.inject;
+    exports org.apache.causeway.applib.services.jaxb;
+    exports org.apache.causeway.applib.services.keyvaluestore;
+    exports org.apache.causeway.applib.services.layout;
+    exports org.apache.causeway.applib.services.linking;
+    exports org.apache.causeway.applib.services.locale;
+    exports org.apache.causeway.applib.services.menu;
+    exports org.apache.causeway.applib.services.message;
+    exports org.apache.causeway.applib.services.metamodel;
+    exports org.apache.causeway.applib.services.metrics;
+    exports org.apache.causeway.applib.services.placeholder;
+    exports org.apache.causeway.applib.services.publishing.log;
+    exports org.apache.causeway.applib.services.publishing.spi;
+    exports org.apache.causeway.applib.services.queryresultscache;
+    exports org.apache.causeway.applib.services.registry;
+    exports org.apache.causeway.applib.services.repository;
+    exports org.apache.causeway.applib.services.routing;
+    exports org.apache.causeway.applib.services.scratchpad;
+    exports org.apache.causeway.applib.services.session;
+    exports org.apache.causeway.applib.services.sitemap;
+    exports org.apache.causeway.applib.services.sudo;
+    exports org.apache.causeway.applib.services.swagger;
+    exports org.apache.causeway.applib.services.tablecol;
+    exports org.apache.causeway.applib.services.title;
+    exports org.apache.causeway.applib.services.urlencoding;
+    exports org.apache.causeway.applib.services.user;
+    exports org.apache.causeway.applib.services.userreg.events;
+    exports org.apache.causeway.applib.services.userreg;
+    exports org.apache.causeway.applib.services.userui;
+    exports org.apache.causeway.applib.services.wrapper.callable;
+    exports org.apache.causeway.applib.services.wrapper.control;
+    exports org.apache.causeway.applib.services.wrapper.events;
+    exports org.apache.causeway.applib.services.wrapper.listeners;
+    exports org.apache.causeway.applib.services.wrapper;
+    exports org.apache.causeway.applib.services.xactn;
+    exports org.apache.causeway.applib.services.xml;
+    exports org.apache.causeway.applib.services.xmlsnapshot;
+    exports org.apache.causeway.applib.snapshot;
+    exports org.apache.causeway.applib.spec;
+    exports org.apache.causeway.applib.types;
+    exports org.apache.causeway.applib.util.schema;
+    exports org.apache.causeway.applib.util;
+    exports org.apache.causeway.applib.value;
+    exports org.apache.causeway.applib.value.semantics;
 
     requires com.fasterxml.jackson.core;
     requires com.fasterxml.jackson.databind;
@@ -134,8 +134,8 @@ module org.apache.isis.applib {
     requires transitive java.xml;
     requires transitive java.inject;
     requires lombok;
-    requires org.apache.isis.commons;
-    requires transitive org.apache.isis.schema;
+    requires org.apache.causeway.commons;
+    requires transitive org.apache.causeway.schema;
     requires org.apache.logging.log4j;
     requires transitive org.joda.time;
     requires transitive spring.beans;
@@ -144,12 +144,12 @@ module org.apache.isis.applib {
     requires spring.tx;
 
     // JAXB viewmodels
-    opens org.apache.isis.applib.layout.component;
-    opens org.apache.isis.applib.layout.grid.bootstrap;
-    opens org.apache.isis.applib.layout.grid;
-    opens org.apache.isis.applib.layout.links;
-    opens org.apache.isis.applib.layout.menubars.bootstrap;
-    opens org.apache.isis.applib.layout.menubars;
+    opens org.apache.causeway.applib.layout.component;
+    opens org.apache.causeway.applib.layout.grid.bootstrap;
+    opens org.apache.causeway.applib.layout.grid;
+    opens org.apache.causeway.applib.layout.links;
+    opens org.apache.causeway.applib.layout.menubars.bootstrap;
+    opens org.apache.causeway.applib.layout.menubars;
 
 
 }
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/Identifier.java b/api/applib/src/main/java/org/apache/causeway/applib/Identifier.java
new file mode 100644
index 0000000000..1a4fa00117
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/Identifier.java
@@ -0,0 +1,333 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib;
+
+import java.io.Serializable;
+import java.lang.reflect.Method;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import org.apache.causeway.commons.collections.Can;
+import org.apache.causeway.commons.internal.base._Strings;
+import org.apache.causeway.commons.internal.reflection._Reflect;
+
+import org.apache.causeway.applib.id.HasLogicalType;
+import org.apache.causeway.applib.id.LogicalType;
+import org.apache.causeway.applib.services.i18n.HasTranslationContext;
+import org.apache.causeway.applib.services.i18n.TranslationContext;
+import org.apache.causeway.applib.services.i18n.TranslationService;
+
+import lombok.Getter;
+import lombok.NonNull;
+import lombok.val;
+
+/**
+ * Combines {@link LogicalType} and member identification (from properties, collections or actions),
+ * to a fully qualified <i>feature</i> identifier.
+ * <p>
+ * For {@link Identifier}(s) of type {@link Identifier.Type#CLASS} member information is
+ * left empty.
+ *
+ * @since 1.x revised for 2.0 {@index}
+ * @see LogicalType
+ */
+public class Identifier
+implements
+    Comparable<Identifier>,
+    HasLogicalType,
+    HasTranslationContext,
+    Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * What type of feature this identifies.
+     */
+    public static enum Type {
+        /**
+         * A <i>Value-type</i> or <i>Domain Object</i>.
+         */
+        CLASS,
+        /**
+         * <i>Action</i> either declared or mixed in.
+         */
+        ACTION,
+        /**
+         * <i>Action Parameter</i>, also has a non-negative {@link #parameterIndex}.
+         */
+        ACTION_PARAMETER,
+        /**
+         * <i>One to One Association (Property)</i> either declared or mixed in.
+         */
+        PROPERTY,
+        /**
+         * <i>One to Many Association (Collection)</i> either declared or mixed in.
+         */
+        COLLECTION
+        ;
+        public boolean isClass() { return this == CLASS; }
+        public boolean isAction() { return this == ACTION; }
+        public boolean isActionParameter() { return this == ACTION_PARAMETER; }
+        public boolean isProperty() { return this == PROPERTY;}
+        public boolean isCollection() { return this == COLLECTION;}
+        public boolean isPropertyOrCollection() { return this == PROPERTY || this == COLLECTION;}
+    }
+
+    // -- FACTORY METHODS
+
+    public static Identifier classIdentifier(final LogicalType typeIdentifier) {
+        return new Identifier(typeIdentifier, "", Can.empty(), Type.CLASS);
+    }
+
+    public static Identifier propertyIdentifier(
+            final LogicalType typeIdentifier,
+            final String propertyOrCollectionName) {
+        return new Identifier(typeIdentifier, propertyOrCollectionName, Can.empty(),
+                Type.PROPERTY);
+    }
+
+    public static Identifier collectionIdentifier(
+            final LogicalType typeIdentifier,
+            final String propertyOrCollectionName) {
+        return new Identifier(typeIdentifier, propertyOrCollectionName, Can.empty(),
+                Type.COLLECTION);
+    }
+
+
+    /** for reporting orphaned methods */
+    public static Identifier methodIdentifier(
+            final LogicalType typeIdentifier,
+            final Method method) {
+        return actionIdentifier(typeIdentifier, _Reflect.methodToShortString(method), method.getParameterTypes());
+    }
+
+    public static Identifier actionIdentifier(
+            final LogicalType typeIdentifier,
+            final String actionName,
+            final Class<?>... parameterClasses) {
+        return actionIdentifier(typeIdentifier, actionName, classNamesOf(parameterClasses));
+    }
+
+    public static Identifier actionIdentifier(
+            final LogicalType typeIdentifier,
+            final String actionName,
+            final Can<String> parameterClassNames) {
+        return new Identifier(typeIdentifier, actionName, parameterClassNames, Type.ACTION);
+    }
+
+    // -- INSTANCE FIELDS
+
+    @Getter(onMethod_ = {@Override}) private final LogicalType logicalType;
+
+    @Getter private final String className;
+
+    @Getter private final String memberLogicalName;
+
+    /**
+     * Optional. Used for <i>Action Parameters</i>, otherwise {@code -1}.
+     */
+    @Getter private final int parameterIndex;
+
+    @Getter private final Can<String> memberParameterClassNames;
+
+    @Getter private final Type type;
+
+    /**
+     * Fully qualified Identity String. (class-name + member-logical-name + param-class-names)
+     */
+    @Getter private final String fullIdentityString;
+
+    /**
+     * Member Identity String (class omitted), including parameters if any.
+     */
+    @Getter private final String memberNameAndParameterClassNamesIdentityString;
+
+    /**
+     * Context to be used for i18n translation.
+     * @see TranslationService
+     */
+    @Getter(onMethod_ = {@Override}) private final TranslationContext translationContext;
+
+    // -- CONSTRUCTION
+
+    private Identifier(
+            final LogicalType logicalType,
+            final String memberLogicalName,
+            final Can<String> memberParameterClassNames,
+            final Type type) {
+        this(logicalType, memberLogicalName, memberParameterClassNames, type, -1);
+    }
+
+    private Identifier(
+            final LogicalType logicalType,
+            final String memberLogicalName,
+            final Can<String> memberParameterClassNames,
+            final Type type,
+            final int parameterIndex) {
+
+        this.logicalType = logicalType;
+        this.className = logicalType.getClassName();
+        this.memberLogicalName = memberLogicalName;
+        this.memberParameterClassNames = memberParameterClassNames;
+        this.type = type;
+        this.parameterIndex = parameterIndex;
+
+        this.memberNameAndParameterClassNamesIdentityString =
+                memberLogicalName + (type.isAction()
+                        ? "(" + memberParameterClassNames.stream().collect(Collectors.joining(",")) + ")"
+                        : "");
+
+        this.translationContext = TranslationContext.named(
+                className + "#" + memberLogicalName + (type.isAction() ? "()" : ""));
+
+        this.fullIdentityString = _Strings.isEmpty(memberLogicalName)
+                ? className
+                : className + "#" + memberNameAndParameterClassNamesIdentityString;
+    }
+
+    // -- WITHERS
+
+    public Identifier withParameterIndex(final int parameterIndex) {
+        return new Identifier(
+                logicalType, memberLogicalName, memberParameterClassNames, Type.ACTION_PARAMETER, parameterIndex);
+    }
+
+    // -- LOGICAL ID
+
+    public String getLogicalIdentityString(final @NonNull String delimiter) {
+        return getLogicalTypeName()
+                + delimiter
+                + memberNameAndParameterClassNamesIdentityString;
+    }
+
+    // -- NATURAL NAMES
+
+    public String getClassNaturalName() {
+        val className = getClassName();
+        val isolatedName = className.substring(className.lastIndexOf('.') + 1);
+        return naturalName(isolatedName);
+    }
+
+    public String getMemberNaturalName() {
+        return naturalName(memberLogicalName);
+    }
+
+    public Can<String> getMemberParameterClassNaturalNames() {
+        return naturalNames(memberParameterClassNames);
+    }
+
+    // -- OBJECT CONTRACT
+
+    @Override
+    public int compareTo(final Identifier other) {
+        return toString().compareTo(other.toString());
+    }
+
+    @Override
+    public boolean equals(final Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj instanceof Identifier) {
+            return isEqualTo((Identifier) obj);
+        }
+        return false;
+    }
+
+    public boolean isEqualTo(final Identifier other) {
+        return Objects.equals(this.className, other.className)
+                && Objects.equals(this.memberLogicalName, other.memberLogicalName)
+                && this.memberParameterClassNames.equals(other.memberParameterClassNames)
+                && this.parameterIndex == other.parameterIndex;
+    }
+
+    @Override
+    public int hashCode() {
+        return fullIdentityString.hashCode();
+    }
+
+    @Override
+    public String toString() {
+        return parameterIndex>=0
+                ? String.format("%s[%d]", fullIdentityString, parameterIndex)
+                : fullIdentityString;
+    }
+
+    // -- HELPER
+
+    private static Can<String> classNamesOf(final Class<?>[] parameterClasses) {
+        return Can.ofArray(parameterClasses)
+        .map(Class::getName);
+    }
+
+    private static final char SPACE = ' ';
+
+    /*
+     * Returns a word spaced version of the specified name, so there are spaces
+     * between the words, where each word starts with a capital letter. E.g.,
+     * "NextAvailableDate" is returned as "Next Available Date".
+     */
+    private static String naturalName(final String name) {
+        final int length = name.length();
+
+        if (length <= 1) {
+            return name.toUpperCase();// ensure first character is upper case
+        }
+
+        final StringBuffer naturalName = new StringBuffer(length);
+
+        char previousCharacter;
+        char character = Character.toUpperCase(name.charAt(0));// ensure first
+        // character is
+        // upper case
+        naturalName.append(character);
+        char nextCharacter = name.charAt(1);
+
+        for (int pos = 2; pos < length; pos++) {
+            previousCharacter = character;
+            character = nextCharacter;
+            nextCharacter = name.charAt(pos);
+
+            if (previousCharacter != SPACE) {
+                if (Character.isUpperCase(character)
+                        && !Character.isUpperCase(previousCharacter)) {
+                    naturalName.append(SPACE);
+                }
+                if (Character.isUpperCase(character)
+                        && Character.isLowerCase(nextCharacter)
+                        && Character.isUpperCase(previousCharacter)) {
+                    naturalName.append(SPACE);
+                }
+                if (Character.isDigit(character)
+                        && !Character.isDigit(previousCharacter)) {
+                    naturalName.append(SPACE);
+                }
+            }
+            naturalName.append(character);
+        }
+        naturalName.append(nextCharacter);
+        return naturalName.toString();
+    }
+
+    private static Can<String> naturalNames(final Can<String> names) {
+        return names.map(Identifier::naturalName);
+    }
+
+}
+
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/IsisModuleApplib.java b/api/applib/src/main/java/org/apache/causeway/applib/IsisModuleApplib.java
new file mode 100644
index 0000000000..36f13ac00f
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/IsisModuleApplib.java
@@ -0,0 +1,148 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib;
+
+import org.apache.causeway.applib.domain.DomainObjectList;
+import org.apache.causeway.applib.mixins.dto.Dto_downloadXml;
+import org.apache.causeway.applib.mixins.dto.Dto_downloadXsd;
+import org.apache.causeway.applib.mixins.layout.Object_downloadLayoutXml;
+import org.apache.causeway.applib.mixins.metamodel.Object_downloadMetamodelXml;
+import org.apache.causeway.applib.mixins.metamodel.Object_rebuildMetamodel;
+import org.apache.causeway.applib.mixins.rest.Object_openRestApi;
+import org.apache.causeway.applib.services.appfeatui.ApplicationFeatureMenu;
+import org.apache.causeway.applib.services.appfeatui.ApplicationNamespace;
+import org.apache.causeway.applib.services.appfeatui.ApplicationType;
+import org.apache.causeway.applib.services.appfeatui.ApplicationTypeAction;
+import org.apache.causeway.applib.services.appfeatui.ApplicationTypeCollection;
+import org.apache.causeway.applib.services.appfeatui.ApplicationTypeMember;
+import org.apache.causeway.applib.services.appfeatui.ApplicationTypeProperty;
+import org.apache.causeway.applib.services.bookmark.BookmarkHolder_lookup;
+import org.apache.causeway.applib.services.bookmark.BookmarkHolder_object;
+import org.apache.causeway.applib.services.clock.ClockService;
+import org.apache.causeway.applib.services.commanddto.conmap.ContentMappingServiceForCommandDto;
+import org.apache.causeway.applib.services.commanddto.conmap.ContentMappingServiceForCommandsDto;
+import org.apache.causeway.applib.services.commanddto.processor.spi.CommandDtoProcessorServiceIdentity;
+import org.apache.causeway.applib.services.confview.ConfigurationMenu;
+import org.apache.causeway.applib.services.confview.ConfigurationProperty;
+import org.apache.causeway.applib.services.layout.LayoutServiceMenu;
+import org.apache.causeway.applib.services.metamodel.MetaModelServiceMenu;
+import org.apache.causeway.applib.services.queryresultscache.QueryResultsCache;
+import org.apache.causeway.applib.services.session.SessionLogger;
+import org.apache.causeway.applib.services.sitemap.SitemapServiceMenu;
+import org.apache.causeway.applib.services.sudo.SudoService;
+import org.apache.causeway.applib.services.user.ImpersonateMenu;
+import org.apache.causeway.applib.services.user.ImpersonateStopMenu;
+import org.apache.causeway.applib.services.user.RoleMemento;
+import org.apache.causeway.applib.services.user.UserMemento;
+import org.apache.causeway.applib.services.user.UserService;
+import org.apache.causeway.applib.services.userui.UserMenu;
+import org.apache.causeway.schema.IsisModuleSchema;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+/**
+ * @since 2.0 {@index}
+ */
+@Configuration
+@Import({
+    // Modules
+    IsisModuleSchema.class,
+
+    // -- ViewModels
+    ApplicationNamespace.class,
+    ApplicationType.class,
+    ApplicationTypeAction.class,
+    ApplicationTypeCollection.class,
+    ApplicationTypeMember.class,
+    ApplicationTypeProperty.class,
+
+    // @DomainObject(s)
+    ConfigurationProperty.class,
+    DomainObjectList.class,
+    RoleMemento.class,
+    UserMemento.class,
+
+    // @DomainService(s)
+    ClockService.class,
+    ConfigurationMenu.class,
+    LayoutServiceMenu.class,
+    SitemapServiceMenu.class,
+    ImpersonateMenu.class,
+    ImpersonateStopMenu.class,
+    MetaModelServiceMenu.class,
+    QueryResultsCache.class,
+    ApplicationFeatureMenu.class,
+    UserMenu.class,
+
+    // @Service(s)
+    CommandDtoProcessorServiceIdentity.class,
+    ContentMappingServiceForCommandDto.class,
+    ContentMappingServiceForCommandsDto.class,
+    SessionLogger.class,
+    SudoService.class,
+    UserService.class,
+    UserMemento.UiSubscriber.class,
+    RoleMemento.UiSubscriber.class,
+
+    // Mixins (essential)
+    BookmarkHolder_lookup.class,
+    BookmarkHolder_object.class,
+
+    // Mixins (prototyping)
+    Dto_downloadXml.class,
+    Dto_downloadXsd.class,
+    Object_downloadLayoutXml.class,
+    Object_downloadMetamodelXml.class,
+    Object_openRestApi.class,
+    Object_rebuildMetamodel.class,
+
+})
+public class IsisModuleApplib {
+
+    public static final String NAMESPACE = "isis.applib";
+    public static final String NAMESPACE_CONF = "isis.conf";    // for configuration; to minimize the risk of granting perms accidentally
+    public static final String NAMESPACE_SUDO = "isis.sudo";    // for impersonation
+    public static final String NAMESPACE_FEAT = "isis.feat";    // for app features
+
+    // -- UI EVENT CLASSES
+
+    public abstract static class TitleUiEvent<S>
+    extends org.apache.causeway.applib.events.ui.TitleUiEvent<S> {}
+
+    public abstract static class IconUiEvent<S>
+    extends org.apache.causeway.applib.events.ui.IconUiEvent<S> {}
+
+    public abstract static class CssClassUiEvent<S>
+    extends org.apache.causeway.applib.events.ui.CssClassUiEvent<S> {}
+    public abstract static class LayoutUiEvent<S>
+    extends org.apache.causeway.applib.events.ui.LayoutUiEvent<S> {}
+
+    // -- DOMAIN EVENT CLASSES
+
+    public abstract static class ActionDomainEvent<S>
+    extends org.apache.causeway.applib.events.domain.ActionDomainEvent<S> {}
+
+    public abstract static class CollectionDomainEvent<S,T>
+    extends org.apache.causeway.applib.events.domain.CollectionDomainEvent<S,T> {}
+
+    public abstract static class PropertyDomainEvent<S,T>
+    extends org.apache.causeway.applib.events.domain.PropertyDomainEvent<S,T> {}
+
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/IsisModuleApplibChangeAndExecutionLoggers.java b/api/applib/src/main/java/org/apache/causeway/applib/IsisModuleApplibChangeAndExecutionLoggers.java
new file mode 100644
index 0000000000..fe0a8eb0ad
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/IsisModuleApplibChangeAndExecutionLoggers.java
@@ -0,0 +1,47 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+import org.apache.causeway.applib.services.publishing.log.CommandLogger;
+import org.apache.causeway.applib.services.publishing.log.EntityChangesLogger;
+import org.apache.causeway.applib.services.publishing.log.EntityPropertyChangeLogger;
+import org.apache.causeway.applib.services.publishing.log.ExecutionLogger;
+
+/**
+ * Registers logging subscribers for the command/execution/change publishing subsystem.
+ *
+ * @since 2.0 {@index}
+ */
+@Configuration
+@Import({
+    // Modules
+    IsisModuleApplib.class,
+
+    // Execution/Change Loggers
+    CommandLogger.class,
+    EntityChangesLogger.class,
+    EntityPropertyChangeLogger.class,
+    ExecutionLogger.class,
+})
+public class IsisModuleApplibChangeAndExecutionLoggers {
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/IsisModuleApplibMixins.java b/api/applib/src/main/java/org/apache/causeway/applib/IsisModuleApplibMixins.java
new file mode 100644
index 0000000000..6a925a8792
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/IsisModuleApplibMixins.java
@@ -0,0 +1,47 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+import org.apache.causeway.applib.mixins.metamodel.Object_logicalTypeName;
+import org.apache.causeway.applib.mixins.metamodel.Object_objectIdentifier;
+import org.apache.causeway.applib.mixins.system.HasTarget_openTargetObject;
+
+/**
+ * Registers domain object property mixins for object meta data such as
+ * the internal identifier or the logical type name of the domain object.
+ *
+ * @since 2.0 {@index}
+ */
+@Configuration
+@Import({
+    // Modules
+    IsisModuleApplib.class,
+
+    // Mixins (non-prototyping/non-essential)
+    Object_objectIdentifier.class,
+    Object_logicalTypeName.class,
+    HasTarget_openTargetObject.class,
+
+})
+public class IsisModuleApplibMixins {
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/ViewModel.java b/api/applib/src/main/java/org/apache/causeway/applib/ViewModel.java
new file mode 100644
index 0000000000..aa2eac68da
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/ViewModel.java
@@ -0,0 +1,41 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib;
+
+import org.apache.causeway.applib.annotation.Programmatic;
+
+/**
+ * Indicates that an object belongs to the UI/application layer, and is intended to be used as a view model.
+ *
+ * @since 1.x {@index}
+ */
+public interface ViewModel {
+
+    /**
+     * Obtain a memento of the view model.
+     * <p>
+     * Instances of {@link ViewModel} must include a public single {@link String} argument constructor,
+     * that recreates an instance from a memento string.
+     * This constructor is not required to resolve injection points or fire domain events,
+     * instead this responsibility is encapsulated with the framework.
+     */
+    @Programmatic
+    String viewModelMemento();
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Action.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Action.java
new file mode 100644
index 0000000000..f1205a1360
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Action.java
@@ -0,0 +1,233 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.causeway.applib.events.domain.ActionDomainEvent;
+import org.apache.causeway.applib.services.command.Command;
+import org.apache.causeway.applib.services.commanddto.conmap.ContentMappingServiceForCommandDto;
+import org.apache.causeway.applib.services.commanddto.conmap.ContentMappingServiceForCommandsDto;
+import org.apache.causeway.applib.services.commanddto.processor.CommandDtoProcessor;
+import org.apache.causeway.applib.services.iactn.Execution;
+import org.apache.causeway.applib.services.publishing.spi.CommandSubscriber;
+import org.apache.causeway.applib.services.publishing.spi.ExecutionSubscriber;
+import org.apache.causeway.applib.value.Blob;
+import org.apache.causeway.applib.value.Clob;
+
+/**
+ * Groups together all domain-specific metadata for an invokable action on a
+ * domain object or domain service.
+ *
+ * @see Property
+ * @see Collection
+ * @see DomainObject
+ * @see ActionLayout
+ *
+ * @since 1.x {@index}
+ */
+@Inherited
+@Target({
+        ElementType.METHOD,
+        ElementType.TYPE,
+        ElementType.ANNOTATION_TYPE }
+)
+@Retention(RetentionPolicy.RUNTIME)
+@DomainObject(nature=Nature.MIXIN, mixinMethod = "act") // meta annotation, only applies at class level
+@Domain.Include // meta annotation, in support of meta-model validation
+public @interface Action {
+
+    /**
+     * References a collection of a certain element type (by its member-id),
+     * for an action with scalar or collection parameters of that element type;
+     * the action's choices will be automatically populated from checkboxes rendered in the collection
+     * (multi-select).
+     *
+     * <p>
+     *     This will also result in the action being rendered near to the collection, similar to the way in
+     *     which {@link ActionLayout#associateWith()} does.
+     * </p>
+     *
+     * <p>
+     *     If there are multiple actions associated with a collection, either by way of {@link Action#choicesFrom()} or
+     *     using {@link ActionLayout#associateWith()}, then their order in the UI can be influenced using
+     *     {@link ActionLayout#sequence()}.
+     * </p>
+     *
+     * @see ActionLayout#associateWith()
+     * @see ActionLayout#sequence()
+     */
+    String choicesFrom()
+            default "";
+
+    /**
+     * The {@link CommandDtoProcessor} to process this command's DTO.
+     *
+     * <p>
+     *     The processor itself is used by {@link ContentMappingServiceForCommandDto} and
+     *     {@link ContentMappingServiceForCommandsDto} to dynamically transform the DTOs.
+     * </p>
+     *
+     * @see Property#commandDtoProcessor()
+     * @see Action#commandPublishing()
+     */
+    Class<? extends CommandDtoProcessor> commandDtoProcessor()
+            default CommandDtoProcessor.class;
+
+    /**
+     * Whether action invocations, captured as {@link Command}s,
+     * should be published to {@link CommandSubscriber}s.
+     *
+     * @see Property#commandPublishing()
+     * @see Action#commandDtoProcessor()
+     */
+    Publishing commandPublishing()
+            default Publishing.NOT_SPECIFIED;
+
+    /**
+     * Indicates that an invocation of the action should be posted to the
+     * {@link org.apache.causeway.applib.services.eventbus.EventBusService} using a custom (subclass of)
+     * {@link org.apache.causeway.applib.events.domain.ActionDomainEvent}.
+     *
+     * <p>
+     *     Subscribers of this event can interact with the business rule
+     *     checking (hide, disable, validate) and its modification (before and
+     *     after).
+     * </p>
+     *
+     * <p>For example:
+     * </p>
+     *
+     * <pre>
+     * public class SomeObject{
+     *     public static class ChangeStartDateDomainEvent extends ActionDomainEvent&lt;SomeObject&gt; { ... }
+     *
+     *     &#64;Action(domainEvent=ChangedStartDateDomainEvent.class)
+     *     public void changeStartDate(final Date startDate) { ...}
+     *     ...
+     * }
+     * </pre>
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     *
+     * @see Property#domainEvent()
+     * @see Collection#domainEvent()
+     * @see DomainObject#actionDomainEvent()
+     */
+    Class<? extends ActionDomainEvent<?>> domainEvent()
+            default ActionDomainEvent.Default.class;
+
+    /**
+     * Whether {@link Execution}s (triggered by action invocations), should
+     * be published to {@link ExecutionSubscriber}s.
+     *
+     * @see Property#executionPublishing()
+     */
+    Publishing executionPublishing()
+            default Publishing.NOT_SPECIFIED;
+
+    /**
+     * Indicates where (in the UI) the action is not visible to the user.
+     *
+     * <p>
+     * It is also possible to suppress an action's visibility using {@link ActionLayout#hidden()}.
+     *
+     * <p>
+     * For {@link DomainService domain service} actions, the action's visibility is dependent upon its
+     * {@link DomainService#nature() nature}.
+     *
+     * @see Property#hidden()
+     * @see Collection#hidden()
+     */
+    Where hidden()
+            default Where.NOT_SPECIFIED;
+
+    /**
+     * Whether the action is restricted to prototyping, or whether it is
+     * available also in production mode.
+     *
+     * <p>
+     *     By default there are no restrictions, with the action being available in all environments.
+     * </p>
+     */
+    RestrictTo restrictTo()
+            default RestrictTo.NOT_SPECIFIED;
+
+    /**
+     * The action semantics, either
+     * {@link SemanticsOf#SAFE_AND_REQUEST_CACHEABLE cached},
+     * {@link SemanticsOf#SAFE safe} (query-only),
+     * {@link SemanticsOf#IDEMPOTENT idempotent} or
+     * {@link SemanticsOf#NON_IDEMPOTENT non-idempotent}.
+     *
+     * <p>
+     * The action's semantics determine whether objects are modified as the
+     * result of invoking this action (if not, the results can be cached for the
+     * remainder of the request).  If the objects do cause a change in state,
+     * they additionally determine whether re-invoking the action would result
+     * in a further change.
+     * </p>
+     *
+     * <p>
+     *     There are also `...ARE_YOU_SURE` variants
+     *     (@link {@link SemanticsOf#IDEMPOTENT_ARE_YOU_SURE} and
+     *     (@link {@link SemanticsOf#NON_IDEMPOTENT_ARE_YOU_SURE} that cause a
+     *     confirmation dialog to be displayed in the Wicket viewer.
+     * </p>
+     */
+    SemanticsOf semantics()
+            default SemanticsOf.NOT_SPECIFIED;
+
+    /**
+     * If the action returns a collection, then this hints as to the run-time
+     * type of the objects within that collection.
+     *
+     * <p>
+     *     This is only provided as a fallback; usually the framework can infer
+     *     the element type of the collection from the action method's
+     *     return type (eg if it returns <code>Collection</code> instead of <code>Collection&lt;Customer&gt;</code>)
+     * </p>
+     *
+     * @see Collection#typeOf()
+     */
+    Class<?> typeOf()
+            default void.class; // represents unspecified
+
+    /**
+     * For downloading {@link Blob} or {@link Clob}, optionally restrict the files accepted (eg <tt>.xslx</tt>).
+     *
+     * <p>
+     * The value should be of the form "file_extension|audio/*|video/*|image/*|media_type".
+     * </p>
+     *
+     * @see <a href="http://www.w3schools.com/tags/att_input_accept.asp">http://www.w3schools.com</a>
+     * @see Parameter#fileAccept()
+     * @see Property#fileAccept()
+     */
+    String fileAccept()
+            default "";
+
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/ActionLayout.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/ActionLayout.java
new file mode 100644
index 0000000000..953cc2a616
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/ActionLayout.java
@@ -0,0 +1,265 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.causeway.applib.layout.component.CssClassFaPosition;
+
+/**
+ * Layout hints for actions.
+ *
+ * @see PropertyLayout
+ * @see CollectionLayout
+ * @see DomainObjectLayout
+ * @see Action
+ *
+ * @since 1.x {@index}
+ */
+@Inherited
+@Target({
+        ElementType.METHOD,
+        ElementType.TYPE,
+        ElementType.ANNOTATION_TYPE
+})
+@Retention(RetentionPolicy.RUNTIME)
+@DomainObject(nature=Nature.MIXIN, mixinMethod = "act") // meta annotation, only applies at class level
+@Domain.Include // meta annotation, in support of meta-model validation
+public @interface ActionLayout {
+
+    /**
+     * Associates this action with a property or collection, specifying its id.
+     *
+     * <p>
+     *     To specify the layout order use {@link ActionLayout#sequence()}.
+     * </p>
+     *
+     * <p>
+     *     For example <code>@ActionLayout(associateWith="items") @ActionLayout(sequence="2.1")</code>
+     * </p>
+     *
+     * <p>
+     *     Note that it is also possible to associate an action with a collection using {@link Action#choicesFrom()}
+     *     (which has the additional semantic of the rows of the element being used as choices for that action's
+     *     collection parameter of the same type as the elements of the collection).
+     * </p>
+     *
+     * @see Action#choicesFrom()
+     * @see ActionLayout#sequence()
+     * @see ActionLayout#fieldSetId()
+     * @see ActionLayout#fieldSetName()
+     */
+    String associateWith()
+            default "";
+
+    /**
+     * Whether (and how) this action can be bookmarked in the UI.
+     *
+     * <p>
+     *     For bookmarkable actions, either {@link org.apache.causeway.applib.annotation.BookmarkPolicy#AS_ROOT}
+     *     and {@link org.apache.causeway.applib.annotation.BookmarkPolicy#AS_CHILD} can be used (they are treated
+     *     identically).
+     * </p>
+     */
+    BookmarkPolicy bookmarking()
+            default BookmarkPolicy.NOT_SPECIFIED;
+
+    /**
+     * Indicates the css class that an action should have.
+     *
+     * <p>
+     *     For the Wicket viewer, this can be a bootstrap class such as <code>btn-info</code>.
+     * </p>
+     *
+     * @see PropertyLayout#cssClass()
+     * @see ParameterLayout#cssClass()
+     * @see CollectionLayout#cssClass()
+     * @see DomainObjectLayout#cssClass()
+     */
+    String cssClass()
+            default "";
+
+    /**
+     * Indicates the <a href="http://fortawesome.github.io/Font-Awesome/">Font Awesome</a> CSS class to decorate an
+     * action (button or menu item).
+     *
+     * @see ActionLayout#cssClassFaPosition()
+     * @see DomainObjectLayout#cssClassFa()
+     */
+    String cssClassFa()
+            default "";
+
+    /**
+     * Indicates the position of the <a href="http://fortawesome.github.io/Font-Awesome/">Font Awesome</a>
+     * icon.
+     *
+     * <p>
+     * The icon could be rendered on the left or the right of the action button
+     * </p>
+     *
+     * @see ActionLayout#cssClassFa()
+     */
+    CssClassFaPosition cssClassFaPosition()
+            default CssClassFaPosition.LEFT;
+
+    /**
+     * Description of this action, eg to be rendered in a tooltip.
+     *
+     * @see PropertyLayout#describedAs()
+     * @see ParameterLayout#describedAs()
+     * @see CollectionLayout#describedAs()
+     * @see DomainObjectLayout#describedAs()
+     */
+    String describedAs()
+            default "";
+
+    /**
+     * Specifies the <b>id</b> of associated <i>FieldSet</i>.
+     * <p>
+     * For a more in depth description see the analogous {@link PropertyLayout#fieldSetId()}.
+     * </p>
+     *
+     * To associate an <i>Action</i> with a <i>Collection</i>, use {@link Action#choicesFrom()}
+     * instead.
+     *
+     * @apiNote An <i>Action</i> can be associated with with a <i>Property</i> or <i>Collection</i>
+     * its so called <i>peer</i>.
+     * It will then be positioned close to its <i>peer</i>, either under it or on the header panel
+     * depending on other layout facets. Such an association is made available via
+     * {@link ActionLayout#associateWith()}. However, with the presence of a {@link ActionLayout#fieldSetId()}
+     * or a {@link ActionLayout#fieldSetName()}
+     * this default placement is overruled.
+     *
+     * @see Action#choicesFrom()
+     * @see ActionLayout#associateWith()
+     * @see ActionLayout#fieldSetName()
+     * @see PropertyLayout#fieldSetId()
+     * @see PropertyLayout#fieldSetName()
+     * @see PropertyLayout#sequence()
+     */
+    String fieldSetId()
+            default "__infer";
+
+    /**
+     * Specifies the <b>friendly-name</b> of associated <i>FieldSet</i> or <i>Collection</i>.
+     * <p>
+     * For a more in depth description see the analogous {@link PropertyLayout#fieldSetId()};
+     * </p>
+     *
+     * To associate an <i>Action</i> with a <i>Collection</i>, use {@link Action#choicesFrom()}
+     * instead.
+     *
+     * @see Action#choicesFrom()
+     * @see ActionLayout#associateWith()
+     * @see ActionLayout#fieldSetId()
+     * @see PropertyLayout#fieldSetId()
+     * @see PropertyLayout#fieldSetName()
+     * @see PropertyLayout#sequence()
+     */
+    String fieldSetName()
+            default "__infer";
+
+    /**
+     * Indicates where in the UI the action should <i>not</i>not be visible.
+     */
+    Where hidden()
+            default Where.NOT_SPECIFIED;
+
+    /**
+     * Name of this action (overriding the name derived from its name in code).
+     *
+     * <p>
+     * A typical use case is if the desired name is a reserved Java keyword, such as `default` or `package`.
+     * </p>
+     *
+     * @see PropertyLayout#named()
+     * @see ParameterLayout#named()
+     * @see CollectionLayout#named()
+     * @see DomainObjectLayout#named()
+     * @see DomainServiceLayout#named()
+     */
+    String named()
+            default "";
+
+    /**
+     * For actions that are associated with a property (using either
+     * {@link Action#choicesFrom()} or {@link ActionLayout#fieldSetId()}
+     * or {@link ActionLayout#fieldSetName()},
+     * indicates the positioning of the action's button relative to the
+     * property.
+     *
+     * <p>
+     * Ignored if the action has not been associated with a property.
+     * </p>
+     */
+    Position position()
+            default Position.NOT_SPECIFIED;
+
+    @XmlType(namespace = "http://isis.apache.org/applib/layout/component")
+    enum Position {
+        BELOW,
+        RIGHT,
+        PANEL,
+        PANEL_DROPDOWN,
+        NOT_SPECIFIED
+    }
+
+    /**
+     * How the parameters for this action are prompted, either {@link PromptStyle#DIALOG dialog} or
+     * {@link PromptStyle#INLINE inline}.
+     */
+    PromptStyle promptStyle()
+            default PromptStyle.AS_CONFIGURED;
+
+    /**
+     * If the action returns its target, then determines whether to update the
+     * page or instead to redirect (forcing a re-rendering of a new page).
+     *
+     * <p>
+     *     Not re-rendering can provide a smoother UI experience.
+     * </p>
+     *
+     * <p>
+     *     Supported by the Wicket viewer.
+     * </p>
+     */
+    Redirect redirectPolicy()
+            default Redirect.AS_CONFIGURED;
+
+    /**
+     * The order of this member relative to other members in the same (layout) group,
+     * given in <i>Dewey-decimal</i> notation.
+     * <p>
+     *     An alternative is to use the <code>Xxx.layout.xml</code> file,
+     *     where <code>Xxx</code> is the domain object name.
+     * </p>
+     * @see CollectionLayout#sequence()
+     * @see PropertyLayout#sequence()
+     */
+    String sequence()
+            default "";
+
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/BookmarkPolicy.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/BookmarkPolicy.java
new file mode 100644
index 0000000000..10b912295b
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/BookmarkPolicy.java
@@ -0,0 +1,54 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.causeway.applib.annotation;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * 
+ * @since 1.x {@index}
+ */
+@XmlType(
+        namespace = "http://isis.apache.org/applib/layout/component"
+        )
+public enum BookmarkPolicy {
+
+    /**
+     * Can be bookmarked, and is a top-level 'root' (or parent) bookmark.
+     */
+    AS_ROOT,
+
+    /**
+     * Can be bookmarked, but only as a child or some other parent/root bookmark
+     */
+    AS_CHILD,
+
+    /**
+     * An unimportant entity that should never be bookmarked.
+     */
+    NEVER,
+
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Bounding.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Bounding.java
new file mode 100644
index 0000000000..bcce16627c
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Bounding.java
@@ -0,0 +1,30 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+/**
+ * Whether the set of instances of a domain object is bounded or not.
+ * 
+ * @since 1.x {@index}
+ */
+public enum Bounding {
+    BOUNDED,
+    UNBOUNDED,
+    NOT_SPECIFIED
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Collection.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Collection.java
new file mode 100644
index 0000000000..c47f2aaa78
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Collection.java
@@ -0,0 +1,108 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.causeway.applib.events.domain.CollectionDomainEvent;
+
+/**
+ * Domain semantics for domain object collection.
+ *
+ * @see Action
+ * @see Property
+ * @see DomainObject
+ * @see CollectionLayout
+ *
+ * @since 1.x {@index}
+ */
+@Inherited
+@Target({
+        ElementType.METHOD,
+        ElementType.FIELD,
+        ElementType.TYPE,
+        ElementType.ANNOTATION_TYPE
+})
+@Retention(RetentionPolicy.RUNTIME)
+@DomainObject(nature=Nature.MIXIN, mixinMethod = "coll") // meta annotation, only applies at class level
+@Domain.Include // meta annotation, in support of meta-model validation
+public @interface Collection {
+
+    /**
+     * Indicates that changes to the collection that should be posted to the
+     * {@link org.apache.causeway.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link org.apache.causeway.applib.events.domain.CollectionDomainEvent}.
+     *
+     * <p>
+     *     Subscribers of this event can interact with the business rule
+     *     checking (hide, disable, validate) and its modification (before and
+     *     after).
+     * </p>
+     *
+     * <p>For example:
+     * </p>
+     * <pre>
+     * public class Order {
+     *   public static class OrderLineItems extends CollectionDomainEvent { ... }
+     *
+     *   &#64;CollectionInteraction(OrderLineItems.class)
+     *   public SortedSet&lt;OrderLine&gt; getLineItems() { ...}
+     * }
+     * </pre>
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     *
+     * @see Action#domainEvent()
+     * @see Property#domainEvent()
+     * @see DomainObject#collectionDomainEvent()
+     */
+    Class<? extends CollectionDomainEvent<?,?>> domainEvent()
+            default CollectionDomainEvent.Default.class;
+
+    /**
+     * Indicates when the collection is not visible to the user.
+     *
+     * @see Action#hidden()
+     * @see Property#hidden()
+     * @see Collection#hidden()
+     */
+    Where hidden()
+            default Where.NOT_SPECIFIED;
+
+    /**
+     * The type-of the elements held within the collection.
+     *
+     * <p>
+     *     This is only provided as a fallback; usually the framework can infer
+     *     the element type of the collection from the collection method's
+     *     generic type.
+     * </p>
+     *
+     * @see Action#typeOf()
+     */
+    Class<?> typeOf()
+            default void.class; // represents unspecified
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/CollectionLayout.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/CollectionLayout.java
new file mode 100644
index 0000000000..ac91068825
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/CollectionLayout.java
@@ -0,0 +1,179 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.util.Comparator;
+
+/**
+ * Layout hints for collections.
+ *
+ * @see ActionLayout
+ * @see PropertyLayout
+ * @see DomainObjectLayout
+ * @see Collection
+ *
+ * @since 1.x {@index}
+ */
+@Inherited
+@Target({
+        ElementType.METHOD,
+        ElementType.FIELD,
+        ElementType.TYPE,
+        ElementType.ANNOTATION_TYPE
+})
+@Retention(RetentionPolicy.RUNTIME)
+@DomainObject(nature=Nature.MIXIN, mixinMethod = "coll") // meta annotation, only applies at class level
+@Domain.Include // meta annotation, in support of meta-model validation
+public @interface CollectionLayout {
+
+    /**
+     * Indicates the css class that a collection should have, to
+     * allow more targeted styling in <code>application.css</code>.
+     *
+     * @see ActionLayout#cssClass()
+     * @see PropertyLayout#cssClass()
+     * @see ParameterLayout#cssClass()
+     * @see DomainObjectLayout#cssClass()
+     */
+    String cssClass()
+            default "";
+
+
+    /**
+     * Indicates which view is used by default to render the collection.
+     *
+     * <p>
+     *     This is a simple string; every available implementation is required
+     *     to use a different string.
+     * </p>
+     * <p>
+     *     The default is &quot;table&quot;.  Extensions provide also:
+     *     &quot;excel&quot; (download as Excel spreadsheet), &quot;calendar&quot;
+     *     and &quot;map&quot;.
+     * </p>
+     */
+    String defaultView()
+            default "";
+
+    /**
+     * Description of this collection, eg to be rendered in a tooltip.
+     *
+     * @see ActionLayout#describedAs()
+     * @see ParameterLayout#describedAs()
+     * @see PropertyLayout#describedAs()
+     * @see DomainObjectLayout#describedAs()
+     */
+    String describedAs()
+            default "";
+
+    /**
+     * Indicates where in the UI the collection should <i>not</i>not be visible.
+     *
+     * <p>
+     *      Only {@link Where#NOWHERE NOWHERE} or {@link Where#EVERYWHERE EVERYWHERE}/{@link Where#ANYWHERE ANYWHERE}
+     *      apply for collections.
+     * </p>
+     */
+    Where hidden()
+            default Where.NOT_SPECIFIED;
+
+    /**
+     * Name of this collection (overriding the name derived from its name in
+     * code).
+     *
+     * <p>
+     *     A typical use case is if the desired name is a reserved Java
+     *     keyword, such as `default` or `package`.
+     * </p>
+     *
+     * @see ActionLayout#named()
+     * @see ParameterLayout#named()
+     * @see PropertyLayout#named()
+     * @see DomainObjectLayout#named()
+     * @see DomainServiceLayout#named()
+     */
+    String named()
+            default "";
+
+    /**
+     * The page size for instances of this class when rendered within
+     * a table.
+     *
+     * <p>
+     * If annotated on a collection, then the page size refers to
+     * parented collections (eg <tt>Order#lineItems</tt>).
+     *
+     * <p>
+     * If annotated on a type, then the page size refers to standalone
+     * collections (eg as returned from a repository query).
+     *
+     * @see DomainObjectLayout#paged()
+     */
+    int paged()
+            default -1;
+
+    /**
+     * The order of this member relative to other members in the same (layout) group,
+     * given in <i>Dewey-decimal</i> notation.
+     * <p>
+     *     An alternative is to use the <code>Xxx.layout.xml</code> file,
+     *     where <code>Xxx</code> is the domain object name.
+     * </p>
+     * @see ActionLayout#sequence()
+     * @see PropertyLayout#sequence()
+     */
+    String sequence()
+            default "";
+
+    /**
+     * Indicates that the elements in a ({@link java.util.SortedSet}) collection should be sorted according to a different order than the
+     * natural sort order, as defined by the specified{@link java.util.Comparator}.
+     *
+     * <p>
+     * Whenever there is a collection of type {@link java.util.SortedSet}, the domain entity referenced
+     * is expected to implement {@link Comparable}, ie to have a natural ordering.  In effect tis
+     * means that all domain entities should provide a natural ordering.
+     *
+     * <p>
+     * However, in some circumstances the ordering of collection may be different to the entity's
+     * natural ordering.  For example, the entity may represent an interval of time sorted by its
+     * <i>startDate</i> ascending, but the collection may wish to sort by <i>startDate</i>.
+     *
+     * <p>
+     * The purpose of this annotation is to provide a {@link java.util.Comparator} such that the collection
+     * may be sorted in an order more suitable to the context.
+     */
+    @SuppressWarnings("rawtypes")
+    Class<? extends Comparator> sortedBy()
+            default Comparator.class;
+
+    /**
+     * Whether a parented collection when represented in a table form should additionally be
+     * &quot;decorated&quot; with client-side (javascript) enhancements, for example to enable paging and filtering.
+     */
+    TableDecoration tableDecoration()
+            default TableDecoration.NOT_SPECIFIED;
+
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/DependentDefaultsPolicy.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/DependentDefaultsPolicy.java
new file mode 100644
index 0000000000..d8f08ae100
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/DependentDefaultsPolicy.java
@@ -0,0 +1,55 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+/**
+ * The policies for calculating the defaults of dependent parameters.
+ *
+ * @since 1.x {@index}
+ */
+public enum DependentDefaultsPolicy {
+
+    /**
+     * The policy to use should be as per the default defaults policy configured in <tt>application.properties</tt>.
+     *
+     * <p>
+     *     If no defaults policy is configured, then default to the {@link DependentDefaultsPolicy#UPDATE_DEPENDENT UPDATE_DEPENDENT} policy.
+     * </p>
+     */
+    AS_CONFIGURED,
+
+    /**
+     * If an end-user has changed this parameter's value, then do not overwrite the value when an earlier parameter changes.
+     */
+    PRESERVE_CHANGES,
+
+    /**
+     * If this parameter declares a default that is dependent on the value of a previous parameter, and that previous
+     * parameter has been changed by the end-user, then update this dependent parameter with its computed default,
+     * <i>even if</i> the end-user has changed the value of this parameter previously.
+     */
+    UPDATE_DEPENDENT,
+
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Domain.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Domain.java
new file mode 100644
index 0000000000..3928940414
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Domain.java
@@ -0,0 +1,84 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation container, without any semantics.
+ * @see Domain.Include
+ * @see Domain.Exclude
+ */
+@Target({
+    ElementType.METHOD,
+    ElementType.FIELD,
+    ElementType.ANNOTATION_TYPE
+})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Domain {
+
+    /**
+     * Indicates that a field or method must contribute to the metamodel.
+     * <p>
+     * For <i>mixins</i> is also allowed to be placed on the mixin's main method.
+     * <p>
+     * By placing the {@link Domain.Include} annotation on a method or field,
+     * a contract with the meta-model is enforced,
+     * such that this class-member must be recognized by the meta-model
+     * and cannot be ignored.
+     * Meta-model validation will fail when this contract is violated.
+     * <p>
+     * Acts as the semantic counterpart to {@link Domain.Exclude}.
+     * @see Domain.Exclude
+     * @since 2.x {@index}
+     */
+    @Inherited
+    @Target({
+        ElementType.METHOD,
+        ElementType.FIELD,
+        ElementType.ANNOTATION_TYPE
+    })
+    @Retention(RetentionPolicy.RUNTIME)
+    public @interface Include {
+    }
+
+    /**
+     * Indicates that a field, method or type should be ignored by the meta-model
+     * introspection.
+     * <p>
+     * Acts as the semantic counterpart to {@link Domain.Include}.
+     * @see Domain.Include
+     *
+     * @since 2.x {@index}
+     */
+    @Inherited
+    @Target({
+        ElementType.METHOD,
+        ElementType.FIELD,
+        ElementType.TYPE,
+    })
+    @Retention(RetentionPolicy.RUNTIME)
+    public @interface Exclude {
+    }
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/DomainObject.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/DomainObject.java
new file mode 100644
index 0000000000..89c2a0bac4
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/DomainObject.java
@@ -0,0 +1,435 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.inject.Named;
+
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+
+import org.apache.causeway.applib.events.domain.ActionDomainEvent;
+import org.apache.causeway.applib.events.domain.CollectionDomainEvent;
+import org.apache.causeway.applib.events.domain.PropertyDomainEvent;
+import org.apache.causeway.applib.events.lifecycle.ObjectCreatedEvent;
+import org.apache.causeway.applib.events.lifecycle.ObjectLoadedEvent;
+import org.apache.causeway.applib.events.lifecycle.ObjectPersistedEvent;
+import org.apache.causeway.applib.events.lifecycle.ObjectPersistingEvent;
+import org.apache.causeway.applib.events.lifecycle.ObjectRemovingEvent;
+import org.apache.causeway.applib.events.lifecycle.ObjectUpdatedEvent;
+import org.apache.causeway.applib.events.lifecycle.ObjectUpdatingEvent;
+import org.apache.causeway.applib.services.bookmark.Bookmark;
+
+/**
+ * Domain semantics for domain objects (entities and view models;
+ * for services see {@link org.apache.causeway.applib.annotation.DomainService}).
+ *
+ * @apiNote Meta annotation {@link Component} allows for the Spring framework to pick up (discover) the
+ * annotated type.
+ * For more details see <code>org.apache.causeway.core.config.beans.IsisBeanFactoryPostProcessorForSpring</code>
+ *
+ * @see Action
+ * @see Property
+ * @see Collection
+ * @see DomainObjectLayout
+ * @see DomainService
+ *
+ * @since 1.x {@index}
+ */
+@Inherited
+@Target({
+        ElementType.TYPE,
+        ElementType.ANNOTATION_TYPE
+})
+@Retention(RetentionPolicy.RUNTIME)
+@Component @Scope("prototype")
+public @interface DomainObject {
+
+    /**
+     * Alternative logical type name(s) for the annotated type.
+     * @see Bookmark
+     * @see Named
+     */
+    String[] aliased() default {};
+
+    /**
+     * The class of the domain service that provides an <code>autoComplete(String)</code> method.
+     *
+     * <p>
+     * It is sufficient to specify an interface rather than a concrete type.
+     *
+     * @see DomainObject#autoCompleteMethod()
+     */
+    Class<?> autoCompleteRepository()
+            default Object.class;
+
+    /**
+     * The method to use in order to perform the auto-complete search
+     * (defaults to &quot;autoComplete&quot;).
+     *
+     * <p>
+     * The method is required to accept a single string parameter, and must
+     * return a list of the domain type.
+     * </p>
+     *
+     * @see DomainObject#autoCompleteRepository()
+     */
+    String autoCompleteMethod()
+            default "autoComplete";
+
+    /**
+     * Indicates that the class has a bounded, or finite, set of instances.
+     *
+     * <p>
+     *     Takes precedence over auto-complete.
+     * </p>
+     *
+     * <p>
+     *     Note: this replaces bounded=true|false prior to v2.x
+     * </p>
+     *
+     */
+    Bounding bounding()
+            default Bounding.NOT_SPECIFIED;
+
+    /**
+     * Whether the properties of this domain object can be edited, or collections of this object be added to/removed from.
+     *
+     * <p>
+     *     Note that non-editable objects can nevertheless have actions invoked upon them.
+     * </p>
+     *
+     * @see Property#editing()
+     * @see DomainObject#editingDisabledReason()
+     */
+    Editing editing()
+            default Editing.NOT_SPECIFIED;
+
+    /**
+     * If {@link #editing()} is set to {@link Editing#DISABLED},
+     * then the reason to provide to the user as to why the object's properties cannot be edited/collections modified.
+     *
+     * @see DomainObject#editing()
+     */
+    String editingDisabledReason()
+            default "Disabled";
+
+    /**
+     * Whether entity changes (persistent property updates) should be published to
+     * {@link org.apache.causeway.applib.services.publishing.spi.EntityPropertyChangeSubscriber}s
+     * and whether entity changes, captured as {@link org.apache.causeway.applib.services.publishing.spi.EntityChanges},
+     * should be published to {@link org.apache.causeway.applib.services.publishing.spi.EntityChangesSubscriber}s.
+     * @apiNote does only apply to entity objects
+     */
+    Publishing entityChangePublishing()
+            default Publishing.NOT_SPECIFIED;
+
+    /**
+     * Controls on a per class basis,
+     * how meta-model class introspection should process
+     * members, supporting methods and callback methods.
+     */
+    Introspection introspection()
+            default Introspection.NOT_SPECIFIED;
+
+    /**
+     * Applicable only if {@link #nature()} is {@link Nature#MIXIN}, indicates
+     * the name of the method within the mixin class to be inferred as the
+     * action of that mixin.
+     *
+     * <p>
+     *     Supporting methods are then derived from that method name.  For
+     *     example, if the mixin method name is &quot;act&quot;, then the
+     *     <i>disable</i> supporting method will be &quot;disableAct&quot;.
+     * </p>
+     *
+     * <p>
+     * Typical examples are "act", "prop", "coll", "exec", "execute", "invoke",
+     * "apply" and so on. The default name is `$$`.
+     * </p>
+     */
+    String mixinMethod()
+            default "$$";
+
+    /**
+     * The nature of this domain object.
+     *
+     * @see DomainService#nature()
+     */
+    Nature nature()
+            default Nature.NOT_SPECIFIED;
+
+    /**
+     * The logical name of this object's type, that uniquely and fully qualifies it.
+     * The logical name is analogous to - but independent of - the actual fully qualified class name.
+     * eg. {@code sales.Customer} for a class 'org.mycompany.dom.Customer'
+     * <p>
+     * This value, if specified, is used in the serialized form of the object's {@link Bookmark}.
+     * A {@link Bookmark} is used by the framework to uniquely identify an object over time
+     * (same concept as a URN).
+     * Otherwise, if not specified, the fully qualified class name is used instead.
+     * </p>
+     * @deprecated use {@link Named} instead
+     * @see Named
+     */
+    @Deprecated(forRemoval = true, since = "2.0.0-M8")
+    String logicalTypeName()
+            default "";
+
+
+    /**
+     * Indicates that the loading of the domain object should be posted to the
+     * {@link org.apache.causeway.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link org.apache.causeway.applib.events.lifecycle.ObjectCreatedEvent}.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     *
+     * @see DomainObject#loadedLifecycleEvent()
+     * @see DomainObject#persistingLifecycleEvent()
+     * @see DomainObject#persistedLifecycleEvent()
+     * @see DomainObject#updatingLifecycleEvent()
+     * @see DomainObject#updatedLifecycleEvent()
+     * @see DomainObject#removingLifecycleEvent()
+     */
+    Class<? extends ObjectCreatedEvent<?>>
+            createdLifecycleEvent()
+            default ObjectCreatedEvent.Default.class;
+
+    /**
+     * Indicates that the loading of the domain object should be posted to the
+     * {@link org.apache.causeway.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link org.apache.causeway.applib.events.lifecycle.ObjectPersistingEvent}.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     *
+     * @see DomainObject#createdLifecycleEvent()
+     * @see DomainObject#loadedLifecycleEvent()
+     * @see DomainObject#persistedLifecycleEvent()
+     * @see DomainObject#updatingLifecycleEvent()
+     * @see DomainObject#updatedLifecycleEvent()
+     * @see DomainObject#removingLifecycleEvent()
+     */
+    Class<? extends ObjectPersistingEvent<?>>
+            persistingLifecycleEvent()
+            default ObjectPersistingEvent.Default.class;
+
+    /**
+     * Indicates that the loading of the domain object should be posted to the
+     * {@link org.apache.causeway.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link org.apache.causeway.applib.events.lifecycle.ObjectPersistedEvent}.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     *
+     * @see DomainObject#createdLifecycleEvent()
+     * @see DomainObject#loadedLifecycleEvent()
+     * @see DomainObject#persistingLifecycleEvent()
+     * @see DomainObject#updatingLifecycleEvent()
+     * @see DomainObject#updatedLifecycleEvent()
+     * @see DomainObject#removingLifecycleEvent()
+     */
+    Class<? extends ObjectPersistedEvent<?>>
+            persistedLifecycleEvent()
+            default ObjectPersistedEvent.Default.class;
+
+    /**
+     * Indicates that the loading of the domain object should be posted to the
+     * {@link org.apache.causeway.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link org.apache.causeway.applib.events.lifecycle.ObjectLoadedEvent}.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     *
+     * @see DomainObject#createdLifecycleEvent()
+     * @see DomainObject#persistingLifecycleEvent()
+     * @see DomainObject#persistedLifecycleEvent()
+     * @see DomainObject#updatingLifecycleEvent()
+     * @see DomainObject#updatedLifecycleEvent()
+     * @see DomainObject#removingLifecycleEvent()
+     */
+    Class<? extends ObjectLoadedEvent<?>>
+            loadedLifecycleEvent()
+            default ObjectLoadedEvent.Default.class;
+
+    /**
+     * Indicates that the loading of the domain object should be posted to the
+     * {@link org.apache.causeway.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link org.apache.causeway.applib.events.lifecycle.ObjectUpdatingEvent}.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     *
+     * @see DomainObject#createdLifecycleEvent()
+     * @see DomainObject#loadedLifecycleEvent()
+     * @see DomainObject#persistingLifecycleEvent()
+     * @see DomainObject#persistedLifecycleEvent()
+     * @see DomainObject#updatedLifecycleEvent()
+     * @see DomainObject#removingLifecycleEvent()
+     */
+    Class<? extends ObjectUpdatingEvent<?>>
+            updatingLifecycleEvent()
+            default ObjectUpdatingEvent.Default.class;
+
+    /**
+     * Indicates that the loading of the domain object should be posted to the
+     * {@link org.apache.causeway.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link org.apache.causeway.applib.events.lifecycle.ObjectUpdatedEvent}.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     *
+     * @see DomainObject#createdLifecycleEvent()
+     * @see DomainObject#loadedLifecycleEvent()
+     * @see DomainObject#persistingLifecycleEvent()
+     * @see DomainObject#persistedLifecycleEvent()
+     * @see DomainObject#updatingLifecycleEvent()
+     * @see DomainObject#removingLifecycleEvent()
+     */
+    Class<? extends ObjectUpdatedEvent<?>>
+            updatedLifecycleEvent()
+            default ObjectUpdatedEvent.Default.class;
+
+    /**
+     * Indicates that the loading of the domain object should be posted to the
+     * {@link org.apache.causeway.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link org.apache.causeway.applib.events.lifecycle.ObjectRemovingEvent}.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     *
+     * @see DomainObject#createdLifecycleEvent()
+     * @see DomainObject#loadedLifecycleEvent()
+     * @see DomainObject#persistingLifecycleEvent()
+     * @see DomainObject#persistedLifecycleEvent()
+     * @see DomainObject#updatingLifecycleEvent()
+     * @see DomainObject#updatedLifecycleEvent()
+     */
+    Class<? extends ObjectRemovingEvent<?>>
+            removingLifecycleEvent()
+            default ObjectRemovingEvent.Default.class;
+
+    /**
+     * Indicates that an invocation of <i>any</i> action of the domain object (that do not themselves specify their own
+     * <tt>&#64;Action(domainEvent=...)</tt> should be posted to the
+     * {@link org.apache.causeway.applib.services.eventbus.EventBusService event bus} using the specified custom
+     * (subclass of) {@link ActionDomainEvent}.
+     *
+     * <p>For example:
+     * </p>
+     *
+     * <pre>
+     * &#64;DomainObject(actionDomainEvent=SomeObject.GenericActionDomainEvent.class)
+     * public class SomeObject{
+     *     public static class GenericActionDomainEvent extends ActionDomainEvent&lt;Object&gt; { ... }
+     *
+     *     public void changeStartDate(final Date startDate) { ...}
+     *     ...
+     * }
+     * </pre>
+     *
+     * <p>
+     *     This will result in all actions as a more specific type to use) to emit this event.
+     * </p>
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * It must also use <tt>Object</tt> as its generic type.  This is to allow mixins to also emit the same event.
+     * </p>
+     *
+     * @see DomainObject#propertyDomainEvent()
+     * @see DomainObject#collectionDomainEvent()
+     * @see Action#domainEvent()
+     */
+    Class<? extends ActionDomainEvent<?>>
+            actionDomainEvent()
+            default ActionDomainEvent.Default.class;
+
+    /**
+     * Indicates that changes to <i>any</i> property of the domain object (that do not themselves specify their own
+     * <tt>&#64;Property(domainEvent=...)</tt> should be posted to the
+     * {@link org.apache.causeway.applib.services.eventbus.EventBusService event bus} using the specified custom
+     * (subclass of) {@link PropertyDomainEvent}.
+     *
+     * <p>For example:
+     * </p>
+     *
+     * <pre>
+     * &#64;DomainObject(propertyDomainEvent=SomeObject.GenericPropertyDomainEvent.class)
+     * public class SomeObject{
+     *
+     *    public LocalDate getStartDate() { ...}
+     * }
+     * </pre>
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * It must also use <tt>Object</tt> as its generic type.  This is to allow mixins to also emit the same event.
+     * </p>
+     *
+     * @see DomainObject#actionDomainEvent()
+     * @see DomainObject#collectionDomainEvent()
+     * @see Property#domainEvent()
+     */
+    Class<? extends PropertyDomainEvent<?,?>>
+            propertyDomainEvent()
+            default PropertyDomainEvent.Default.class;
+
+    /**
+     * Indicates that changes to <i>any</i> collection of the domain object (that do not themselves specify their own
+     * <tt>&#64;Collection(domainEvent=...)</tt>  should be posted to the
+     * {@link org.apache.causeway.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link CollectionDomainEvent}.
+     *
+     * <p>For example:
+     * </p>
+     * <pre>
+     * &#64;DomainObject(collectionDomainEvent=Order.GenericCollectionDomainEvent.class)
+     * public class Order {
+     *
+     *   public SortedSet&lt;OrderLine&gt; getLineItems() { ...}
+     * }
+     * </pre>
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * It must also use <tt>Object</tt> as its generic type.  This is to allow mixins to also emit the same event.
+     * </p>
+     *
+     * @see DomainObject#actionDomainEvent()
+     * @see DomainObject#propertyDomainEvent()
+     * @see Collection#domainEvent()
+     */
+    Class<? extends CollectionDomainEvent<?,?>>
+            collectionDomainEvent()
+            default CollectionDomainEvent.Default.class;
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/DomainObjectLayout.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/DomainObjectLayout.java
new file mode 100644
index 0000000000..d5d2e6195e
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/DomainObjectLayout.java
@@ -0,0 +1,215 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.causeway.applib.events.ui.CssClassUiEvent;
+import org.apache.causeway.applib.events.ui.IconUiEvent;
+import org.apache.causeway.applib.events.ui.LayoutUiEvent;
+import org.apache.causeway.applib.events.ui.TitleUiEvent;
+import org.apache.causeway.applib.layout.component.CssClassFaPosition;
+
+/**
+ * Layout hints for domain objects.
+ *
+ * @see ActionLayout
+ * @see PropertyLayout
+ * @see CollectionLayout
+ * @see DomainObject
+ *
+ * @since 1.x {@index}
+ */
+@Inherited
+@Target({
+        ElementType.TYPE,
+        ElementType.ANNOTATION_TYPE
+})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DomainObjectLayout {
+
+    // ...
+    /**
+     * Whether (and how) this domain object can be bookmarked in the UI.
+     */
+    BookmarkPolicy bookmarking()
+            default BookmarkPolicy.NOT_SPECIFIED;
+
+    /**
+     * Indicates the css class that a domain class (type) should have, to
+     * allow more targeted styling in <code>application.css</code>.
+     *
+     * @see ActionLayout#cssClass()
+     * @see PropertyLayout#cssClass()
+     * @see ParameterLayout#cssClass()
+     * @see CollectionLayout#cssClass()
+     */
+    String cssClass()
+            default "";
+
+    /**
+     * Indicates the <a href="http://fortawesome.github.io/Font-Awesome/">Font Awesome</a> CSS class to decorate an
+     * domain object.
+     *
+     * @see ActionLayout#cssClassFa()
+     */
+    String cssClassFa()
+            default "";
+
+    /**
+     * Indicates the position of the <a href="http://fortawesome.github.io/Font-Awesome/">Font Awesome</a>
+     * icon. The icon could be rendered on the left or the right of the object's title.
+     *
+     * <p>
+     *     This attribute is currently ignored by Isis viewers.
+     * </p>
+     */
+    CssClassFaPosition cssClassFaPosition()
+            default CssClassFaPosition.LEFT;
+
+    /**
+     * Description of this class, eg to be rendered in a tooltip.
+     *
+     * @see ActionLayout#describedAs()
+     * @see ParameterLayout#describedAs()
+     * @see PropertyLayout#describedAs()
+     * @see CollectionLayout#describedAs()
+     */
+    String describedAs()
+            default "";
+
+    /**
+     * Name of this class (overriding the name derived from its name in code).
+     *
+     * <p>
+     * A typical use case is if the desired name is a reserved Java keyword, such as `default` or `package`.
+     * </p>
+     *
+     * @see ActionLayout#named()
+     * @see ParameterLayout#named()
+     * @see PropertyLayout#named()
+     * @see CollectionLayout#named()
+     * @see DomainServiceLayout#named()
+     * @see DomainObjectLayout#plural()
+     */
+    String named()
+            default "";
+
+    /**
+     * The page size for instances of this class when rendered within
+     * a table.
+     *
+     * <p>
+     * If annotated on a collection, then the page size refers to
+     * parented collections (eg <tt>Order#lineItems</tt>).
+     *
+     * <p>
+     * If annotated on a type, then the page size refers to standalone
+     * collections (eg as returned from a repository query).
+     *
+     * @see CollectionLayout#paged()
+     */
+    int paged()
+            default -1;
+
+    /**
+     * The plural name of the class.
+     *
+     * @see DomainObjectLayout#named()
+     */
+    String plural()
+            default "";
+
+    /**
+     * Whether a standalone collection when represented in a table form should additionally be
+     * &quot;decorated&quot; with client-side (javascript) enhancements, for example to enable paging and filtering.
+     */
+    TableDecoration tableDecoration()
+            default TableDecoration.NOT_SPECIFIED;
+
+
+    /**
+     * Which subclass of {@link CssClassUiEvent} should be used to obtain a CSS class.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     *
+     * @see DomainObjectLayout#iconUiEvent()
+     * @see DomainObjectLayout#layoutUiEvent()
+     * @see DomainObjectLayout#titleUiEvent()
+     */
+    Class<? extends CssClassUiEvent<?>>
+            cssClassUiEvent()
+            default CssClassUiEvent.Default.class;
+
+    /**
+     * Which subclass of {@link IconUiEvent} should be used to obtain an icon.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     *
+     * @see DomainObjectLayout#cssClassUiEvent()
+     * @see DomainObjectLayout#layoutUiEvent()
+     * @see DomainObjectLayout#titleUiEvent()
+     */
+    Class<? extends IconUiEvent<?>>
+            iconUiEvent()
+            default IconUiEvent.Default.class;
+
+    /**
+     * Which subclass of {@link LayoutUiEvent} should be used to obtain a layout.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     *
+     *
+     * @see DomainObjectLayout#cssClassUiEvent()
+     * @see DomainObjectLayout#iconUiEvent()
+     * @see DomainObjectLayout#titleUiEvent()
+     */
+    Class<? extends LayoutUiEvent<?>>
+            layoutUiEvent()
+            default LayoutUiEvent.Default.class;
+
+    /**
+     * Which subclass of {@link TitleUiEvent} should be used to obtain a title.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     *
+     *
+     * @see DomainObjectLayout#cssClassUiEvent()
+     * @see DomainObjectLayout#iconUiEvent()
+     * @see DomainObjectLayout#layoutUiEvent()
+     */
+    Class<? extends TitleUiEvent<?>>
+            titleUiEvent()
+            default TitleUiEvent.Default.class;
+
+
+    // ...
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/DomainService.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/DomainService.java
new file mode 100644
index 0000000000..983822dfec
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/DomainService.java
@@ -0,0 +1,95 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.causeway.applib.services.bookmark.Bookmark;
+
+/**
+ * Indicates that the class should be automatically recognized as a domain service.
+ *
+ * <p>
+ * Also indicates whether the domain service acts as a repository for an entity, and menu ordering UI hints.
+ * </p>
+ *
+ * @implNote Meta annotation {@link Service} allows for the Spring framework to pick up (discover) the
+ * annotated type.
+ * For more details see {@code org.apache.causeway.core.config.beans.IsisBeanFactoryPostProcessorForSpring}.
+ *
+ * @see DomainObject
+ * @see DomainServiceLayout
+ *
+ * @since 1.x {@index}
+ */
+@Named()
+@Inherited
+@Target({
+        ElementType.TYPE,
+        ElementType.ANNOTATION_TYPE
+})
+@Retention(RetentionPolicy.RUNTIME)
+@Service @Singleton
+public @interface DomainService {
+
+    /**
+     * Alternative logical type name(s) for the annotated type.
+     * @see Bookmark
+     * @see Named
+     */
+    String[] aliased() default {};
+
+    /**
+     * The nature of this service, either in the UI or REST only
+     *
+     * @see DomainObject#nature()
+     */
+    NatureOfService nature()
+            default NatureOfService.VIEW;
+
+    /**
+     * The logical name of this object's type, that uniquely and fully qualifies it.
+     * The logical name is analogous to - but independent of - the actual fully qualified class name.
+     * eg. {@code sales.CustomerService} for a class 'org.mycompany.services.CustomerService'
+     * <p>
+     * This value, if specified, is used in the serialized form of the object's {@link Bookmark}.
+     * A {@link Bookmark} is used by the framework to uniquely identify an object over time
+     * (same concept as a URN).
+     * Otherwise, if not specified, the default Spring Bean name is used instead.
+     * </p>
+     * @deprecated use Spring semantics instead, eg. {@link Named} or equivalent
+     * @see Named
+     */
+    @Deprecated(forRemoval = true, since = "2.0.0-M8")
+    // commented out: let the IsisBeanFactoryPostProcessorForSpring take care of that!
+    //@AliasFor(annotation = Named.class, attribute = "value")
+    String logicalTypeName()
+            default "";
+
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/DomainServiceLayout.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/DomainServiceLayout.java
new file mode 100644
index 0000000000..cb088144cb
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/DomainServiceLayout.java
@@ -0,0 +1,83 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Layout hints for domain services.
+ *
+ * <p>
+ * Also indicates the name, and menu ordering UI hints.
+ * </p>
+ *
+ * @see DomainService
+ * @see DomainObjectLayout
+ *
+ * @since 1.x {@index}
+ */
+@Inherited
+@Target({
+        ElementType.TYPE,
+        ElementType.ANNOTATION_TYPE
+})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DomainServiceLayout {
+
+    /**
+     * The menubar in which the menu that holds this service's actions should reside.
+     */
+    MenuBar menuBar()
+            default MenuBar.NOT_SPECIFIED;
+
+    /**
+     * Enumerates the available menu bars for positioning a domain service's
+     * actions as menu items.
+     *
+     * @since 1.x {@index}
+     */
+    public enum MenuBar {
+        PRIMARY,
+        SECONDARY,
+        TERTIARY,
+        NOT_SPECIFIED
+    }
+
+    /**
+     * Name of this class (overriding the name derived from its name in code).
+     *
+     * <p>
+     * A typical use case is if the desired name is a reserved Java keyword, such as `default` or `package`.
+     * </p>
+     *
+     * @see ActionLayout#named()
+     * @see ParameterLayout#named()
+     * @see PropertyLayout#named()
+     * @see CollectionLayout#named()
+     * @see DomainObjectLayout#named()
+     */
+    String named()
+            default "";
+
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Editing.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Editing.java
new file mode 100644
index 0000000000..471a880d07
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Editing.java
@@ -0,0 +1,52 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+/**
+ * The available policies for editing properties and collections.
+ * @since 1.x {@index}
+ */
+public enum Editing {
+
+    /**
+     * The editing of the object should be as per the default editing policy configured in <tt>application.properties</tt>.
+     *
+     * <p>
+     *     If no editing policy is configured, then the editing is enabled.
+     * </p>
+     */
+    AS_CONFIGURED,
+
+    /**
+     * Audit changes to this object.
+     */
+    ENABLED,
+
+    /**
+     * Do not allow the properties to be edited, or the collections to be added to/removed from.
+     */
+    DISABLED,
+
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/EntityChangeKind.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/EntityChangeKind.java
new file mode 100644
index 0000000000..7b386392b9
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/EntityChangeKind.java
@@ -0,0 +1,29 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+/**
+ *
+ * @since 2.0 {@index}
+ */
+public enum EntityChangeKind {
+    CREATE,
+    UPDATE,
+    DELETE,
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/HomePage.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/HomePage.java
new file mode 100644
index 0000000000..d7662b8751
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/HomePage.java
@@ -0,0 +1,42 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Annotated on a view model to indicate that it should be used as the home page.
+ *
+ * <p>
+ *     The view model is instantiated through a no-arg constructor, so must in effect be stateless.
+ *     Typically it will use injected repositories in order to display a dashboard, and offer actions
+ *     to traverse or operate on the rendered state.
+ * </p>
+ * @since 2.0 {@index}
+ */
+@Inherited
+@Target({ ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface HomePage {
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/InteractionScope.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/InteractionScope.java
new file mode 100644
index 0000000000..875f16a2ae
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/InteractionScope.java
@@ -0,0 +1,53 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.springframework.context.annotation.Scope;
+
+/**
+ * {@code @InteractionScope} is a specialization of {@link Scope @Scope} for a
+ * component whose lifecycle is bound to the current top-level Interaction,
+ * in other words that it is private to the &quot;current user&quot;.
+ *
+ * <p>Specifically, {@code @InteractionScope} is a <em>composed annotation</em> that
+ * acts as a shortcut for {@code @Scope("interaction")}.
+ *
+ * <p>{@code @InteractionScope} may be used as a meta-annotation to create custom
+ * composed annotations.
+ *
+ * @since 2.0 {@index}
+ * @see org.springframework.web.context.annotation.SessionScope
+ * @see org.springframework.web.context.annotation.ApplicationScope
+ * @see org.springframework.context.annotation.Scope
+ * @see org.springframework.stereotype.Component
+ * @see org.springframework.context.annotation.Bean
+ */
+@Target({ElementType.TYPE, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Scope("interaction")
+public @interface InteractionScope {
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Introspection.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Introspection.java
new file mode 100644
index 0000000000..5612e57bab
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Introspection.java
@@ -0,0 +1,225 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+/**
+ * The available policies as to how class introspection should process
+ * members, supporting methods and callback methods.
+ * <p>
+ * Particularly whether to consider or ignore non-public members as contributors
+ * to the meta-model (encapsulation).
+ * And also whether or not to enforce presence of the {@link Domain.Include}
+ * annotation on those members.
+ *
+ * @since 2.0 {@index}
+ */
+public enum Introspection {
+
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or super-classes/interfaces).
+     */
+    NOT_SPECIFIED,
+
+    /**
+     * Introspection should be handled as per the default introspection policy
+     * configured in <tt>application.properties</tt>.
+     * <p>
+     * If not configured, then encapsulation is disabled
+     * and presence of the {@link Domain.Include} annotation is not enforced.
+     */
+    AS_CONFIGURED,
+
+    /**
+     * Introspect public and non-public members.
+     *
+     * <p>
+     *      All methods intended to be part of the meta-model
+     *      (whether representing a member or a supporting method) must be annotated.
+     *      Members using one of {@link Action}, {@link Property}, {@link Collection},
+     *      while supporting methods with {@link Domain.Include}
+     *      (usually as a meta-annotation on {@link MemberSupport}).
+     *      However, the methods can have any visibility, including private.
+     * </p>
+     *
+     * <p>
+     *     For mixins (where the mixin class itself is annotated with {@link Action}, {@link Property} or
+     *     {@link Collection}, then the member method should instead be annotated the same as the supporting
+     *     methods, {@link Domain.Include} or {@link MemberSupport}.
+     * </p>
+     */
+    ENCAPSULATION_ENABLED,
+
+    /**
+     * Introspect public members only, while
+     * presence of at least one appropriate domain annotation is enforced.
+     *
+     * <p>
+     * All public methods intended to represent members must be annotated (or meta-annotated) with
+     * {@link Action}, {@link Property} or {@link Collection}.
+     * </p>
+     *
+     * <p>
+     * Any non-excluded public methods with a supporting method prefix
+     * do not need to be annotated and
+     * are automatically associated with their corresponding member method.
+     * If no corresponding member method can be found, meta-model validation will
+     * fail with an 'orphaned member support' method violation.
+     * </p>
+     *
+     * <p>
+     *     For mixins (where the mixin class itself is annotated with {@link Action}, {@link Property} or
+     *     {@link Collection}, then the member method should instead be annotated the same as the supporting
+     *     methods, {@link Domain.Include} or {@link MemberSupport}.
+     * </p>
+     */
+    ANNOTATION_REQUIRED,
+
+    /**
+     * Introspect public members only, while
+     * presence of domain annotations is optional.
+     *
+     * <p>
+     * All public methods are considered as part of the meta-model,
+     * unless explicitly excluded using {@link Domain.Exclude}
+     * (usually as a meta-annotation on {@link Programmatic}).
+     * </p>
+     *
+     * <p>
+     * Any non-excluded public methods with a supporting method prefix
+     * do not need to be annotated and
+     * are automatically associated with their corresponding member method.
+     * If no corresponding member method can be found, meta-model validation will
+     * fail with an 'orphaned member support' method violation.
+     * </p>
+     */
+    ANNOTATION_OPTIONAL,
+
+    ;
+
+    public boolean isNotSpecified() {
+        return this == NOT_SPECIFIED;
+    }
+
+    public boolean isAsConfigured() {
+        return this == AS_CONFIGURED;
+    }
+
+    /**
+     * Effectively applies on a per class basis, when introspecting
+     * meta-model members and member-support methods.
+     */
+    @Getter
+    @RequiredArgsConstructor
+    public static enum IntrospectionPolicy {
+        /**
+         * Introspect public and non-public members.
+         *
+         * <p>
+         *     All methods must be annotated.  Typically members will be annotated using one of {@link Action},
+         *     {@link Property}, {@link Collection}, and supporting methods with either {@link Domain.Include} or
+         *     the equivalent meta-annotation, {@link MemberSupport}.
+         * </p>
+         *
+         * <p>
+         *     For mixins (where the mixin class itself is annotated with {@link Action}, {@link Property} or
+         *     {@link Collection}, then the member method should instead be annotated the same as the supporting
+         *     methods, {@link Domain.Include} or {@link MemberSupport}.
+         * </p>
+         */
+        ENCAPSULATION_ENABLED(
+                EncapsulationPolicy.ENCAPSULATED_MEMBERS_SUPPORTED,
+                MemberAnnotationPolicy.MEMBER_ANNOTATIONS_REQUIRED,
+                SupportMethodAnnotationPolicy.SUPPORT_METHOD_ANNOTATIONS_REQUIRED),
+
+        /**
+         * Introspect public members only, requiring the member to be annotated using an appropriate domain annotation
+         * {@link Action}, {@link Property}, {@link Collection} is required.
+         *
+         * <p>
+         *     Supporting methods do <i>not</i> need to be annotated.
+         * </p>
+         *
+         * <p>
+         *     For mixins (where the mixin class itself is annotated with {@link Action}, {@link Property} or
+         *     {@link Collection}, then the member method should instead be annotated the same as the supporting
+         *     methods, {@link Domain.Include} or {@link MemberSupport}.
+         * </p>
+         */
+        ANNOTATION_REQUIRED(
+                EncapsulationPolicy.ONLY_PUBLIC_MEMBERS_SUPPORTED,
+                MemberAnnotationPolicy.MEMBER_ANNOTATIONS_REQUIRED,
+                SupportMethodAnnotationPolicy.SUPPORT_METHOD_ANNOTATIONS_OPTIONAL),
+
+        /**
+         * Introspect public members only; neither the member not supporting methods need be annotated.
+         */
+        ANNOTATION_OPTIONAL(
+                EncapsulationPolicy.ONLY_PUBLIC_MEMBERS_SUPPORTED,
+                MemberAnnotationPolicy.MEMBER_ANNOTATIONS_OPTIONAL,
+                SupportMethodAnnotationPolicy.SUPPORT_METHOD_ANNOTATIONS_OPTIONAL),
+        ;
+
+        private final EncapsulationPolicy encapsulationPolicy;
+        private final MemberAnnotationPolicy memberAnnotationPolicy;
+        private final SupportMethodAnnotationPolicy supportMethodAnnotationPolicy;
+
+    }
+
+
+    /**
+     * Effectively applies on a per class basis, when introspecting
+     * meta-model members and member-support methods.
+     */
+    public static enum EncapsulationPolicy {
+        ONLY_PUBLIC_MEMBERS_SUPPORTED,
+        ENCAPSULATED_MEMBERS_SUPPORTED;
+        public boolean isEncapsulatedMembersSupported() {
+            return this == ENCAPSULATED_MEMBERS_SUPPORTED;
+        }
+    }
+
+    /**
+     * Effectively applies on a per class basis, when introspecting
+     * class members for the meta-model.
+     */
+    public static enum MemberAnnotationPolicy {
+        MEMBER_ANNOTATIONS_REQUIRED,
+        MEMBER_ANNOTATIONS_OPTIONAL;
+        public boolean isMemberAnnotationsRequired() {
+            return this == MEMBER_ANNOTATIONS_REQUIRED;
+        }
+    }
+
+    /**
+     * Effectively applies on a per class basis, when introspecting
+     * class (object- and member-) support methods for the meta-model.
+     */
+    public static enum SupportMethodAnnotationPolicy {
+        SUPPORT_METHOD_ANNOTATIONS_REQUIRED,
+        SUPPORT_METHOD_ANNOTATIONS_OPTIONAL;
+        public boolean isSupportMethodAnnotationsRequired() {
+            return this == SUPPORT_METHOD_ANNOTATIONS_REQUIRED;
+        }
+    }
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/LabelPosition.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/LabelPosition.java
new file mode 100644
index 0000000000..b0246effa7
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/LabelPosition.java
@@ -0,0 +1,50 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The positioning of a label for a property or action parameter.
+ *
+ * @since 1.x {@index}
+ * @see org.apache.causeway.applib.annotation.PropertyLayout
+ * @see org.apache.causeway.applib.annotation.ParameterLayout
+ */
+@XmlType(
+        namespace = "http://isis.apache.org/applib/layout/component"
+        )
+public enum LabelPosition {
+
+    DEFAULT,
+    LEFT,
+    /**
+     * Right position of the label for Boolean properties.
+     * <strong>Not supported</strong> for now for other types.
+     */
+    RIGHT,
+    TOP,
+    NONE,
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/LogicalTypeName.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/LogicalTypeName.java
new file mode 100644
index 0000000000..64e56aee3f
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/LogicalTypeName.java
@@ -0,0 +1,51 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.inject.Named;
+
+/**
+ * Introduced to allow for abstract types to be mapped to a logical-type-name,
+ * for the security model to apply permission checks against.
+ * @deprecated use {@link Named} instead
+ * @see Named
+ */
+@Inherited
+@Target({
+        ElementType.TYPE,
+        ElementType.ANNOTATION_TYPE
+})
+@Retention(RetentionPolicy.RUNTIME)
+@Deprecated(forRemoval = true, since = "2.0.0-M8")
+public @interface LogicalTypeName {
+
+    /**
+     * If unspecified, the fully-qualified class name is used instead.
+     * @see DomainObject#logicalTypeName()
+     */
+    String value()
+        default "";
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/MemberSupport.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/MemberSupport.java
new file mode 100644
index 0000000000..4c87425cb5
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/MemberSupport.java
@@ -0,0 +1,50 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Indicates that a method is a supporting-method, one that contributes (hide, validate, ...)
+ * to an <i>Action</i>, <i>Property</i> or <i>Collection</i>.
+ * <p>
+ * For <i>mixins</i> is also allowed to be placed on the mixin's main method.
+ * <p>
+ * By placing the {@link MemberSupport} annotation on a method, a contract with the meta-model is enforced,
+ * such that this method must be recognized by the meta-model and cannot be ignored.
+ * <p>
+ * It is complementary to {@link ObjectSupport} and {@link ObjectLifecycle},
+ * and in some sense acts as the semantic counterpart to {@link Programmatic}.
+ *
+ * @since 2.0 {@index}
+ * @see ObjectSupport
+ * @see ObjectLifecycle
+ * @see Programmatic
+ */
+@Inherited
+@Target({ ElementType.METHOD, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@Domain.Include // meta annotation, in support of meta-model validation
+public @interface MemberSupport {
+
+}
\ No newline at end of file
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/MinLength.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/MinLength.java
new file mode 100644
index 0000000000..0b335ca51f
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/MinLength.java
@@ -0,0 +1,37 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Specify the minimum number of characters for an auto-complete search argument.
+ * @since 1.x {@index}
+ */
+@Inherited
+@Target({ ElementType.PARAMETER })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface MinLength {
+    int value();
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Module.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Module.java
new file mode 100644
index 0000000000..d7be3f770e
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Module.java
@@ -0,0 +1,60 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+/**
+ * Intended to be annotated on the root marker class of a (Maven) module which contains a single coherent set of
+ * functionality, possibly including domain services.
+ *
+ * <p>
+ * A {@link Module @Module} (because it's a meta-annotation) is also a Spring {@link Configuration @Configuration},
+ * which means that the functionality can be depended upon transitively using Spring's {@link Import @Import}
+ * annotation. Normally the import graph mirrors the dependencies in Maven.
+ * </p>
+ *
+ * <p>
+ * Also, a {@link Module @Module} also declares the Spring {@link ComponentScan @ComponentScan} (with no parameters),
+ * which means that any domain services in the same package or subpackages are automatically found and registered.
+ * </p>
+ *
+ * @since 2.x {@index}
+ * @implNote - there are possible performance implications from using this annotation, because it may result in
+ *             scanning more classes than are needed.  It is therefore not used within the framework code, but is
+ *             provided as a convenience by domain applications.
+ */
+@Inherited
+@Target({ ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@Configuration
+@Documented
+@ComponentScan
+public @interface Module {
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Nature.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Nature.java
new file mode 100644
index 0000000000..872f20dd54
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Nature.java
@@ -0,0 +1,104 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.springframework.cglib.proxy.Mixin;
+
+import org.apache.causeway.applib.ViewModel;
+
+/**
+ * The different sorts of domain objects recognized by Isis.
+ *
+ * @since 1.x {@index}
+ */
+public enum Nature {
+
+    /**
+     * The default; allows the programmer to combine <tt>@DomainObject</tt> annotation with the
+     * {@link ViewModel} annotation, or the {@link XmlRootElement} annotation, or by implementing the
+     * {@link org.apache.causeway.applib.ViewModel} interface.
+     */
+    NOT_SPECIFIED,
+
+    /**
+     * A domain entity whose persistence is managed internally by Isis,
+     * using JPA or JDO as the persistence implementation.
+     * <p>
+     * Domain entities are considered to be part of the domain model layer.
+     * <p>
+     * Currently implies no additional semantics other than documentation.
+     */
+    ENTITY,
+
+    /**
+     * An object that is conceptually part of the application layer, and which surfaces behavior and/or state that
+     * is aggregate of one or more domain entity.
+     *
+     * <p>
+     * The identity of a view model is determined solely by the state of object's properties.
+     * Using this nature should be considered exactly equivalent to annotating with {@link ViewModel}.
+     *
+     * <p>
+     * Note that collections are ignored; if their state is required to fully identify the view model, define the
+     * view model using the JAXB {@link XmlRootElement} annotation instead (where the object's state is serialized
+     * to an arbitrarily deep graph of data, with references to persistent entities transparently resolved to
+     * <code>&lt;oid-dto&gt;</code> elements).
+     *
+     * @see ViewModel
+     */
+    VIEW_MODEL,
+
+    /**
+     * An object that acts as a mix-in to some other object, contributing behavior and/or derived state based on the
+     * domain object.
+     *
+     * @see Mixin
+     */
+    MIXIN,
+
+    /**
+     * An object that is entirely managed by the underlying IoC container.
+     * @apiNote EXPERIMENTAL
+     */
+    BEAN,
+    ;
+
+    public boolean isNotSpecified() {
+        return this == Nature.NOT_SPECIFIED;
+    }
+
+    public boolean isEntity() {
+        return this == Nature.ENTITY;
+    }
+
+    public boolean isMixin() {
+        return this == Nature.MIXIN;
+    }
+
+    public boolean isViewModel() {
+        return this == Nature.VIEW_MODEL;
+    }
+
+    public boolean isBean() {
+        return this == Nature.BEAN;
+    }
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/NatureOfService.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/NatureOfService.java
new file mode 100644
index 0000000000..b7c3312e19
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/NatureOfService.java
@@ -0,0 +1,60 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+/**
+ * The different sorts of domain services recognized by Isis, as specified in {@link DomainService#nature()}
+ * @since 1.x {@index}
+ */
+public enum NatureOfService {
+    /**
+     * The service's actions appear in the REST API and in 'viewers', eg. in the menu bar.
+     *
+     * @apiNote
+     * Contributing actions to the 'viewer' implies, that these must also be exposed to the REST API,
+     * simply because alternative viewers might be solely based on the provided REST end-points.
+     */
+    VIEW,
+    /**
+     * The service's actions should only be visible in the REST API exposed by the Restful Objects viewer.
+     */
+    REST,
+
+    ;
+
+    // -- BASIC PREDICATES
+
+    /**
+     * Whether a service contributes its actions to viewers and to the REST API.
+     * @see NatureOfService#VIEW
+     */
+    public boolean isView() {
+        return this == VIEW;
+    }
+
+    /**
+     * Whether a service contributes its actions exclusively to the REST API.
+     * @see NatureOfService#REST
+     */
+    public boolean isRestOnly() {
+        return this == REST;
+    }
+
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Navigable.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Navigable.java
new file mode 100644
index 0000000000..e3546d3f20
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Navigable.java
@@ -0,0 +1,40 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+/**
+ *
+ * Tells the framework which method or field to use in order to construct a navigable chain of
+ * parent domain object instances. The Navigable.PARENT 'flag' can only be used once per class declaration.
+ *
+ * @since 2.0 {@index}
+ */
+public enum Navigable {
+
+    NOT_SPECIFIED,
+    IGNORE,
+    PARENT,
+    ;
+
+    public boolean isParent() {
+        return this == PARENT;
+    }
+
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/ObjectLifecycle.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/ObjectLifecycle.java
new file mode 100644
index 0000000000..e2b0eb8464
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/ObjectLifecycle.java
@@ -0,0 +1,50 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Indicates that a method is an <i>Object</i> lifecycle callback method,
+ * one of (created, loaded, saved, ...).
+ * <p>
+ * May only be placed on <i>domain object</i> methods, not <i>mixins</i> nor <i>domain services</i>.
+ * <p>
+ * By placing the {@link ObjectLifecycle} annotation on a method, a contract with the meta-model is enforced,
+ * such that this method must be recognized by the meta-model and cannot be ignored.
+ * <p>
+ * It is complementary to {@link MemberSupport} and {@link ObjectSupport},
+ * and in some sense acts as the semantic counterpart to {@link Programmatic}.
+ *
+ * @since 2.0 {@index}
+ * @see ObjectSupport
+ * @see MemberSupport
+ * @see Programmatic
+ */
+@Inherited
+@Target({ ElementType.METHOD, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@Domain.Include // meta annotation, in support of meta-model validation
+public @interface ObjectLifecycle {
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/ObjectSupport.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/ObjectSupport.java
new file mode 100644
index 0000000000..3c83445dd8
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/ObjectSupport.java
@@ -0,0 +1,50 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Indicates that a method is a supporting-method, one that contributes (disabled, hidden, ...)
+ * to its <i>Object</i>.
+ * <p>
+ * May only be placed on <i>domain object</i> methods, not <i>mixins</i> nor <i>domain services</i>.
+ * <p>
+ * By placing the {@link ObjectSupport} annotation on a method, a contract with the meta-model is enforced,
+ * such that this method must be recognized by the meta-model and cannot be ignored.
+ * <p>
+ * It is complementary to {@link MemberSupport} and {@link ObjectLifecycle},
+ * and in some sense acts as the semantic counterpart to {@link Programmatic}.
+ *
+ * @since 2.0 {@index}
+ * @see ObjectLifecycle
+ * @see MemberSupport
+ * @see Programmatic
+ */
+@Inherited
+@Target({ ElementType.METHOD, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@Domain.Include // meta annotation, in support of meta-model validation
+public @interface ObjectSupport {
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Optionality.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Optionality.java
new file mode 100644
index 0000000000..883b43f92f
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Optionality.java
@@ -0,0 +1,70 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+/**
+ * Whether the property or parameter is optional or is required (aka mandatory).
+ * @since 1.x {@index}
+ */
+public enum Optionality {
+
+    /**
+     * Default, usually meaning mandatory for properties and always meaning mandatory for parameters.
+     *
+     * <p>
+     * For properties, will be false unless JDO <code>javax.jdo.annotations.Column</code> has also specified with
+     * <code>javax.jdo.annotations.Column#allowsNull()</code> set to <code>true</code>.
+     * </p>
+     */
+    DEFAULT,
+
+    /**
+     * Indicates that the property or parameter is not required.
+     */
+    OPTIONAL,
+
+    /**
+     * Indicates that the property is required (even if the JDO <code>javax.jdo.annotations.Column</code> annotation
+     * says otherwise).
+     *
+     * <p>
+     * When using the JDO/DataNucleus objectstore, it is sometimes necessary to annotate a property as optional
+     * (using <code>javax.jdo.annotations.Column#allowsNull()</code> set to <code>true</code>), even if the property is
+     * logically mandatory.  For example, this can occur when the property is in a subtype class that has been
+     * "rolled up" to the superclass table using <code>javax.jdo.annotations.Inheritance</code>> with the
+     * <code>javax.jdo.annotations.InheritanceStrategy#SUPERCLASS_TABLE</code> superclass strategy.
+     * </p>
+     *
+     * <p>
+     * This annotation, therefore, is intended to override any objectstore-specific
+     * annotation, so that Isis can apply the constraint even though the objectstore
+     * is unable to do so.
+     * </p>
+     */
+    MANDATORY,
+
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED;
+
+    public boolean isOptional() { return this == OPTIONAL; }
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Parameter.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Parameter.java
new file mode 100644
index 0000000000..ee6cae8349
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Parameter.java
@@ -0,0 +1,150 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.causeway.applib.spec.Specification;
+import org.apache.causeway.applib.value.Blob;
+import org.apache.causeway.applib.value.Clob;
+
+/**
+ * Collects together all domain semantics of an action parameter within a
+ * single annotation.
+ *
+ * @see Action
+ * @see Property
+ * @see ParameterLayout
+ *
+ * @since 1.x {@index}
+ */
+@Inherited
+@Target({
+        ElementType.PARAMETER,
+        ElementType.ANNOTATION_TYPE
+})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Parameter {
+
+    /**
+     * For uploading {@link Blob} or {@link Clob}, optionally restrict the files accepted (eg <tt>.xslx</tt>).
+     *
+     * <p>
+     * The value should be of the form "file_extension|audio/*|video/*|image/*|media_type".
+     * </p>
+     *
+     * <p>
+     *     Note that this does not prevent the user from uploading some other file type; rather it merely defaults the
+     *     file type in the file open dialog.
+     * </p>
+     *
+     * @see Action#fileAccept()
+     * @see Property#fileAccept()
+     * @see <a href="http://www.w3schools.com/tags/att_input_accept.asp">http://www.w3schools.com</a>
+     */
+    String fileAccept()
+            default "";
+
+    /**
+     * The maximum entry length of a string parameter (it is ignored for other
+     * types).
+     *
+     * <p>
+     *     The default value (<code>-1</code>) indicates that no maxLength has
+     *     been specified.
+     * </p>
+     *
+     * @see Property#maxLength()
+     */
+    int maxLength()
+            default -1;
+
+    /**
+     * The {@link org.apache.causeway.applib.spec.Specification}(s) to be satisfied by this parameter.
+     *
+     * <p>
+     * If more than one is provided, then all must be satisfied (in effect &quot;AND&quot;ed together).
+     * </p>
+     *
+     * @see Property#mustSatisfy()
+     */
+    Class<? extends Specification>[] mustSatisfy()
+            default {};
+
+    /**
+     * Whether this parameter is optional or is mandatory (ie required).
+     *
+     * <p>
+     *     For parameters the default value, {@link org.apache.causeway.applib.annotation.Optionality#DEFAULT}, is taken
+     *     to mean that the parameter is required.
+     * </p>
+     *
+     * @see Property#optionality()
+     */
+    Optionality optionality()
+            default Optionality.NOT_SPECIFIED;
+
+    /**
+     * Regular expression pattern that a value should conform to, and can be formatted as.
+     *
+     * @see Property#regexPattern()
+     * @see Parameter#regexPatternReplacement()
+     * @see Parameter#regexPatternFlags()
+     */
+    String regexPattern()
+            default "";
+
+    /**
+     * Pattern flags, as per {@link java.util.regex.Pattern#compile(String, int)} .
+     *
+     * <p>
+     *     The default value, <code>0</code>, means that no flags have been specified.
+     * </p>
+     *
+     * @see Parameter#regexPattern()
+     */
+    int regexPatternFlags()
+            default 0;
+
+    /**
+     * Replacement text for the pattern in generated error message.
+     *
+     * @see Parameter#regexPattern()
+     */
+    String regexPatternReplacement()
+            default "Doesn't match pattern";
+
+    /**
+     * Whether dependent parameters should be reset to their default if an earlier parameter changes its
+     * value, or whether instead a parameter value, once changed by the end-user, should never be
+     * overwritten even if the end-user changes an earlier parameter value.
+     */
+    /**
+     * Whether this parameter should be reset to its default if an earlier parameter changes its
+     * value, or whether instead the parameter's value, once changed by the end-user, should never be
+     * overwritten even if the end-user changes an earlier parameter value.
+     */
+    DependentDefaultsPolicy dependentDefaultsPolicy()
+            default DependentDefaultsPolicy.AS_CONFIGURED;
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/ParameterLayout.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/ParameterLayout.java
new file mode 100644
index 0000000000..ec5aabede1
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/ParameterLayout.java
@@ -0,0 +1,130 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Collects together all layout hints for action parameters in a single
+ * annotation.
+ *
+ * @since 1.x {@index}
+ *
+ * @see ActionLayout
+ * @see PropertyLayout
+ * @see Parameter
+ */
+@Inherited
+@Target({
+        ElementType.PARAMETER,
+        ElementType.ANNOTATION_TYPE
+})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ParameterLayout {
+
+    /**
+     * Indicates the css class that a parameter should have, to
+     * allow more targeted styling in <code>application.css</code>.
+     *
+     * @see PropertyLayout#cssClass()
+     * @see ActionLayout#cssClass()
+     * @see CollectionLayout#cssClass()
+     * @see DomainObjectLayout#cssClass()
+     */
+    String cssClass()
+            default "";
+
+    /**
+     * Description of this property, eg to be rendered in a tooltip.
+     *
+     * @see PropertyLayout#describedAs()
+     * @see ActionLayout#describedAs()
+     * @see CollectionLayout#describedAs()
+     * @see DomainObjectLayout#describedAs()
+     */
+    String describedAs()
+            default "";
+
+    /**
+     * In forms, positioning of the label (left, top or none) relative to the parameter value.
+     *
+     * <p>
+     * If not specified, the default depends upon the parameter value's
+     * datatype (including whether the field is {@link #multiLine()}.
+     * </p>
+     *
+     * @see #multiLine()
+     */
+    LabelPosition labelPosition()
+            default LabelPosition.NOT_SPECIFIED;
+
+    /**
+     * Name of this action parameter.
+     *
+     * <p>
+     *     The name of an action parameters is available to the framework
+     *     provided that the code is compiled using <code>-parameters</code>
+     *     (for <code>javac</code>.
+     * </p>
+     *
+     * <p>
+     * The only reason then to name the parameter is if the desired name is a reserved Java keyword, such as `default` or `package`.
+     * </p>
+     *
+     * @see ActionLayout#named()
+     * @see PropertyLayout#named()
+     * @see CollectionLayout#named()
+     * @see DomainObjectLayout#named()
+     * @see DomainServiceLayout#named()
+     */
+    String named()
+            default "";
+
+    /**
+     * For string parameters (and properties), whether to render as a text area
+     * over multiple lines.
+     *
+     * <p>
+     *     If set to &gt; 1, then {@link #labelPosition()} defaults to
+     *     {@link LabelPosition#TOP top}.
+     * </p>
+     *
+     * @see #labelPosition()
+     * @see PropertyLayout#multiLine()
+     */
+    int multiLine()
+            default -1;
+
+    /**
+     * The typical entry length of a field, use to determine the optimum width for display
+     *
+     * <p>
+     *     Note: the Wicket viewer does not use this information.
+     * </p>
+     *
+     * @see PropertyLayout#typicalLength()
+     */
+    int typicalLength()
+            default -1;
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/PriorityPrecedence.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/PriorityPrecedence.java
new file mode 100644
index 0000000000..bff6ab0ee9
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/PriorityPrecedence.java
@@ -0,0 +1,82 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import org.springframework.core.Ordered;
+
+import lombok.experimental.UtilityClass;
+
+/**
+ * Constants for use with {@link javax.annotation.Priority}, used both to determine which service to inject into a
+ * scalar field when there are multiple candidates, and also to order services if injecting into a vector field (in
+ * other words, into a {@link java.util.List}).
+ *
+ * @see javax.annotation.Priority
+ * @see org.springframework.core.annotation.Order
+ *
+ * @since 2.0 {@index}
+ */
+@UtilityClass
+public class PriorityPrecedence {
+
+    /**
+     * For domain services with the highest precedence (priority) value.
+     *
+     * <p>
+     * No framework services use this constant, but some very fundamental services (eg for security)
+     * that are not expected to be overridden use a value that is only a little after this first value.
+     * </p>
+     *
+     * <p>
+     *     Note that this is a non-negative value, because {@link javax.annotation.Priority}'s javadoc states:
+     *     &quot;priority values should generally be non-negative, with negative values * reserved for special meanings
+     *     such as <i>undefined</i> or <i>not specified</i>.&quot;.  In particular, it is <i>not</i> the same as
+     *     {@link Ordered#HIGHEST_PRECEDENCE}.
+     * </p>
+     *
+     * @see javax.annotation.Priority
+     */
+    public static final int FIRST = 0;
+
+    /**
+     * For domain services that act as a fallback, and which will typically be overridden.
+     *
+     * @see java.lang.Integer#MAX_VALUE
+     * @see Ordered#LOWEST_PRECEDENCE
+     */
+    public static final int LAST = Ordered.LOWEST_PRECEDENCE;
+
+    /**
+     * For framework for services that could be overridden by application code (though not commonly).
+     */
+    public static final int MIDPOINT = (LAST - FIRST) / 2;
+
+    /**
+     * For framework for services that are unlikely to be overridden by application code.
+     */
+    public static final int EARLY = (MIDPOINT - FIRST) / 2;
+
+    /**
+     * For framework services that are expected to be overridden by application code, or that act as a fallback.
+     */
+    public static final int LATE = MIDPOINT + (LAST - MIDPOINT) / 2;
+
+
+}
+
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Programmatic.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Programmatic.java
new file mode 100644
index 0000000000..81d3bd633c
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Programmatic.java
@@ -0,0 +1,54 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Indicates that an property, collection or action is to be called
+ * programmatically and should be ignored from the metamodel.
+ *
+ * <p>
+ * For example, it may be a helper method that needs to be <tt>public</tt> but
+ * that doesn't conform to the requirements of an action (for example, invalid
+ * parameter types).
+ *
+ * <p>
+ * It can also be added to a type, meaning that the type is ignored from the metamodel.
+ * This is intended as a &quot;get out of jail&quot; for any classes from unit tests, say,
+ * that end up on the classpath of integration tests but should otherwise be ignored.
+ * @apiNote synonym for {@link Domain.Exclude}
+ * @see Domain.Exclude
+ * @since 1.x {@index}
+ */
+@Inherited
+@Target({
+        ElementType.METHOD,
+        ElementType.TYPE,
+        ElementType.FIELD
+})
+@Retention(RetentionPolicy.RUNTIME)
+@Domain.Exclude // meta annotation
+public @interface Programmatic {
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Projecting.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Projecting.java
new file mode 100644
index 0000000000..52404d1f10
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Projecting.java
@@ -0,0 +1,38 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+/**
+ *
+ * @since 1.x {@index}
+ */
+public enum Projecting {
+
+    /**
+     * The property holds the underlying domain object of which this (view model) object is a projection.
+     */
+    PROJECTED,
+
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED;
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/PromptStyle.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/PromptStyle.java
new file mode 100644
index 0000000000..af8e92ee5a
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/PromptStyle.java
@@ -0,0 +1,91 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * How prompting for new values of a property/arguments for an action should be performed
+ * @since 1.x {@index}
+ */
+@XmlType(
+        namespace = "http://isis.apache.org/applib/layout/component"
+        )
+public enum PromptStyle {
+    /**
+     * Prompt using the style configured by <tt>isis.viewer.wicket.promptStyle</tt>.
+     *
+     * <p>
+     *      If no style is configured, then {@link #INLINE} is assumed.
+     * </p>
+     */
+    AS_CONFIGURED,
+    /**
+     * Use a dialog for the prompt.
+     *
+     * <p>
+     *     This will be either modal dialog (same as if {@link #DIALOG_MODAL} was selected) or sidebar (same as if
+     *     {@link #DIALOG_SIDEBAR} was selected) depending on the value of the
+     *     <code>isis.viewer.wicket.dialogMode</code> configuration property.
+     * </p>
+     */
+    DIALOG,
+    /**
+     * Use a dialog for the prompt, rendered in a sidebar.
+     */
+    DIALOG_SIDEBAR,
+    /**
+     * Use a dialog for the prompt, rendered in a modal dialog.
+     */
+    DIALOG_MODAL,
+    /**
+     * Show the form inline, temporarily replacing the rendering of the property.
+     */
+    INLINE,
+    /**
+     * Applies only to actions, show the form inline, invoked as if editing the property.
+     *
+     * <p>Note that:
+     * <ul>
+     * <li>
+     *     Only one such action should have this attribute set per property.  If there are multiple actions, then
+     *     the first one discovered with the attribute is used.
+     * </li>
+     * <li>
+     *     If the property is editable, then this attribute is ignored (and the action is treated as having a prompt style of {@link #INLINE}).
+     * </li>
+     * <li>
+     *     If applied to a property, then the property's prompt style is simply treated as {@link #INLINE}.
+     * </li>
+     * </ul>
+     * </p>
+     *
+     */
+    INLINE_AS_IF_EDIT,
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED;
+    public boolean isDialogAny() { return this == DIALOG || this == DIALOG_MODAL || this == DIALOG_SIDEBAR; }
+    public boolean isInline() { return this == INLINE; }
+    public boolean isInlineAsIfEdit() { return this == INLINE_AS_IF_EDIT; }
+    public boolean isInlineAny() { return this == INLINE || this == INLINE_AS_IF_EDIT; }
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Property.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Property.java
new file mode 100644
index 0000000000..ff0551d573
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Property.java
@@ -0,0 +1,295 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.causeway.applib.events.domain.PropertyDomainEvent;
+import org.apache.causeway.applib.services.command.Command;
+import org.apache.causeway.applib.services.commanddto.conmap.ContentMappingServiceForCommandDto;
+import org.apache.causeway.applib.services.commanddto.conmap.ContentMappingServiceForCommandsDto;
+import org.apache.causeway.applib.services.commanddto.processor.CommandDtoProcessor;
+import org.apache.causeway.applib.services.iactn.Execution;
+import org.apache.causeway.applib.services.publishing.spi.CommandSubscriber;
+import org.apache.causeway.applib.services.publishing.spi.ExecutionSubscriber;
+import org.apache.causeway.applib.spec.Specification;
+import org.apache.causeway.applib.value.Blob;
+import org.apache.causeway.applib.value.Clob;
+
+/**
+ * Collects together all the domain semantics for the property of a domain
+ * object.
+ *
+ * @see Action
+ * @see Collection
+ * @see DomainObject
+ * @see PropertyLayout
+ *
+ * @since 1.x {@index}
+ */
+@Inherited
+@Target({
+        ElementType.METHOD,
+        ElementType.FIELD,
+        ElementType.TYPE,
+        ElementType.ANNOTATION_TYPE
+})
+@Retention(RetentionPolicy.RUNTIME)
+@DomainObject(nature=Nature.MIXIN, mixinMethod = "prop") // meta annotation, only applies at class level
+@Domain.Include // meta annotation, in support of meta-model validation
+public @interface Property {
+
+    /**
+     * The {@link CommandDtoProcessor} to process this command's DTO.
+     *
+     * <p>
+     *     The processor itself is used by {@link ContentMappingServiceForCommandDto} and
+     *     {@link ContentMappingServiceForCommandsDto} to dynamically transform the DTOs.
+     * </p>
+     *
+     * @see Action#commandDtoProcessor()
+     * @see Property#commandPublishing()
+     */
+    Class<? extends CommandDtoProcessor> commandDtoProcessor()
+            default CommandDtoProcessor.class;
+
+    /**
+     * Whether property edits, captured as {@link Command}s,
+     * should be published to {@link CommandSubscriber}s.
+     *
+     * @see Action#commandPublishing()
+     * @see Property#commandDtoProcessor()
+     */
+    Publishing commandPublishing()
+            default Publishing.NOT_SPECIFIED;
+
+    /**
+     * Indicates that changes to the property that should be posted to the
+     * {@link org.apache.causeway.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link org.apache.causeway.applib.events.domain.PropertyDomainEvent}.
+     *
+     * <p>
+     *     Subscribers of this event can interact with the business rule
+     *     checking (hide, disable, validate) and its modification (before and
+     *     after).
+     * </p>
+     *
+     * <p>For example:
+     * </p>
+     *
+     * <pre>
+     * public static class StartDateChanged extends PropertyDomainEvent { ... }
+     *
+     * &#64;Property(domainEvent=StartDateChanged.class)
+     * public LocalDate getStartDate() { ...}
+     * </pre>
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     *
+     * @see Action#domainEvent()
+     * @see Collection#domainEvent()
+     * @see DomainObject#propertyDomainEvent()
+     */
+    Class<? extends PropertyDomainEvent<?,?>> domainEvent()
+            default PropertyDomainEvent.Default.class;
+
+    /**
+     * Whether the properties of this domain object can be edited, or collections of this object be added to/removed from.
+     *
+     * <p>
+     *     Note that non-editable objects can nevertheless have actions invoked upon them.
+     * </p>
+     *
+     * @see Property#editingDisabledReason()
+     * @see DomainObject#editing()
+     */
+    Editing editing()
+            default Editing.NOT_SPECIFIED;
+
+    /**
+     * If {@link #editing()} is set to {@link Editing#DISABLED},
+     * then the reason to provide to the user as to why this property cannot be edited.
+     *
+     * @see Property#editing()
+     */
+    String editingDisabledReason()
+            default "";
+
+    /**
+     * When set to {@link Publishing#DISABLED},
+     * vetoes publishing of updates for this property.
+     * Otherwise has no effect, except when using {@link Publishing#ENABLED} to override
+     * an inherited property annotation, which is a supported use-case.
+     * <p>
+     * Relates to {@link DomainObject#entityChangePublishing()}, which controls
+     * whether entity-change-publishing is enabled for the corresponding entity type.
+     * @see DomainObject#entityChangePublishing()
+     * @apiNote does only apply to persistent properties of entity objects
+     */
+    Publishing entityChangePublishing()
+            default Publishing.NOT_SPECIFIED;
+
+    /**
+     * Whether
+     * {@link Execution}s
+     * (triggered property edits), should be dispatched to
+     * {@link ExecutionSubscriber}s.
+     *
+     * @see Action#executionPublishing()
+     */
+    Publishing executionPublishing()
+            default Publishing.NOT_SPECIFIED;
+
+    /**
+     * For uploading {@link Blob} or {@link Clob}, optionally restrict the files accepted (eg <tt>.xslx</tt>).
+     *
+     * <p>
+     * The value should be of the form "file_extension|audio/*|video/*|image/*|media_type".
+     * </p>
+     *
+     * <p>
+     *     Note that this does not prevent the user from uploading some other
+     *     file type; rather it merely defaults the file type in the file open dialog.
+     * </p>
+     *
+     * @see <a href="http://www.w3schools.com/tags/att_input_accept.asp">http://www.w3schools.com</a>
+     * @see Parameter#fileAccept()
+     * @see Action#fileAccept()
+     */
+    String fileAccept()
+            default "";
+
+    /**
+     * Indicates where the property is not visible to the user.
+     *
+     * @see Action#hidden()
+     * @see Collection#hidden()
+     */
+    Where hidden()
+            default Where.NOT_SPECIFIED;
+
+    /**
+     * The maximum entry length of a field.
+     *
+     * <p>
+     *     The default value (<code>-1</code>) indicates that no maxLength has been specified.
+     * </p>
+     *
+     * <p>
+     *     NOTE: this will usually be supplemented by a JDO or JPA-specific
+     *     annotation to indicate length of the column in the table to whic
+     *     the entity is mapped.
+     * </p>
+     *
+     * @see Parameter#maxLength()
+     */
+    int maxLength()
+            default -1;
+
+    /**
+     * Indicates whether the property should be included or excluded from mementos.
+     *
+     * <p>
+     *     To ensure that the property is actually not persisted in the objectstore, also annotate with the JDO annotation
+     *     <code>javax.jdo.annotations.NotPersistent</code>
+     * </p>
+     */
+    Snapshot snapshot()
+            default Snapshot.NOT_SPECIFIED;
+
+    /**
+     * The {@link org.apache.causeway.applib.spec.Specification}(s) to be satisfied by this property.
+     *
+     * <p>
+     * If more than one is provided, then all must be satisfied (in effect &quot;AND&quot;ed together).
+     * </p>
+     *
+     * @see Parameter#mustSatisfy()
+     */
+    Class<? extends Specification>[] mustSatisfy()
+            default {};
+
+    /**
+     * Whether this property is optional or is mandatory (ie required).
+     *
+     * <p>
+     *     NOTE: this will usually be supplmented by a JDO or JPA-specific
+     *     annotation to specify the nullability of the corresponding column in
+     *     the table to which the owning entity is mapped.
+     * </p>
+     *
+     * @see Parameter#optionality()
+     */
+    Optionality optionality()
+            default Optionality.NOT_SPECIFIED;
+
+    /**
+     * If set to {@link Projecting#PROJECTED projected}, then indicates that the owner of this property is a view model
+     * which is a projection of some other entity, and that the property holds a reference to that
+     * &quot;underlying&quot;.
+     *
+     * <p>
+     *     This is used to automatically redirect any bookmarks to the view model (projection) to instead be directed
+     *     at the underlying entity.
+     * </p>
+     *
+     * <p>
+     *     Only one such property should be marked as being a projection with a view model.
+     * </p>
+     */
+    Projecting projecting()
+            default Projecting.NOT_SPECIFIED;
+
+    /**
+     * Regular expression pattern that a value should conform to, and can be formatted as.
+     *
+     * @see Parameter#regexPattern()
+     * @see Property#regexPatternReplacement()
+     * @see Property#regexPatternFlags()
+     */
+    String regexPattern()
+            default "";
+
+    /**
+     * Pattern flags, as per {@link java.util.regex.Pattern#compile(String, int)} .
+     *
+     * <p>
+     *     The default value, <code>0</code>, means that no flags have been specified.
+     * </p>
+     *
+     * @see Property#regexPattern()
+     */
+    int regexPatternFlags()
+            default 0;
+
+    /**
+     * Replacement text for the pattern in generated error message.
+     *
+     * @see Property#regexPattern()
+     */
+    String regexPatternReplacement()
+            default "Doesn't match pattern";
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/PropertyLayout.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/PropertyLayout.java
new file mode 100644
index 0000000000..d11f325213
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/PropertyLayout.java
@@ -0,0 +1,259 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Collects together all layout hints for a property of a domain object.
+ *
+ * @see ActionLayout
+ * @see CollectionLayout
+ * @see DomainObjectLayout
+ * @see Property
+ *
+ * @since 1.x {@index}
+ * @see org.apache.causeway.applib.annotation.ParameterLayout
+ */
+@Inherited
+@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.TYPE, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@DomainObject(nature=Nature.MIXIN, mixinMethod = "prop") // meta annotation, only applies at class level
+@Domain.Include // meta annotation, in support of meta-model validation
+public @interface PropertyLayout {
+
+    /**
+     * Indicates the css class that a property should have, to
+     * allow more targeted styling in <code>application.css</code>.
+     *
+     * @see ActionLayout#cssClass()
+     * @see ParameterLayout#cssClass()
+     * @see CollectionLayout#cssClass()
+     * @see DomainObjectLayout#cssClass()
+     */
+    String cssClass()
+            default "";
+
+    /**
+     * Description of this property, eg to be rendered in a tooltip.
+     *
+     * @see ActionLayout#describedAs()
+     * @see ParameterLayout#describedAs()
+     * @see CollectionLayout#describedAs()
+     * @see DomainObjectLayout#describedAs()
+     */
+    String describedAs()
+            default "";
+
+
+    /**
+     * Specifies the <b>id</b> of associated <i>FieldSet</i>.
+     *
+     * <p>
+     * A <i>FieldSet</i> is a layout component for property grouping, that can either be specified via
+     * a <code>Xxx.layout.xml</code> file (with <code>Xxx</code> the domain object name) or is
+     * inferred by the framework via annotations (aka the programming model).
+     * <i>FieldSet</i>s are represented in-memory and requires a framework internal unique id per domain
+     * object type.
+     * </p>
+     * <p>
+     * Following 2 scenarios have slightly different behavior:
+     * </p>
+     *
+     * <h1>XML layout is present</h1>
+     * <p>
+     * When a XML layout is present, every <i>FieldSet</i> <b>id</b> is either explicitly specified in
+     * the file or may be inferred from a non-empty <b>name</b>.
+     * If the <b>name</b> is empty "" or missing, then the <b>id</b> within the file is mandatory.
+     * </p><p>
+     * If this <i>Property</i> is not already explicitly listed within the XML layout, we lookup the
+     * associated <i>FieldSet</i> in the XML layout file first matching by <b>id</b>
+     * using {@code @PropertyLayout(fieldSetId=...)} if any, then falling back to matching by (friendly)
+     * <b>name</b> using @PropertyLayout(fieldSetName=...)} if any.
+     * </p>
+     *
+     * <h1>XML layout is absent</h1>
+     * <p>
+     * We reify (in-memory) the associated <i>FieldSet</i> using {@code @PropertyLayout(fieldSetId=...)}
+     * (if present) as its <b>id</b> and using {@code @PropertyLayout(fieldSetId=...)} as its (friendly)
+     * <b>name</b>.
+     * While if no <b>id</b> is provided an <b>id</b> is inferred from the (friendly) <b>name</b>, in which
+     * case the (friendly) <b>name</b> must not be empty.
+     * Whereas if no (friendly) <b>name</b> is provided a (friendly) <b>name</b> is inferred from the
+     * <b>id</b>, in which case the <b>id</b> must not be empty.
+     * </p><p>
+     * With {@code @PropertyLayout(sequence=...)} the relative position within that <i>FieldSet</i> can be
+     * specified.
+     * </p>
+     *
+     * @see Action#choicesFrom()
+     * @see ActionLayout#fieldSetId()
+     * @see ActionLayout#fieldSetName()
+     * @see PropertyLayout#fieldSetName()
+     * @see PropertyLayout#sequence()
+     */
+    String fieldSetId()
+            default "__infer";
+
+    /**
+     * Specifies the <b>friendly-name</b> of associated <i>FieldSet</i>.
+     * <p>
+     * Explicitly specifying an empty "" <b>friendly-name</b> will suppress the <i>FieldSet</i>'s label
+     * from being rendered.
+     * </p>
+     * <p>
+     * For a more in depth description see {@link PropertyLayout#fieldSetId()}.
+     * </p>
+     *
+     * @see Action#choicesFrom()
+     * @see ActionLayout#fieldSetId()
+     * @see ActionLayout#fieldSetName()
+     * @see PropertyLayout#fieldSetId()
+     * @see PropertyLayout#sequence()
+     */
+    String fieldSetName()
+            default "__infer";
+
+    /**
+     * Indicates where in the UI the property
+     * should <i>not</i> be visible.
+     *
+     * @see ActionLayout#hidden()
+     * @see CollectionLayout#hidden()
+     */
+    Where hidden()
+            default Where.NOT_SPECIFIED;
+
+    /**
+     * In forms, positioning of the label (left, top or none) relative to the property value.
+     *
+     * <p>
+     * If not specified, the default depends upon the property value's
+     * datatype (including whether the field is {@link #multiLine()}.
+     * </p>
+     *
+     * @see #multiLine()
+     * @see ParameterLayout#labelPosition()
+     */
+    LabelPosition labelPosition()
+            default LabelPosition.NOT_SPECIFIED;
+
+    /**
+     * For string properties (and parameters), render as a text area over specified number of lines.
+     *
+     * <p>
+     *     If set to &gt; 1, then {@link #labelPosition()} defaults to
+     *     {@link LabelPosition#TOP top}.
+     * </p>
+     *
+     * @see ParameterLayout#multiLine()
+     */
+    int multiLine()
+            default -1;
+
+    /**
+     * Name of this property (overriding the name derived from its name in code).
+     *
+     * <p>
+     * A typical use case is if the desired name is a reserved Java keyword, such as `default` or `package`.
+     * </p>
+     *
+     * @see ActionLayout#named()
+     * @see ParameterLayout#named()
+     * @see CollectionLayout#named()
+     * @see DomainObjectLayout#named()
+     * @see DomainServiceLayout#named()
+     */
+    String named()
+            default "";
+
+    /**
+     * Whether this property should be used to construct the navigable chain of breadcrumbs in the UI.
+     *
+     * <p>
+     *     Only one property can be annotated as such per domain class.
+     * </p>
+     */
+    Navigable navigable()
+            default Navigable.NOT_SPECIFIED;
+
+    /**
+     * How the properties of this domain object are be edited, either {@link PromptStyle#DIALOG dialog} or {@link PromptStyle#INLINE inline}.
+     */
+    PromptStyle promptStyle()
+            default PromptStyle.NOT_SPECIFIED;
+
+    /**
+     * Indicates that the value held by the property never changes over time, even when other properties of the object
+     * do change.
+     *
+     * <p>
+     *     Setting this attribute to <tt>RepaintPolicy.NO_REPAINT</tt> is used as a hint to the viewer to not repaint
+     *     the property after an AJAX update of some other property/ies of the object have changed.
+     *     This is primarily for performance, eg can improve the user experience when rendering PDFs/blobs.
+     * </p>
+     *
+     * <p>
+     *     Note that for this to work, the viewer will also ensure that none of the property's parent component
+     *     (such as a tab group panel) are re-rendered.
+     * </p>
+     *
+     * <p>
+     *     Design note: we considered implementing this an "immutable" flag on the {@link Property } annotation
+     *     (because this flag is typically appropriate for immutable/unchanging properties of a domain object).
+     *     However, we decided not to do that, on the basis that it might be interpreted as having a deeper impact
+     *     within the framework than simply a hint for rendering.
+     * </p>
+     */
+    Repainting repainting()
+            default Repainting.NOT_SPECIFIED;
+
+
+    /**
+     * The order of this member relative to other members in the same (layout) group,
+     * given in <i>Dewey-decimal</i> notation.
+     * <p>
+     *     An alternative is to use the <code>Xxx.layout.xml</code> file,
+     *     where <code>Xxx</code> is the domain object name.
+     * </p>
+     * @see ActionLayout#sequence()
+     * @see CollectionLayout#sequence()
+     */
+    String sequence()
+            default "";
+
+    /**
+     * The typical entry length of a field, use to determine the optimum width
+     * for display.
+     *
+     * <p>
+     *     Note: the Wicket viewer does not use this information.
+     * </p>
+     *
+     * @see ParameterLayout#typicalLength()
+     */
+    int typicalLength()
+            default -1;
+
+}
+
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Publishing.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Publishing.java
new file mode 100644
index 0000000000..b0fcc08553
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Publishing.java
@@ -0,0 +1,70 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import org.apache.causeway.applib.services.command.Command;
+import org.apache.causeway.applib.services.iactn.Execution;
+import org.apache.causeway.applib.services.publishing.spi.CommandSubscriber;
+import org.apache.causeway.applib.services.publishing.spi.EntityChanges;
+import org.apache.causeway.applib.services.publishing.spi.EntityChangesSubscriber;
+import org.apache.causeway.applib.services.publishing.spi.EntityPropertyChange;
+import org.apache.causeway.applib.services.publishing.spi.EntityPropertyChangeSubscriber;
+import org.apache.causeway.applib.services.publishing.spi.ExecutionSubscriber;
+
+/**
+ * The available policies as to whether data should be published to
+ * corresponding subscribers. The framework supports several kinds of data
+ * that are available for publishing:
+ * <ul>
+ * <li><b>{@link EntityChanges} ... subscribed to via {@link EntityChangesSubscriber}</li>
+ * <li><b>{@link EntityPropertyChange} ... subscribed to via {@link EntityPropertyChangeSubscriber}</li>
+ * <li><b>{@link Command} ... subscribed to via {@link CommandSubscriber}</li>
+ * <li><b>{@link Execution} ... subscribed to via {@link ExecutionSubscriber}</li>
+ * </ul>
+ * @since 1.x {@index}
+ */
+public enum Publishing {
+
+    /**
+     * Publishing of data triggered by interaction with this object
+     * should be handled as per the default publishing policy
+     * configured in <tt>application.properties</tt>.
+     * <p>
+     * If no publishing policy is configured, then publishing is disabled.
+     */
+    AS_CONFIGURED,
+
+    /**
+     * Do publish data triggered by interaction with this object.
+     */
+    ENABLED,
+
+    /**
+     * Do <b>not</b> publish data triggered by interaction with this object
+     * (even if otherwise configured to enable publishing).
+     */
+    DISABLED,
+
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or super-classes/interfaces).
+     */
+    NOT_SPECIFIED
+
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Redirect.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Redirect.java
new file mode 100644
index 0000000000..1880c1fde3
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Redirect.java
@@ -0,0 +1,48 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The available policies for rendering the next page if the result is the same as the target
+ * (in other words, an action that returns "this").
+ * @since 1.x {@index}
+ */
+@XmlType(
+        namespace = "http://isis.apache.org/applib/layout/component"
+        )
+public enum Redirect {
+    /**
+     * As defined by configuration property <code>isis.viewer.wicket.redirectEvenIfSameObject</code>
+     */
+    AS_CONFIGURED,
+    /**
+     * Redirect (meaning render a new page) even if the result of the action is the same as the target.
+     */
+    EVEN_IF_SAME,
+    /**
+     * Don't redirect if the result is the same as the target, instead just update the existing page.
+     *
+     * <p>
+     *     Of course, a redirect is still performed if the result of the action is different from the target.
+     * </p>
+     */
+    ONLY_IF_DIFFERS,
+}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/annotation/Repainting.java b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Repainting.java
new file mode 100644
index 0000000000..634f093135
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/annotation/Repainting.java
@@ -0,0 +1,45 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.applib.annotation;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * Whether a component is unchanging and so does not require repainting.
+ * @since 1.x {@index}
+ */
+@XmlType(
+        namespace = "http://isis.apache.org/applib/layout/component"
+        )
+public enum Repainting {
+
+    REPAINT,
+
+    /**
+     * Equivalent to <tt>@PropertyLayout(unchanging=true)</tt> prior to Isis 2.x
+     */
+    NO_REPAINT,
+
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
... 474195 lines suppressed ...