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

[isis] 04/04: ISIS-2444: adds {@index} to classes to add to the global index.

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

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

commit 9dad87bb5e4818ec7af33ecb211b9ef04a57c8e6
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Jan 31 22:57:00 2021 +0000

    ISIS-2444: adds {@index} to classes to add to the global index.
---
 .../org/apache/isis/applib/AbstractViewModel.java  |  5 +-
 .../org/apache/isis/applib/IsisModuleApplib.java   |  5 +-
 .../isis/applib/RecreatableDomainObject.java       |  3 +-
 .../java/org/apache/isis/applib/ViewModel.java     |  1 +
 .../adapters/AbstractValueSemanticsProvider.java   |  4 +-
 .../isis/applib/adapters/DefaultsProvider.java     |  3 +-
 .../isis/applib/adapters/EncoderDecoder.java       |  1 +
 .../isis/applib/adapters/EncodingException.java    |  3 +-
 .../isis/applib/adapters/ParsingException.java     |  1 +
 .../apache/isis/applib/annotation/Defaulted.java   |  8 +-
 .../isis/applib/annotation/DomainObjectLayout.java |  3 +-
 .../isis/applib/annotation/EntityChangeKind.java   |  8 +-
 .../client/RepresentationTypeSimplifiedV2.java     | 47 +++++------
 .../org/apache/isis/applib/clock/VirtualClock.java | 45 ++++++-----
 .../apache/isis/applib/events/EventObjectBase.java |  1 -
 .../applib/events/domain/AbstractDomainEvent.java  |  2 +-
 .../applib/events/domain/ActionDomainEvent.java    |  2 +-
 .../events/domain/CollectionDomainEvent.java       |  2 +-
 .../applib/events/domain/PropertyDomainEvent.java  |  2 +-
 .../events/lifecycle/AbstractLifecycleEvent.java   |  2 +-
 .../events/lifecycle/ObjectCreatedEvent.java       |  2 +-
 .../applib/events/lifecycle/ObjectLoadedEvent.java |  2 +-
 .../events/lifecycle/ObjectPersistedEvent.java     |  2 +-
 .../events/lifecycle/ObjectPersistingEvent.java    |  2 +-
 .../events/lifecycle/ObjectRemovingEvent.java      |  4 +-
 .../events/lifecycle/ObjectUpdatedEvent.java       |  4 +-
 .../events/lifecycle/ObjectUpdatingEvent.java      |  4 +-
 .../isis/applib/events/ui/AbstractUiEvent.java     |  2 +-
 .../isis/applib/events/ui/CssClassUiEvent.java     |  3 +-
 .../apache/isis/applib/events/ui/IconUiEvent.java  |  4 +-
 .../isis/applib/events/ui/LayoutUiEvent.java       |  3 +-
 .../apache/isis/applib/events/ui/TitleUiEvent.java |  3 +-
 .../unrecoverable/DomainModelException.java        |  2 +
 .../unrecoverable/MetaModelException.java          |  3 +
 .../unrecoverable/NoAuthenticatorException.java    |  2 +
 .../unrecoverable/ObjectNotFoundException.java     |  4 +-
 .../unrecoverable/ObjectPersistenceException.java  |  3 +
 .../unrecoverable/ReflectiveActionException.java   |  3 +
 .../unrecoverable/RepositoryException.java         |  2 +-
 .../unrecoverable/UnexpectedCallException.java     |  2 +
 .../unrecoverable/UnknownTypeException.java        |  3 +
 .../java/org/apache/isis/applib/graph/Edge.java    |  7 +-
 .../java/org/apache/isis/applib/graph/Vertex.java  |  5 +-
 .../isis/applib/graph/tree/LazyTreeNode.java       |  3 +
 .../apache/isis/applib/jaxb/DataTypeFactory.java   |  3 +
 .../JavaSqlXMLGregorianCalendarMarshalling.java    |  3 +
 .../isis/applib/jaxb/JavaTimeJaxbAdapters.java     |  5 +-
 .../JavaTimeXMLGregorianCalendarMarshalling.java   |  3 +
 .../isis/applib/jaxb/JodaTimeJaxbAdapters.java     |  3 +
 .../JodaTimeXMLGregorianCalendarMarshalling.java   |  3 +
 .../applib/jaxb/PersistentEntitiesAdapter.java     |  2 +-
 .../isis/applib/jaxb/PersistentEntityAdapter.java  |  2 +-
 .../isis/applib/jaxb/PrimitiveJaxbAdapters.java    |  3 +
 .../applib/layout/component/ActionLayoutData.java  |  3 +-
 .../layout/component/ActionLayoutDataOwner.java    |  3 +
 .../layout/component/CollectionLayoutData.java     |  2 +
 .../component/CollectionLayoutDataOwner.java       |  4 +-
 .../layout/component/CssClassFaPosition.java       |  3 +
 .../layout/component/DomainObjectLayoutData.java   |  2 +
 .../component/DomainObjectLayoutDataOwner.java     |  3 +
 .../isis/applib/layout/component/FieldSet.java     |  2 +
 .../applib/layout/component/FieldSetOwner.java     |  3 +
 .../isis/applib/layout/component/HasNamed.java     |  3 +
 .../isis/applib/layout/component/MemberRegion.java |  2 +
 .../applib/layout/component/MemberRegionOwner.java |  3 +
 .../apache/isis/applib/layout/component/Owned.java |  3 +
 .../apache/isis/applib/layout/component/Owner.java |  4 +-
 .../layout/component/PropertyLayoutData.java       |  2 +
 .../layout/component/ServiceActionLayoutData.java  |  2 +
 .../component/ServiceActionLayoutDataOwner.java    |  3 +
 .../org/apache/isis/applib/layout/grid/Grid.java   |  2 +
 .../isis/applib/layout/grid/GridAbstract.java      |  4 +-
 .../applib/layout/grid/bootstrap3/BS3ClearFix.java |  3 +
 .../layout/grid/bootstrap3/BS3ClearFixHidden.java  |  2 +
 .../layout/grid/bootstrap3/BS3ClearFixVisible.java |  2 +
 .../isis/applib/layout/grid/bootstrap3/BS3Col.java |  2 +
 .../applib/layout/grid/bootstrap3/BS3Element.java  |  3 +
 .../layout/grid/bootstrap3/BS3ElementAbstract.java |  4 +-
 .../applib/layout/grid/bootstrap3/BS3Grid.java     |  2 +
 .../isis/applib/layout/grid/bootstrap3/BS3Row.java |  2 +
 .../layout/grid/bootstrap3/BS3RowContent.java      |  1 +
 .../layout/grid/bootstrap3/BS3RowContentOwner.java |  3 +
 .../applib/layout/grid/bootstrap3/BS3RowOwner.java |  3 +
 .../isis/applib/layout/grid/bootstrap3/BS3Tab.java |  2 +
 .../applib/layout/grid/bootstrap3/BS3TabGroup.java |  2 +
 .../layout/grid/bootstrap3/BS3TabGroupOwner.java   |  3 +
 .../applib/layout/grid/bootstrap3/BS3TabOwner.java |  3 +
 .../isis/applib/layout/grid/bootstrap3/Size.java   |  2 +
 .../applib/layout/grid/bootstrap3/SizeSpan.java    |  3 +
 .../applib/layout/grid/bootstrap3/WithinGrid.java  |  3 +
 .../org/apache/isis/applib/layout/links/Link.java  |  3 +
 .../isis/applib/layout/menubars/HasNamed.java      |  5 +-
 .../apache/isis/applib/layout/menubars/Menu.java   |  3 +
 .../isis/applib/layout/menubars/MenuBar.java       |  5 +-
 .../isis/applib/layout/menubars/MenuBars.java      |  3 +
 .../applib/layout/menubars/MenuBarsAbstract.java   |  5 +-
 .../isis/applib/layout/menubars/MenuSection.java   |  5 +-
 .../applib/layout/menubars/bootstrap3/BS3Menu.java |  2 +
 .../layout/menubars/bootstrap3/BS3MenuBar.java     |  2 +
 .../layout/menubars/bootstrap3/BS3MenuBars.java    |  6 +-
 .../layout/menubars/bootstrap3/BS3MenuSection.java |  4 +-
 .../apache/isis/applib/mixins/MixinConstants.java  |  3 +
 .../org/apache/isis/applib/mixins/dto/Dto.java     |  3 +
 .../isis/applib/mixins/dto/Dto_downloadXml.java    |  3 +
 .../isis/applib/mixins/dto/Dto_downloadXsd.java    |  5 +-
 .../mixins/layout/Object_downloadLayoutXml.java    |  3 +
 .../applib/mixins/layout/Object_openRestApi.java   |  3 +
 .../mixins/layout/Object_rebuildMetamodel.java     |  3 +
 .../metamodel/Object_downloadMetamodelXml.java     |  5 +-
 .../mixins/metamodel/Object_objectIdentifier.java  | 13 ++--
 .../applib/mixins/metamodel/Object_objectType.java |  7 +-
 .../isis/applib/query/AllInstancesQuery.java       |  2 +-
 .../org/apache/isis/applib/query/NamedQuery.java   |  8 +-
 .../java/org/apache/isis/applib/query/Query.java   | 24 +++---
 .../services/acceptheader/AcceptHeaderService.java |  2 -
 .../applib/services/bookmark/BookmarkHolder.java   |  3 +-
 .../services/bookmark/BookmarkHolder_lookup.java   |  7 +-
 .../services/bookmark/BookmarkHolder_object.java   |  7 +-
 .../isis/applib/services/clock/ClockService.java   | 11 ++-
 .../CommandDtoProcessorForActionAbstract.java      |  2 +
 .../CommandDtoProcessorForPropertyAbstract.java    |  2 +
 .../spi/CommandDtoProcessorServiceIdentity.java    |  4 +-
 .../services/confview/ConfigurationMenu.java       |  7 +-
 .../services/confview/ConfigurationProperty.java   |  1 -
 .../confview/ConfigurationViewService.java         |  1 -
 .../services/conmap/ContentMappingService.java     |  4 +-
 .../isis/applib/services/error/SimpleTicket.java   |  2 +
 .../exceprecog/ExceptionRecognizerAbstract.java    |  7 +-
 .../exceprecog/ExceptionRecognizerForType.java     | 27 ++++---
 .../exceprecog/ExceptionRecognizerService.java     |  3 +-
 .../applib/services/factory/FactoryService.java    |  8 +-
 .../applib/services/grid/GridLoaderService.java    |  3 +-
 .../isis/applib/services/grid/GridService.java     |  3 +-
 .../applib/services/grid/GridSystemService.java    |  3 +-
 .../apache/isis/applib/services/health/Health.java |  1 -
 .../applib/services/health/HealthCheckService.java |  3 +-
 .../isis/applib/services/hint/HintStore.java       |  2 +-
 .../isis/applib/services/i18n/LocaleProvider.java  |  3 +-
 .../applib/services/i18n/TranslatableString.java   |  1 -
 .../applib/services/i18n/TranslationService.java   |  1 -
 .../isis/applib/services/layout/LayoutService.java |  3 +-
 .../applib/services/layout/LayoutServiceMenu.java  |  3 +-
 .../applib/services/linking/DeepLinkService.java   |  4 +-
 .../services/menu/MenuBarsLoaderService.java       |  3 +-
 .../isis/applib/services/menu/MenuBarsService.java |  3 +-
 .../applib/services/message/MessageService.java    |  3 +-
 .../services/metamodel/MetaModelService.java       |  3 +-
 .../applib/services/metrics/MetricsService.java    |  3 +-
 .../queryresultscache/QueryResultCacheControl.java |  3 +-
 .../queryresultscache/QueryResultsCache.java       |  4 +-
 .../applib/services/registry/ServiceRegistry.java  |  3 +-
 .../applib/services/repository/EntityState.java    |  6 +-
 .../applib/services/scratchpad/Scratchpad.java     |  4 +-
 .../services/session/SessionLoggingService.java    |  5 +-
 .../session/SessionLoggingServiceLogging.java      |  3 +-
 .../TableColumnOrderForCollectionTypeAbstract.java |  3 +
 .../services/tablecol/TableColumnOrderService.java |  3 +-
 .../services/urlencoding/UrlEncodingService.java   |  3 +-
 ...rlEncodingServiceUsingBaseEncodingAbstract.java |  5 +-
 .../isis/applib/services/user/RoleMemento.java     |  7 +-
 .../isis/applib/services/user/UserMemento.java     | 47 +++++------
 .../services/userreg/EmailNotificationService.java |  1 +
 .../isis/applib/services/userreg/UserDetails.java  |  3 +-
 .../userreg/events/EmailEventAbstract.java         |  2 +
 .../userreg/events/PasswordResetEvent.java         |  1 +
 .../applib/services/wrapper/InvalidException.java  |  2 -
 .../services/wrapper/control/ExceptionHandler.java |  1 -
 .../wrapper/control/ExceptionHandlerAbstract.java  |  3 +
 .../services/wrapper/events/AccessEvent.java       |  1 +
 .../wrapper/listeners/InteractionAdapter.java      |  3 +-
 .../wrapper/listeners/InteractionListener.java     |  3 +-
 .../services/xactn/TransactionalProcessor.java     | 31 ++++----
 .../snapshot/SnapshottableWithInclusions.java      |  3 +-
 .../isis/applib/spec/AbstractSpecification.java    |  3 +-
 .../isis/applib/spec/AbstractSpecification2.java   |  3 +-
 .../org/apache/isis/applib/spec/Specification.java |  3 +-
 .../apache/isis/applib/spec/Specification2.java    |  3 +-
 .../apache/isis/applib/spec/SpecificationAnd.java  |  2 +-
 .../apache/isis/applib/spec/SpecificationNot.java  |  2 +-
 .../apache/isis/applib/spec/SpecificationOr.java   |  2 +-
 .../apache/isis/applib/types/DescriptionType.java  |  3 +
 .../isis/applib/types/MemberIdentifierType.java    |  2 +
 .../apache/isis/applib/types/TargetActionType.java |  2 +
 .../apache/isis/applib/types/TargetClassType.java  |  2 +
 .../java/org/apache/isis/applib/util/Enums.java    |  2 +-
 .../apache/isis/applib/util/ObjectContracts.java   |  3 +-
 .../org/apache/isis/applib/util/ReasonBuffer.java  |  2 +
 .../org/apache/isis/applib/util/ReasonBuffer2.java |  2 +
 .../java/org/apache/isis/applib/util/Reasons.java  |  2 +
 .../org/apache/isis/applib/util/TitleBuffer.java   | 14 +++-
 .../isis/applib/util/TitleBufferException.java     |  3 +
 .../isis/applib/util/schema/ChangesDtoUtils.java   |  2 +-
 .../isis/applib/util/schema/CommandDtoUtils.java   |  2 +-
 .../isis/applib/util/schema/CommonDtoUtils.java    | 54 ++++++-------
 .../applib/util/schema/InteractionDtoUtils.java    |  7 +-
 .../util/schema/MemberExecutionDtoUtils.java       | 13 ++--
 .../java/org/apache/isis/applib/value/Blob.java    | 32 ++++----
 .../isis/applib/value/NamedWithMimeType.java       | 16 ++--
 .../org/apache/isis/schema/IsisModuleSchema.java   |  3 +
 .../commandlog/impl/CommandSubscriberForJdo.java   |  3 +
 .../impl/IsisModuleExtCommandLogImpl.java          |  3 +
 .../impl/mixins/HasUniqueId_command.java           |  2 +
 .../mixins/HasUsername_recentCommandsByUser.java   |  3 +
 .../impl/mixins/Object_recentCommands.java         |  4 +
 .../commandlog/impl/mixins/T_recent.java           |  3 +-
 .../commandlog/impl/ui/CommandServiceMenu.java     |  5 +-
 .../primary/IsisModuleExtCommandReplayPrimary.java |  3 +
 .../primary/config/PrimaryConfig.java              |  3 +
 .../primary/mixins/Object_openOnSecondary.java     |  3 +
 .../primary/restapi/CommandRetrievalService.java   |  3 +
 .../primary/spiimpl/CaptureResultOfCommand.java    |  4 +
 .../primary/ui/CommandReplayOnPrimaryService.java  |  3 +
 .../IsisModuleExtCommandReplaySecondary.java       |  3 +
 .../commandreplay/secondary/SecondaryStatus.java   |  3 +
 .../secondary/analyser/CommandReplayAnalyser.java  |  3 +
 .../analyser/CommandReplayAnalyserException.java   |  3 +
 .../analyser/CommandReplayAnalyserResult.java      |  3 +
 .../analysis/CommandReplayAnalysisService.java     |  3 +
 .../secondary/clock/TickingClockService.java       |  4 +-
 .../secondary/config/SecondaryConfig.java          |  3 +
 .../executor/CommandExecutorServiceWithTime.java   |  2 +
 .../secondary/fetch/CommandFetcher.java            |  5 +-
 .../secondary/job/ReplicateAndReplayJob.java       |  7 +-
 .../secondary/job/SecondaryStatusData.java         |  3 +
 .../jobcallables/ReplicateAndRunCommands.java      |  4 +-
 .../secondary/mixins/CommandJdo_exclude.java       |  3 +
 .../secondary/mixins/CommandJdo_replayQueue.java   |  3 +
 .../secondary/mixins/Object_openOnPrimary.java     |  3 +
 .../spi/ReplayCommandExecutionController.java      |  2 +
 .../ui/CommandReplayOnSecondaryService.java        |  3 +
 .../applib/IsisModuleIncModelApplib.java           |  3 +
 .../modelannotation/applib/annotation/Model.java   |  6 +-
 .../metamodel/IsisModuleExtModelAnnotation.java    |  3 +
 .../SupportingMethodValidatorRefinerFactory.java   | 26 +++----
 .../services/IncubatorMetaModelPlugin.java         |  5 +-
 .../extensions/quartz/IsisModuleExtQuartzImpl.java |  3 +
 .../quartz/context/JobExecutionData.java           |  2 +
 .../spring/AutowiringSpringBeanJobFactory.java     |  3 +
 .../secman/api/IsisModuleExtSecmanApi.java         |  3 +
 .../extensions/secman/api/SecmanConfiguration.java | 21 ++---
 .../isis/extensions/secman/api/SecurityRealm.java  |  3 +
 .../secman/api/SecurityRealmCharacteristic.java    |  3 +
 .../secman/api/SecurityRealmService.java           |  3 +
 .../api/encryption/PasswordEncryptionService.java  |  3 +
 .../encryption/PasswordEncryptionServiceNone.java  |  3 +
 .../secman/api/events/UserCreatedEvent.java        | 21 ++---
 .../api/permission/ApplicationPermission.java      | 46 +++++------
 .../api/permission/ApplicationPermissionMode.java  |  2 +
 .../ApplicationPermissionRepository.java           | 27 ++++---
 .../api/permission/ApplicationPermissionRule.java  |  2 +
 .../api/permission/ApplicationPermissionValue.java |  2 +
 .../permission/ApplicationPermissionValueSet.java  | 10 ++-
 .../permission/PermissionsEvaluationService.java   |  2 +
 .../PermissionsEvaluationServiceAbstract.java      |  3 +
 ...PermissionsEvaluationServiceAllowBeatsVeto.java |  2 +
 ...PermissionsEvaluationServiceVetoBeatsAllow.java |  2 +
 .../secman/api/role/ApplicationRole.java           | 19 +++--
 .../secman/api/role/ApplicationRoleRepository.java | 11 ++-
 .../secman/api/tenancy/ApplicationTenancy.java     | 17 ++--
 .../api/tenancy/ApplicationTenancyEvaluator.java   |  2 +
 .../api/tenancy/ApplicationTenancyRepository.java  |  9 ++-
 .../extensions/secman/api/tenancy/HasAtPath.java   |  2 +
 .../extensions/secman/api/user/AccountType.java    |  8 +-
 .../secman/api/user/ApplicationUser.java           | 24 +++---
 .../secman/api/user/ApplicationUserRepository.java | 11 ++-
 .../secman/api/user/ApplicationUserStatus.java     |  2 +
 .../IsisModuleExtSecmanEncryptionJbcrypt.java      |  3 +
 .../PasswordEncryptionServiceUsingJBcrypt.java     |  3 +
 .../secman/model/IsisModuleExtSecmanModel.java     |  3 +
 .../secman/model/app/user/MeService.java           |  5 +-
 .../jdo/IsisModuleExtSecmanPersistenceJdo.java     |  3 +
 .../secman/jdo/seed/SeedSecurityModuleService.java |  7 +-
 .../jdo/seed/SeedUsersAndRolesFixtureScript.java   |  4 +-
 .../secman/jdo/seed/scripts/GlobalTenancy.java     |  3 +
 ...xtFixturesFixtureResultsRoleAndPermissions.java |  3 +
 .../IsisExtSecmanAdminRoleAndPermissions.java      |  5 +-
 .../jdo/seed/scripts/IsisExtSecmanAdminUser.java   |  7 +-
 .../IsisExtSecmanFixtureRoleAndPermissions.java    |  2 +
 ...IsisExtSecmanRegularUserRoleAndPermissions.java |  4 +-
 .../jpa/IsisModuleExtSecmanPersistenceJpa.java     |  3 +
 .../secman/jpa/seed/SeedSecurityModuleService.java |  7 +-
 .../jpa/seed/SeedUsersAndRolesFixtureScript.java   |  4 +-
 .../secman/jpa/seed/scripts/GlobalTenancy.java     |  3 +
 ...xtFixturesFixtureResultsRoleAndPermissions.java |  3 +
 .../IsisExtSecmanAdminRoleAndPermissions.java      |  5 +-
 .../jpa/seed/scripts/IsisExtSecmanAdminUser.java   |  7 +-
 .../IsisExtSecmanFixtureRoleAndPermissions.java    |  2 +
 ...IsisExtSecmanRegularUserRoleAndPermissions.java |  4 +-
 ...tyModuleAppUserRegistrationServiceAbstract.java | 12 +--
 .../shiro/IsisModuleExtSecmanRealmShiro.java       |  3 +
 .../shiro/IsisModuleExtSecmanShiroRealm.java       | 27 ++++---
 .../services/SecurityRealmServiceUsingShiro.java   |  5 +-
 .../extensions/secman/shiro/util/ShiroUtils.java   |  5 +-
 .../realm/impl/IsisLdapContextFactory.java         |  2 +
 .../shirorealmldap/realm/impl/IsisLdapRealm.java   |  2 +
 .../impl/IsisModuleExtShiroRealmLdapImpl.java      |  3 +
 .../cors/impl/IsisModuleExtCorsImpl.java           | 19 +++--
 .../ui/IsisModuleExtExcelDownloadUi.java           |  3 +
 .../ui/components/CollectionContentsAsExcel.java   |  2 +
 .../CollectionContentsAsExcelFactory.java          |  6 +-
 .../fullcalendar/applib/CalendarEventable.java     |  3 +
 .../fullcalendar/applib/Calendarable.java          | 15 ++--
 .../applib/IsisModuleExtFullCalendarApplib.java    |  3 +
 .../spi/CalendarableDereferencingService.java      |  1 +
 .../fullcalendar/applib/value/CalendarEvent.java   | 30 +++----
 .../ui/component/IsisModuleExtFullCalendarUi.java  |  3 +
 .../pdfjs/applib/annotations/PdfJsViewer.java      |  2 +
 .../wicket/pdfjs/applib/config/PdfJsConfig.java    |  3 +
 .../viewer/wicket/pdfjs/applib/config/Scale.java   |  3 +
 .../pdfjs/applib/spi/PdfJsViewerAdvisor.java       | 10 ++-
 .../wicket/pdfjs/ui/IsisModuleExtPdfjsUi.java      |  3 +
 isis-tooling.yml                                   |  2 +-
 .../applib/IsisModuleExtJaxRsClientApplib.java     |  3 +
 .../jaxrsclient/applib/client/JaxRsClient.java     |  3 +
 .../jaxrsclient/applib/client/JaxRsResponse.java   |  3 +
 .../impl/IsisModuleExtJaxRsClientImpl.java         |  3 +
 .../restclient/ActionParameterListBuilder.java     | 15 ++--
 .../restclient/IsisModuleExtRestClient.java        |  3 +
 .../isis/extensions/restclient/ResponseDigest.java | 91 +++++++++++-----------
 .../isis/extensions/restclient/RestfulClient.java  | 32 ++++----
 .../extensions/restclient/RestfulClientConfig.java | 11 ++-
 .../restclient/RestfulClientException.java         |  3 +
 .../restclient/auth/BasicAuthFilter.java           |  7 +-
 .../restclient/log/ClientConversationFilter.java   | 19 +++--
 .../restclient/log/ClientConversationLogger.java   | 15 ++--
 .../jdo/applib/IsisModulePersistenceJdoApplib.java |  3 +
 .../jdo/datanucleus/IsisModuleJdoDatanucleus.java  |  3 +
 .../changetracking/JdoLifecycleListener.java       |  2 +
 .../mixins/Persistable_datanucleusIdLong.java      |  5 +-
 .../mixins/Persistable_datanucleusVersionLong.java |  5 +-
 .../Persistable_datanucleusVersionTimestamp.java   |  5 +-
 .../mixins/Persistable_downloadJdoMetadata.java    |  5 +-
 .../applib/IsisBookmarkConverter.java              |  3 +
 .../applib/IsisLocalResourcePathConverter.java     |  3 +
 .../typeconverters/applib/IsisMarkupConverter.java |  3 +
 .../applib/IsisPasswordConverter.java              |  3 +
 .../JavaAwtBufferedImageByteArrayConverter.java    |  5 +-
 .../schema/v2/IsisChangesDtoConverter.java         |  3 +
 .../schema/v2/IsisCommandDtoConverter.java         |  3 +
 .../schema/v2/IsisInteractionDtoConverter.java     |  3 +
 .../schema/v2/IsisOidDtoConverter.java             |  3 +
 .../time/IsoOffsetTimeConverter.java               |  5 +-
 .../time/IsoZonedDateTimeConverter.java            |  5 +-
 .../applib/ByteArrayBlobRdbmsMapping.java          |  3 +
 .../valuetypes/applib/IsisBlobMapping.java         |  3 +
 .../valuetypes/applib/IsisClobMapping.java         |  3 +
 .../JpaEntityInjectionPointResolver.java           | 18 ++---
 .../jpa/eclipselink/IsisModuleJpaEclipselink.java  | 56 ++++++-------
 .../security/bypass/IsisModuleSecurityBypass.java  |  4 +-
 .../bypass/authentication/AuthenticatorBypass.java |  2 +
 .../bypass/authorization/AuthorizorBypass.java     |  3 +
 .../keycloak/IsisModuleSecurityKeycloak.java       |  4 +-
 .../authentication/AuthenticatorKeycloak.java      |  7 +-
 .../keycloak/authorization/AuthorizorKeycloak.java |  3 +
 .../keycloak/webmodule/KeycloakFilter.java         |  9 ++-
 .../keycloak/webmodule/WebModuleKeycloak.java      |  2 +
 .../security/shiro/IsisModuleSecurityShiro.java    |  4 +-
 .../shiro/authentication/AuthenticatorShiro.java   | 14 ++--
 .../shiro/authorization/AuthorizorShiro.java       | 14 ++--
 .../shiro/authorization/IsisPermission.java        | 11 ++-
 .../authorization/IsisPermissionResolver.java      |  3 +
 .../security/shiro/webmodule/WebModuleShiro.java   | 27 +++----
 .../isis/subdomains/base/applib/Chained.java       | 19 +++--
 .../apache/isis/subdomains/base/applib/Dflt.java   |  3 +
 .../applib/IsisModuleSubdomainsBaseApplib.java     |  3 +
 .../isis/subdomains/base/applib/PowerType.java     |  2 +
 .../apache/isis/subdomains/base/applib/Titled.java |  5 +-
 .../isis/subdomains/base/applib/TitledEnum.java    |  4 +-
 .../base/applib/services/BaseServicesModule.java   |  3 +
 .../applib/services/calendar/CalendarService.java  | 13 ++--
 .../base/applib/types/DescriptionType.java         |  3 +
 .../subdomains/base/applib/types/FqcnType.java     |  3 +
 .../subdomains/base/applib/types/MoneyType.java    |  3 +
 .../subdomains/base/applib/types/NameType.java     |  3 +
 .../subdomains/base/applib/types/NotesType.java    |  3 +
 .../base/applib/types/ObjectIdentifierType.java    |  3 +
 .../base/applib/types/PercentageType.java          |  3 +
 .../base/applib/types/ProperNameType.java          |  3 +
 .../base/applib/types/ReferenceType.java           |  3 +
 .../subdomains/base/applib/types/TitleType.java    |  3 +
 .../base/applib/types/UrlTemplateType.java         |  3 +
 .../subdomains/base/applib/types/UserNameType.java |  3 +
 .../isis/subdomains/base/applib/types/XxxType.java |  3 +
 .../subdomains/base/applib/utils/ClassUtils.java   | 13 ++--
 .../base/applib/utils/JodaPeriodUtils.java         |  2 +
 .../subdomains/base/applib/utils/MathUtils.java    |  6 +-
 .../subdomains/base/applib/utils/MessageUtils.java |  3 +
 .../subdomains/base/applib/utils/StringUtils.java  |  7 +-
 .../subdomains/base/applib/utils/TitleBuilder.java |  4 +
 .../base/applib/valuetypes/AbstractInterval.java   | 19 +++--
 .../base/applib/valuetypes/LocalDateInterval.java  | 23 +++---
 .../isis/subdomains/base/applib/valuetypes/VT.java | 12 ++-
 .../base/applib/with/WithCodeComparable.java       |  5 +-
 .../base/applib/with/WithCodeGetter.java           |  8 +-
 .../base/applib/with/WithCodeUnique.java           |  3 +
 .../applib/with/WithDescriptionComparable.java     |  7 +-
 .../base/applib/with/WithDescriptionGetter.java    |  8 +-
 .../base/applib/with/WithDescriptionUnique.java    |  3 +
 .../subdomains/base/applib/with/WithInterval.java  | 13 ++--
 .../base/applib/with/WithIntervalContiguous.java   | 55 ++++++-------
 .../base/applib/with/WithIntervalMutable.java      |  5 +-
 .../base/applib/with/WithNameComparable.java       |  6 +-
 .../base/applib/with/WithNameGetter.java           |  8 +-
 .../base/applib/with/WithNameUnique.java           |  3 +
 .../base/applib/with/WithReferenceComparable.java  |  7 +-
 .../base/applib/with/WithReferenceGetter.java      |  8 +-
 .../base/applib/with/WithReferenceUnique.java      |  3 +
 .../subdomains/base/applib/with/WithSequence.java  |  4 +-
 .../subdomains/base/applib/with/WithStartDate.java |  3 +
 .../base/applib/with/WithTitleComparable.java      |  5 +-
 .../base/applib/with/WithTitleGetter.java          |  8 +-
 .../base/applib/with/WithTitleUnique.java          |  3 +
 .../applib/IsisModuleSubdomainsExcelApplib.java    |  3 +
 .../excel/applib/dom/AggregationType.java          |  3 +
 .../excel/applib/dom/ExcelMetaDataEnabled.java     |  6 +-
 .../subdomains/excel/applib/dom/ExcelService.java  | 11 ++-
 .../subdomains/excel/applib/dom/HyperLink.java     |  4 +-
 .../subdomains/excel/applib/dom/PivotColumn.java   |  3 +
 .../excel/applib/dom/PivotDecoration.java          |  3 +
 .../isis/subdomains/excel/applib/dom/PivotRow.java |  3 +
 .../subdomains/excel/applib/dom/PivotValue.java    |  3 +
 .../subdomains/excel/applib/dom/RowHandler.java    |  5 +-
 .../excel/applib/dom/WorksheetContent.java         |  3 +
 .../subdomains/excel/applib/dom/WorksheetSpec.java |  3 +
 .../excel/applib/dom/util/AnnotationList.java      |  4 +-
 .../excel/applib/dom/util/AnnotationTriplet.java   |  3 +
 .../applib/dom/util/ExcelFileBlobConverter.java    |  7 +-
 .../excel/applib/dom/util/ExcelServiceImpl.java    | 15 ++--
 .../subdomains/excel/applib/dom/util/Mode.java     |  2 +-
 .../excel/applib/dom/util/PivotUtils.java          |  3 +
 .../excel/applib/dom/util/SheetPivoter.java        |  3 +
 .../subdomains/excel/testing/ExcelFixture.java     |  8 +-
 .../subdomains/excel/testing/ExcelFixture2.java    |  4 +-
 .../excel/testing/ExcelFixtureRowHandler.java      |  3 +
 .../excel/testing/ExcelFixtureWorkbookHandler.java |  3 +
 .../excel/testing/FixtureAwareRowHandler.java      |  5 +-
 .../testing/IsisModuleSubdomainsExcelTesting.java  |  3 +
 .../applib/IsisModuleSubdomainsSpringApplib.java   |  3 +
 .../spring/applib/service/BeanDescriptor.java      | 13 ++--
 .../spring/applib/service/ContextBeans.java        |  3 +
 .../spring/applib/service/SpringBeansService.java  |  2 +
 .../IsisModuleSubdomainsXDocReportApplib.java      |  3 +
 .../xdocreport/applib/service/OutputType.java      |  3 +
 .../xdocreport/applib/service/XDocReportModel.java |  3 +
 .../applib/service/XDocReportService.java          |  8 +-
 .../applib/IsisModuleTestingFakeDataApplib.java    |  3 +
 .../services/AbstractRandomValueGenerator.java     |  3 +
 .../fakedata/applib/services/Addresses.java        |  3 +
 .../fakedata/applib/services/BigDecimals.java      |  3 +
 .../fakedata/applib/services/BigIntegers.java      |  3 +
 .../testing/fakedata/applib/services/Books.java    |  3 +
 .../testing/fakedata/applib/services/Booleans.java |  3 +
 .../testing/fakedata/applib/services/Bytes.java    |  3 +
 .../testing/fakedata/applib/services/Chars.java    |  3 +
 .../fakedata/applib/services/Collections.java      |  3 +
 .../testing/fakedata/applib/services/Comms.java    |  3 +
 .../fakedata/applib/services/CreditCards.java      |  3 +
 .../testing/fakedata/applib/services/Doubles.java  |  3 +
 .../testing/fakedata/applib/services/Enums.java    |  3 +
 .../fakedata/applib/services/FakeDataService.java  |  5 +-
 .../testing/fakedata/applib/services/Floats.java   |  3 +
 .../testing/fakedata/applib/services/Integers.java |  3 +
 .../fakedata/applib/services/IsisBlobs.java        |  3 +
 .../fakedata/applib/services/IsisClobs.java        |  5 +-
 .../fakedata/applib/services/IsisPasswords.java    |  3 +
 .../fakedata/applib/services/J8DateTimes.java      |  3 +
 .../fakedata/applib/services/J8LocalDates.java     |  3 +
 .../fakedata/applib/services/J8Periods.java        |  3 +
 .../fakedata/applib/services/JavaSqlDates.java     |  3 +
 .../applib/services/JavaSqlTimestamps.java         |  3 +
 .../fakedata/applib/services/JavaUtilDates.java    |  5 +-
 .../fakedata/applib/services/JodaDateTimes.java    |  9 ++-
 .../fakedata/applib/services/JodaLocalDates.java   |  7 +-
 .../fakedata/applib/services/JodaPeriods.java      |  6 +-
 .../testing/fakedata/applib/services/Longs.java    |  3 +
 .../testing/fakedata/applib/services/Lorem.java    |  3 +
 .../testing/fakedata/applib/services/Names.java    |  3 +
 .../testing/fakedata/applib/services/Shorts.java   |  3 +
 .../testing/fakedata/applib/services/Strings.java  |  3 +
 .../testing/fakedata/applib/services/Urls.java     |  3 +
 .../testing/fakedata/applib/services/Uuids.java    |  3 +
 .../h2console/ui/IsisModuleTestingH2ConsoleUi.java |  3 +
 .../h2console/ui/services/H2ManagerMenu.java       |  3 +
 .../h2console/ui/webmodule/WebModuleH2Console.java | 49 ++++++------
 .../hsqldbmgr/dom/IsisModuleExtHsqldbMgr.java      |  3 +
 .../hsqldbmgr/dom/services/HsqlDbManagerMenu.java  |  3 +
 .../applib/ExceptionRecognizerTranslate.java       |  3 +
 .../applib/IsisIntegrationTestAbstract.java        | 10 +--
 .../applib/IsisInteractionHandler.java             | 21 ++---
 .../integtestsupport/applib/ThrowableMatchers.java |  3 +
 .../applib/swagger/SwaggerExporter.java            |  6 +-
 .../applib/validate/DomainModelValidator.java      | 18 ++---
 .../applib/IsisModuleTestingSpecSupportApplib.java |  3 +
 .../integration/ObjectFactoryForIntegration.java   |  6 +-
 .../isis/testing/specsupport/applib/specs/V.java   |  6 +-
 .../IsisModuleTestingUnitTestSupportApplib.java    |  3 +
 .../applib/bean/AbstractBeanPropertiesTest.java    |  3 +
 .../bean/FixtureDatumFactoriesForAnyPojo.java      |  3 +
 .../bean/FixtureDatumFactoriesForApplib.java       |  3 +
 .../applib/bean/FixtureDatumFactoriesForJoda.java  |  3 +
 .../applib/bean/FixtureDatumFactoriesForTime.java  |  6 +-
 .../unittestsupport/applib/bean/PojoTester.java    | 49 ++++++------
 .../core/AbstractApplyToAllContractTest.java       |  4 +-
 ...irectionalRelationshipContractTestAbstract.java |  4 +-
 .../applib/core/bidir/Instantiator.java            |  5 +-
 .../applib/core/bidir/InstantiatorSimple.java      |  5 +-
 .../applib/core/bidir/Instantiators.java           |  5 +-
 .../ComparableContractTest_compareTo.java          |  2 +
 .../core/comparable/ComparableContractTester.java  |  4 +-
 .../unittestsupport/applib/core/files/Files.java   |  4 +-
 .../applib/core/jaxb/JaxbMatchers.java             |  4 +-
 .../applib/core/jmocking/Imposterisers.java        |  3 +
 .../core/jmocking/InjectIntoJMockAction.java       |  4 +
 .../applib/core/jmocking/IsisActions.java          |  3 +
 .../applib/core/jmocking/JMockActions.java         |  3 +
 .../applib/core/jmocking/JUnitRuleMockery2.java    | 14 ++--
 .../applib/core/jmocking/PostponedAction.java      |  9 ++-
 .../core/soap/SoapEndpointPublishingRule.java      |  4 +-
 .../applib/core/soap/SoapEndpointSpec.java         |  3 +
 .../sortedsets/SortedSetsContractTestAbstract.java |  4 +-
 .../applib/core/streams/NullPrintStream.java       |  2 +-
 .../applib/core/utils/CollectUtils.java            |  4 +-
 .../applib/core/utils/IndentPrinter.java           |  6 +-
 .../applib/core/utils/ReflectUtils.java            |  4 +-
 .../applib/core/utils/StringUtils.java             |  4 +-
 .../core/value/ValueTypeContractTestAbstract.java  |  4 +-
 .../applib/dom/assertions/Asserting.java           |  6 +-
 .../applib/dom/matchers/IsisMatchers.java          | 17 ++--
 .../dom/privatecons/PrivateConstructorTester.java  |  3 +
 .../applib/dom/reflect/ReflectUtils.java           | 11 ++-
 .../applib/dom/repo/FinderInteraction.java         |  6 +-
 .../applib/IsisModuleValAsciidocApplib.java        |  3 +
 .../asciidoc/applib/jaxb/AsciiDocJaxbAdapter.java  |  3 +
 .../valuetypes/asciidoc/applib/value/AsciiDoc.java |  1 +
 .../metamodel/IsisModuleValAsciidocMetaModel.java  |  5 +-
 .../IsisModuleValAsciidocPersistenceJdoDn5.java    |  3 +
 .../jdo/dn5/converters/IsisAsciiDocConverter.java  |  3 +
 .../ui/wkt/IsisModuleValAsciidocUiWkt.java         |  3 +
 .../applib/IsisModuleValMarkdownApplib.java        |  3 +
 .../markdown/applib/jaxb/MarkdownJaxbAdapter.java  |  3 +
 .../markdown/applib/value/Converter.java           | 15 ++--
 .../metamodel/IsisModuleValMarkdownMetaModel.java  |  3 +
 .../IsisModuleValMarkdownPersistenceJdoDn5.java    |  3 +
 .../jdo/dn5/converters/IsisMarkdownConverter.java  |  3 +
 .../ui/wkt/IsisModuleValMarkdownUiWkt.java         |  3 +
 .../sse/applib/IsisModuleValSseApplib.java         |  3 +
 .../sse/applib/annotations/ServerSentEvents.java   |  5 +-
 .../sse/applib/annotations/SseSource.java          |  7 +-
 .../valuetypes/sse/applib/service/SseChannel.java  |  5 +-
 .../valuetypes/sse/applib/service/SseService.java  |  5 +-
 .../sse/ui/wkt/IsisModuleValSseUiWkt.java          |  5 +-
 .../sse/ui/wkt/services/SseServiceDefault.java     | 17 ++--
 .../wkt/webmodule/WebModuleServerSentEvents.java   |  4 +-
 .../IsisModuleViewerRestfulObjectsApplib.java      |  3 +
 .../restfulobjects/applib/JsonRepresentation.java  |  2 +
 .../restfulobjects/applib/LinkRepresentation.java  |  3 +
 .../isis/viewer/restfulobjects/applib/Rel.java     |  3 +
 .../restfulobjects/applib/RelDefinition.java       |  2 +
 .../restfulobjects/applib/RepresentationType.java  |  9 ++-
 .../restfulobjects/applib/RestfulHttpMethod.java   |  4 +-
 .../restfulobjects/applib/RestfulMediaType.java    |  6 +-
 .../restfulobjects/applib/RestfulRequest.java      |  3 +
 .../restfulobjects/applib/RestfulResponse.java     |  3 +
 .../applib/boot/BootstrapResource.java             |  5 +-
 .../AbstractObjectMemberRepresentation.java        |  8 +-
 .../domainobjects/ActionResultRepresentation.java  | 15 ++--
 .../DomainObjectMemberRepresentation.java          |  2 +
 .../domainobjects/DomainObjectRepresentation.java  |  3 +
 .../applib/domainobjects/DomainObjectResource.java |  5 +-
 .../applib/domainobjects/DomainRepresentation.java |  7 +-
 .../domainobjects/DomainServiceResource.java       |  5 +-
 .../applib/domainobjects/ListRepresentation.java   |  3 +
 .../domainobjects/ObjectActionRepresentation.java  |  4 +-
 .../ObjectCollectionRepresentation.java            |  5 +-
 .../ObjectPropertyRepresentation.java              |  4 +-
 .../domainobjects/ScalarValueRepresentation.java   |  4 +-
 .../AbstractTypeMemberRepresentation.java          |  4 +-
 .../ActionDescriptionRepresentation.java           |  4 +-
 .../ActionParameterDescriptionRepresentation.java  |  4 +-
 .../CollectionDescriptionRepresentation.java       |  4 +-
 .../domaintypes/DomainTypeRepresentation.java      |  4 +-
 .../applib/domaintypes/DomainTypeResource.java     | 17 ++--
 .../PropertyDescriptionRepresentation.java         |  3 +
 .../TypeActionResultRepresentation.java            |  3 +
 .../applib/domaintypes/TypeListRepresentation.java |  4 +-
 .../applib/dtos/ScalarValueDtoV2.java              | 15 ++--
 .../applib/errors/ErrorRepresentation.java         |  4 +-
 .../applib/health/HealthRepresentation.java        |  3 +
 .../applib/health/HealthResource.java              |  5 +-
 .../applib/homepage/HomePageRepresentation.java    |  3 +
 .../applib/homepage/HomePageResource.java          |  5 +-
 .../applib/menubars/MenuBarsResource.java          |  4 +-
 .../applib/user/UserRepresentation.java            |  3 +
 .../restfulobjects/applib/user/UserResource.java   |  5 +-
 .../restfulobjects/applib/util/JsonMapper.java     |  3 +
 .../restfulobjects/applib/util/JsonNodeUtils.java  |  3 +
 .../restfulobjects/applib/util/MediaTypes.java     |  3 +
 .../viewer/restfulobjects/applib/util/Parser.java  |  3 +
 .../restfulobjects/applib/util/PathNode.java       |  6 +-
 .../applib/util/UrlEncodingUtils.java              |  3 +
 .../applib/version/VersionRepresentation.java      |  3 +
 .../applib/version/VersionResource.java            |  5 +-
 ...isModuleViewerRestfulObjectsJaxrsResteasy4.java |  3 +
 .../conneg/RestfulObjectsJaxbWriterForXml.java     | 29 +++----
 .../webmodule/WebModuleJaxrsResteasy4.java         | 13 +---
 .../IsisModuleRestfulObjectsRendering.java         |  7 +-
 .../rendering/service/RepresentationService.java   |  2 +
 .../RepresentationServiceContentNegotiator.java    | 13 ++--
 .../acceptheader/AcceptHeaderServiceForRest.java   |  5 +-
 .../service/conneg/ContentNegotiationService.java  |  3 +
 .../conneg/ContentNegotiationServiceAbstract.java  |  3 +
 ...entNegotiationServiceForRestfulObjectsV1_0.java | 17 ++--
 .../ContentNegotiationServiceOrgApacheIsisV1.java  |  9 ++-
 .../ContentNegotiationServiceOrgApacheIsisV2.java  | 55 ++++++-------
 .../ContentNegotiationServiceXRoDomainType.java    |  6 +-
 .../service/swagger/SwaggerServiceMenu.java        | 19 +++--
 .../IsisModuleViewerRestfulObjectsViewer.java      |  5 +-
 .../wicket/model/IsisModuleViewerWicketModel.java  |  3 +
 .../viewer/wicket/ui/IsisModuleViewerWicketUi.java |  3 +
 .../viewer/IsisModuleViewerWicketViewer.java       |  3 +-
 620 files changed, 2401 insertions(+), 1201 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/isis/applib/AbstractViewModel.java b/api/applib/src/main/java/org/apache/isis/applib/AbstractViewModel.java
index 98f9443..b0d67fb 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/AbstractViewModel.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/AbstractViewModel.java
@@ -27,10 +27,7 @@ package org.apache.isis.applib;
  * Subclassing is NOT mandatory; the methods in this superclass can be pushed
  * down into domain objects and another superclass used if required.
  *
- * <p>
- *     As an alternative, consider simply annotating the view model class with {@link org.apache.isis.applib.annotation.ViewModel}.
- * </p>
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public abstract class AbstractViewModel implements ViewModel {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/IsisModuleApplib.java b/api/applib/src/main/java/org/apache/isis/applib/IsisModuleApplib.java
index 95d9224..b3b3428 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/IsisModuleApplib.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/IsisModuleApplib.java
@@ -48,6 +48,9 @@ import org.apache.isis.applib.services.user.RoleMemento;
 import org.apache.isis.applib.services.user.UserMemento;
 import org.apache.isis.schema.IsisModuleSchema;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @Import({
         // modules
@@ -70,7 +73,7 @@ import org.apache.isis.schema.IsisModuleSchema;
         DomainObjectList.class,
         RoleMemento.class,
         UserMemento.class,
-        
+
         // @DomainService(s)
         ConfigurationMenu.class,
         LayoutServiceMenu.class,
diff --git a/api/applib/src/main/java/org/apache/isis/applib/RecreatableDomainObject.java b/api/applib/src/main/java/org/apache/isis/applib/RecreatableDomainObject.java
index 549b996..c48d739 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/RecreatableDomainObject.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/RecreatableDomainObject.java
@@ -27,7 +27,8 @@ package org.apache.isis.applib;
  *      Objects that are view models (logically belonging to the UI/application layer) should instead implement
  *      {@link org.apache.isis.applib.ViewModel}.
  * </p>
- * @since ? {@index}
+ *
+ * @since 1.x {@index}
  */
 public interface RecreatableDomainObject {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/ViewModel.java b/api/applib/src/main/java/org/apache/isis/applib/ViewModel.java
index 03e4d15..0e25db2 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/ViewModel.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/ViewModel.java
@@ -27,6 +27,7 @@ import org.apache.isis.applib.annotation.Programmatic;
  * <p>
  *     Objects that are part of the domain object layer should instead implement {@link RecreatableDomainObject}.
  * </p>
+ *
  * @since 1.x {@index}
  */
 public interface ViewModel {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/adapters/AbstractValueSemanticsProvider.java b/api/applib/src/main/java/org/apache/isis/applib/adapters/AbstractValueSemanticsProvider.java
index 130f404..28dc834 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/adapters/AbstractValueSemanticsProvider.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/adapters/AbstractValueSemanticsProvider.java
@@ -20,9 +20,9 @@
 package org.apache.isis.applib.adapters;
 
 /**
- * @since ? {@index}
+ * @since 1.x {@index}
  */
-public abstract class AbstractValueSemanticsProvider<T> 
+public abstract class AbstractValueSemanticsProvider<T>
 implements ValueSemanticsProvider<T> {
 
     @SuppressWarnings("unchecked")
diff --git a/api/applib/src/main/java/org/apache/isis/applib/adapters/DefaultsProvider.java b/api/applib/src/main/java/org/apache/isis/applib/adapters/DefaultsProvider.java
index cc01254..98f332b 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/adapters/DefaultsProvider.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/adapters/DefaultsProvider.java
@@ -44,7 +44,8 @@ package org.apache.isis.applib.adapters;
  * @see Parser
  * @see EncoderDecoder
  * @see ValueSemanticsProvider
- * @since ? {@index}
+ *
+ * @since 1.x {@index}
  */
 public interface DefaultsProvider<T> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/adapters/EncoderDecoder.java b/api/applib/src/main/java/org/apache/isis/applib/adapters/EncoderDecoder.java
index a754351..51d61df 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/adapters/EncoderDecoder.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/adapters/EncoderDecoder.java
@@ -44,6 +44,7 @@ package org.apache.isis.applib.adapters;
  * @see Parser
  * @see DefaultsProvider
  * @see ValueSemanticsProvider
+ *
  * @since 1.x {@index}
  */
 public interface EncoderDecoder<T> {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/adapters/EncodingException.java b/api/applib/src/main/java/org/apache/isis/applib/adapters/EncodingException.java
index 4644d8b..fb1fd2f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/adapters/EncodingException.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/adapters/EncodingException.java
@@ -21,7 +21,8 @@ package org.apache.isis.applib.adapters;
 
 /**
  * Indicates that encoding or decoding has failed.
- * @since ? {@index}
+ *
+ * @since 1.x {@index}
  */
 public class EncodingException extends RuntimeException {
     private static final long serialVersionUID = 1L;
diff --git a/api/applib/src/main/java/org/apache/isis/applib/adapters/ParsingException.java b/api/applib/src/main/java/org/apache/isis/applib/adapters/ParsingException.java
index da808f1..6d761b1 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/adapters/ParsingException.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/adapters/ParsingException.java
@@ -22,6 +22,7 @@ package org.apache.isis.applib.adapters;
 /**
  * Indicates that parsing has failed, ie the entry is illegal (rather than
  * invalid).
+ *
  * @since 1.x {@index}
  */
 public class ParsingException extends RuntimeException {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/Defaulted.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/Defaulted.java
index 566da4a..bc9ea97 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/Defaulted.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/Defaulted.java
@@ -40,13 +40,13 @@ import org.apache.isis.applib.adapters.DefaultsProvider;
  * of {@link DefaultsProvider} could adjust the default it provides according to
  * circumstance, for example).
  *
- * @see <code>Encodable</code>
- * @see <code>Parseable</code>
- * @see Value
- *
  * <p>
  *     Note: This annotation is only incompletely recognized by the framework, and may be deprecated in the future.
  * </p>
+ *
+ * @see <code>Encodable</code>
+ * @see <code>Parseable</code>
+ * @see Value
  * @since 1.x {@index}
  */
 @Inherited
diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainObjectLayout.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainObjectLayout.java
index 8a8b660..23eaa30 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainObjectLayout.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainObjectLayout.java
@@ -33,8 +33,7 @@ import org.apache.isis.applib.layout.component.CssClassFaPosition;
 
 /**
  * Layout hints for domain objects.
- * 
- * 
+ *
  * @since 1.x {@index}
  */
 @Inherited
diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/EntityChangeKind.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/EntityChangeKind.java
index 032bfd8..2c9d512 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/EntityChangeKind.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/EntityChangeKind.java
@@ -19,15 +19,11 @@
 package org.apache.isis.applib.annotation;
 
 /**
- * 
- * @since 1.x {@index}
+ *
+ * @since 2.0 {@index}
  */
 public enum EntityChangeKind {
-
     CREATE,
-
     UPDATE,
-
     DELETE,
-
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/client/RepresentationTypeSimplifiedV2.java b/api/applib/src/main/java/org/apache/isis/applib/client/RepresentationTypeSimplifiedV2.java
index 72d0700..6725740 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/client/RepresentationTypeSimplifiedV2.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/client/RepresentationTypeSimplifiedV2.java
@@ -31,53 +31,56 @@ import lombok.Getter;
 import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
 
+/**
+ * @since 1.x {@index}
+ */
 @RequiredArgsConstructor
 public enum RepresentationTypeSimplifiedV2 {
 
     /**
-     * The media type used as content-Type header when a domain object is rendered. 
+     * The media type used as content-Type header when a domain object is rendered.
      */
     OBJECT("object"),
-    
-    /** 
-     * The media type used as content-Type header when a parented collection is rendered. 
+
+    /**
+     * The media type used as content-Type header when a parented collection is rendered.
      */
     OBJECT_COLLECTION("object-collection"),
-    
-    /** 
+
+    /**
      * The media type used as content-Type header when a standalone collection is rendered.
      */
     LIST("list"),
 
-    /** 
+    /**
      * The media type used as content-Type header when a single (nullable) value is rendered.
      * @since 2.0
      */
     VALUE("value"),
 
-    /** 
-     * The media type used as content-Type header when a list of values is rendered. 
+    /**
+     * The media type used as content-Type header when a list of values is rendered.
      * @since 2.0
      */
     VALUES("values"),
-    
-    /** 
+
+    /**
      * The media type used as content-Type header when a void action result is rendered.
      * @since 2.0
      */
     VOID("void"),
-    
+
     ;
-    
+
     @Getter final String typeLiteral;
-    
+
     public boolean isObject()               { return this == OBJECT; }
     public boolean isObjectCollection()     { return this == OBJECT_COLLECTION; }
     public boolean isList()                 { return this == LIST; }
     public boolean isValue()                { return this == VALUE; }
     public boolean isValues()               { return this == VALUES; }
     public boolean isVoid()                 { return this == VOID; }
-    
+
     public String getContentTypeHeaderValue(final String profileName) {
         return "application/json;"
                 + "profile=\"" + profileName + "\""
@@ -90,7 +93,7 @@ public enum RepresentationTypeSimplifiedV2 {
         .filter(candidate->candidate.typeLiteral.equals(typeLiteral))
         .findAny();
     }
-    
+
     public static Optional<RepresentationTypeSimplifiedV2> parseContentTypeHeaderString(
             final @Nullable String contentTypeHeaderString) {
         return extractReprType(_Strings.splitThenStream(contentTypeHeaderString, ";"))
@@ -98,16 +101,16 @@ public enum RepresentationTypeSimplifiedV2 {
         .filter(Objects::nonNull);
     }
 
-    
+
     // -- HELPER
-    
+
     private static String trimFirstAndLastCharacter(String s) {
         if(s.length()<2) {
             return s;
         }
         return s.substring(1, s.length()-1);
     }
-    
+
     private static Optional<String> extractReprType(final @NonNull Stream<String> stringStream) {
         return stringStream
         .map(String::trim)
@@ -120,7 +123,7 @@ public enum RepresentationTypeSimplifiedV2 {
         .findAny()
         .map(RepresentationTypeSimplifiedV2::trimFirstAndLastCharacter);
     }
-    
-   
-    
+
+
+
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/clock/VirtualClock.java b/api/applib/src/main/java/org/apache/isis/applib/clock/VirtualClock.java
index 87d65e7..e42238a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/clock/VirtualClock.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/clock/VirtualClock.java
@@ -41,37 +41,36 @@ import lombok.val;
 
 /**
  * Works in connection with {@link InteractionFactory}, such that it allows an {@link Interaction}
- * to run with its own simulated (or actual) time. 
+ * to run with its own simulated (or actual) time.
  * <p>
  * Relates to {@link VirtualContext}
- * 
- * @since 2.0 {@index}
  *
+ * @since 2.0 {@index}
  */
 @FunctionalInterface
 public interface VirtualClock extends Serializable {
-    
+
     // -- INTERFACE
-    
+
     /**
      * Returns the (virtual) time as an {@link Instant}.
-     * 
-     * @apiNote This is a universal time difference, that does not depend on 
-     * where you are (eg. your current timezone), just on when you are. 
+     *
+     * @apiNote This is a universal time difference, that does not depend on
+     * where you are (eg. your current timezone), just on when you are.
      *
      * @see {@link Instant}
      */
     Instant now();
-    
+
     // -- FACTORIES
-    
+
     /**
      * Returns a the system's default ticking clock.
      */
     static VirtualClock system() {
         return new VirtualClock_system();
     }
-    
+
     /**
      * Returns a ticking clock set to virtual time {@link Instant} {@code virtualNow}
      */
@@ -80,14 +79,14 @@ public interface VirtualClock extends Serializable {
         val offsetMillis = ChronoUnit.MILLIS.between(Instant.now(), virtualNow);
         return new VirtualClock_withOffset(offsetMillis);
     }
-    
+
     /**
      * Always returns the time {@link Instant} as given by {@code frozenAt}
      */
     static VirtualClock frozenAt(@NonNull Instant frozenAt) {
         return new VirtualClock_frozen(frozenAt);
     }
-    
+
     /**
      * Always returns the time {@link Instant} 2003/8/17 21:30:25 (UTC)
      */
@@ -96,14 +95,14 @@ public interface VirtualClock extends Serializable {
                 ZonedDateTime.of(2003, 7, 17, 21, 30, 25, 0, ZoneId.from(ZoneOffset.UTC)));
         return frozenAt(frozenAt);
     }
-    
+
     // -- UTILITY
-    
+
     /**
      * Returns the (virtual) time as the number of milliseconds since the epoch start.
-     * 
-     * @apiNote This is a universal time difference, that does not depend on 
-     * where you are (eg. your current timezone), just on when you are. 
+     *
+     * @apiNote This is a universal time difference, that does not depend on
+     * where you are (eg. your current timezone), just on when you are.
      *
      * @see {@link Instant}
      */
@@ -138,17 +137,17 @@ public interface VirtualClock extends Serializable {
     default java.util.Date javaUtilDate() {
         return new java.util.Date(getEpochMillis());
     }
-    
+
     default java.sql.Timestamp javaSqlTimestamp() {
         return new java.sql.Timestamp(getEpochMillis());
     }
-    
+
     default XMLGregorianCalendar xmlGregorianCalendar() {
         return JavaSqlXMLGregorianCalendarMarshalling.toXMLGregorianCalendar(javaSqlTimestamp());
     }
 
     // -- DEPRECATIONS
-    
+
     /**
      * Returns the time as a Joda {@link org.joda.time.DateTime},
      * using the {@link ZoneId#systemDefault() system default} timezone.
@@ -158,7 +157,7 @@ public interface VirtualClock extends Serializable {
     default org.joda.time.DateTime asJodaDateTime(final @NonNull ZoneId zoneId) {
         return new org.joda.time.DateTime(getEpochMillis(), DateTimeZone.forID(zoneId.getId()));
     }
-    
+
     /**
      * Returns the time as a Joda {@link DateTime},
      * using the {@link ZoneId#systemDefault() system default} timezone.
@@ -169,7 +168,7 @@ public interface VirtualClock extends Serializable {
         return new org.joda.time.LocalDate(getEpochMillis(), DateTimeZone.forID(zoneId.getId()));
     }
 
-    
+
 
 
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/events/EventObjectBase.java b/api/applib/src/main/java/org/apache/isis/applib/events/EventObjectBase.java
index 9b5c643..f97107c 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/events/EventObjectBase.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/events/EventObjectBase.java
@@ -26,7 +26,6 @@ import static org.apache.isis.commons.internal.base._With.requires;
 
 /**
  * @since 2.0 {@index}
- * 
  */
 public abstract class EventObjectBase<T> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/events/domain/AbstractDomainEvent.java b/api/applib/src/main/java/org/apache/isis/applib/events/domain/AbstractDomainEvent.java
index cd89219..08ddedf 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/events/domain/AbstractDomainEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/events/domain/AbstractDomainEvent.java
@@ -31,7 +31,7 @@ import org.apache.isis.commons.internal.exceptions._Exceptions;
 import lombok.Getter;
 
 /**
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public abstract class AbstractDomainEvent<S> extends EventObjectBase<S> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/events/domain/ActionDomainEvent.java b/api/applib/src/main/java/org/apache/isis/applib/events/domain/ActionDomainEvent.java
index 4ffc6c3..c5cbd38 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/events/domain/ActionDomainEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/events/domain/ActionDomainEvent.java
@@ -28,7 +28,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 /**
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public abstract class ActionDomainEvent<S> extends AbstractDomainEvent<S> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/events/domain/CollectionDomainEvent.java b/api/applib/src/main/java/org/apache/isis/applib/events/domain/CollectionDomainEvent.java
index 5fd73c1..c5a75d8 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/events/domain/CollectionDomainEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/events/domain/CollectionDomainEvent.java
@@ -24,7 +24,7 @@ import org.apache.isis.applib.util.ToString;
 import lombok.Getter;
 
 /**
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public abstract class CollectionDomainEvent<S,T> extends AbstractDomainEvent<S> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/events/domain/PropertyDomainEvent.java b/api/applib/src/main/java/org/apache/isis/applib/events/domain/PropertyDomainEvent.java
index 07141b8..43c390f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/events/domain/PropertyDomainEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/events/domain/PropertyDomainEvent.java
@@ -25,7 +25,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 /**
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public abstract class PropertyDomainEvent<S,T> extends AbstractDomainEvent<S> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/AbstractLifecycleEvent.java b/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/AbstractLifecycleEvent.java
index 27215d4..2d1c726 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/AbstractLifecycleEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/AbstractLifecycleEvent.java
@@ -21,7 +21,7 @@ package org.apache.isis.applib.events.lifecycle;
 import org.apache.isis.applib.events.EventObjectBase;
 
 /**
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public abstract class AbstractLifecycleEvent<S> extends EventObjectBase<S> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectCreatedEvent.java b/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectCreatedEvent.java
index 79d6a2a..831c2e5 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectCreatedEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectCreatedEvent.java
@@ -19,7 +19,7 @@
 package org.apache.isis.applib.events.lifecycle;
 
 /**
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public abstract class ObjectCreatedEvent<S> extends AbstractLifecycleEvent<S> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectLoadedEvent.java b/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectLoadedEvent.java
index f7e33fc..82aaf11 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectLoadedEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectLoadedEvent.java
@@ -19,7 +19,7 @@
 package org.apache.isis.applib.events.lifecycle;
 
 /**
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public abstract class ObjectLoadedEvent<S> extends AbstractLifecycleEvent<S> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectPersistedEvent.java b/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectPersistedEvent.java
index 1f507ba..9f1d5f6 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectPersistedEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectPersistedEvent.java
@@ -19,7 +19,7 @@
 package org.apache.isis.applib.events.lifecycle;
 
 /**
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public abstract class ObjectPersistedEvent<S> extends AbstractLifecycleEvent<S> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectPersistingEvent.java b/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectPersistingEvent.java
index 245f611..74c0dcb 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectPersistingEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectPersistingEvent.java
@@ -19,7 +19,7 @@
 package org.apache.isis.applib.events.lifecycle;
 
 /**
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public abstract class ObjectPersistingEvent<S> extends AbstractLifecycleEvent<S> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectRemovingEvent.java b/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectRemovingEvent.java
index 6af275a..aa23e84 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectRemovingEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectRemovingEvent.java
@@ -19,7 +19,7 @@
 package org.apache.isis.applib.events.lifecycle;
 
 /**
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public abstract class ObjectRemovingEvent<S> extends AbstractLifecycleEvent<S> {
 
@@ -46,7 +46,7 @@ public abstract class ObjectRemovingEvent<S> extends AbstractLifecycleEvent<S> {
 
     public ObjectRemovingEvent() {
     }
-    
+
     public ObjectRemovingEvent(final S source) {
         super(source);
     }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectUpdatedEvent.java b/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectUpdatedEvent.java
index 7716e51..b835a38 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectUpdatedEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectUpdatedEvent.java
@@ -19,7 +19,7 @@
 package org.apache.isis.applib.events.lifecycle;
 
 /**
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public abstract class ObjectUpdatedEvent<S> extends AbstractLifecycleEvent<S> {
 
@@ -46,7 +46,7 @@ public abstract class ObjectUpdatedEvent<S> extends AbstractLifecycleEvent<S> {
 
     public ObjectUpdatedEvent() {
     }
-    
+
     public ObjectUpdatedEvent(final S source) {
         super(source);
     }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectUpdatingEvent.java b/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectUpdatingEvent.java
index 1e1ba25..ca3ff49 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectUpdatingEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectUpdatingEvent.java
@@ -19,7 +19,7 @@
 package org.apache.isis.applib.events.lifecycle;
 
 /**
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public abstract class ObjectUpdatingEvent<S> extends AbstractLifecycleEvent<S> {
 
@@ -46,7 +46,7 @@ public abstract class ObjectUpdatingEvent<S> extends AbstractLifecycleEvent<S> {
 
     public ObjectUpdatingEvent() {
     }
-    
+
     public ObjectUpdatingEvent(final S source) {
         super(source);
     }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/events/ui/AbstractUiEvent.java b/api/applib/src/main/java/org/apache/isis/applib/events/ui/AbstractUiEvent.java
index 667a50f..d8190bb 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/events/ui/AbstractUiEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/events/ui/AbstractUiEvent.java
@@ -24,7 +24,7 @@ import java.util.Map;
 import org.apache.isis.applib.events.EventObjectBase;
 
 /**
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public abstract class AbstractUiEvent<S> extends EventObjectBase<S> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/events/ui/CssClassUiEvent.java b/api/applib/src/main/java/org/apache/isis/applib/events/ui/CssClassUiEvent.java
index da43156..bc84e18 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/events/ui/CssClassUiEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/events/ui/CssClassUiEvent.java
@@ -24,7 +24,8 @@ import lombok.Getter;
 
 /**
  * Emitted for subscribers to obtain a cssClass hint (equivalent to the <tt>cssClass()</tt> supporting method or the {@link DomainObjectLayout#cssClass()} attribute).
- * @since ? {@index}
+ *
+ * @since 1.x {@index}
  */
 public abstract class CssClassUiEvent<S> extends AbstractUiEvent<S> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/events/ui/IconUiEvent.java b/api/applib/src/main/java/org/apache/isis/applib/events/ui/IconUiEvent.java
index 494f876..fc70cab 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/events/ui/IconUiEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/events/ui/IconUiEvent.java
@@ -22,6 +22,8 @@ import java.util.EventObject;
 
 /**
  * Emitted for subscribers to obtain a cssClass hint (equivalent to the <tt>iconName()</tt> supporting method).
+ *
+ * @since 1.x {@index}
  */
 public abstract class IconUiEvent<S> extends AbstractUiEvent<S> {
 
@@ -90,4 +92,4 @@ public abstract class IconUiEvent<S> extends AbstractUiEvent<S> {
     }
 
 
-}
\ No newline at end of file
+}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/events/ui/LayoutUiEvent.java b/api/applib/src/main/java/org/apache/isis/applib/events/ui/LayoutUiEvent.java
index 828a6c7..06be512 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/events/ui/LayoutUiEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/events/ui/LayoutUiEvent.java
@@ -26,7 +26,8 @@ import lombok.Getter;
 
 /**
  * Emitted for subscribers to obtain a layout hint (equivalent to the <tt>layout()</tt> supporting method).
- * @since ? {@index}
+ *
+ * @since 1.x {@index}
  */
 public abstract class LayoutUiEvent<S> extends AbstractUiEvent<S> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/events/ui/TitleUiEvent.java b/api/applib/src/main/java/org/apache/isis/applib/events/ui/TitleUiEvent.java
index abc336a..121f281 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/events/ui/TitleUiEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/events/ui/TitleUiEvent.java
@@ -26,7 +26,8 @@ import lombok.Getter;
 
 /**
  * Emitted for subscribers to obtain a cssClass hint (equivalent to the <tt>title()</tt> supporting method).
- * @since ? {@index}
+ *
+ * @since 1.x {@index}
  */
 public abstract class TitleUiEvent<S> extends AbstractUiEvent<S> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/DomainModelException.java b/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/DomainModelException.java
index c897721..945c100 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/DomainModelException.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/DomainModelException.java
@@ -24,6 +24,8 @@ import org.apache.isis.applib.exceptions.UnrecoverableException;
 /**
  * Thrown when a problem is found with the domain model, and Isis cannot
  * proceed.
+ *
+ * @since 1.x {@index}
  */
 public class DomainModelException extends UnrecoverableException {
     private static final long serialVersionUID = 1L;
diff --git a/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/MetaModelException.java b/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/MetaModelException.java
index 0675384..d7f57c6 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/MetaModelException.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/MetaModelException.java
@@ -21,6 +21,9 @@ package org.apache.isis.applib.exceptions.unrecoverable;
 
 import org.apache.isis.applib.exceptions.UnrecoverableException;
 
+/**
+ * @since 1.x {@index}
+ */
 public class MetaModelException extends UnrecoverableException {
     private static final long serialVersionUID = 1L;
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/NoAuthenticatorException.java b/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/NoAuthenticatorException.java
index 232327c..8fd878b 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/NoAuthenticatorException.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/NoAuthenticatorException.java
@@ -24,6 +24,8 @@ import org.apache.isis.applib.exceptions.UnrecoverableException;
 /**
  * Indicates that there is no Authenticator available to authenticate a user
  * based on this request.
+ *
+ * @since 1.x {@index}
  */
 public class NoAuthenticatorException extends UnrecoverableException {
     private static final long serialVersionUID = 1L;
diff --git a/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/ObjectNotFoundException.java b/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/ObjectNotFoundException.java
index 172fdad..e9d6fc2 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/ObjectNotFoundException.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/ObjectNotFoundException.java
@@ -22,8 +22,10 @@ package org.apache.isis.applib.exceptions.unrecoverable;
 import org.apache.isis.applib.exceptions.UnrecoverableException;
 
 /**
- * Indicates that the persistence context was unable to get an instantiate 
+ * Indicates that the persistence context was unable to get an instantiate
  * for the specified object identifier.
+ *
+ * @since 1.x {@index}
  */
 public class ObjectNotFoundException extends UnrecoverableException {
     private static final long serialVersionUID = 1L;
diff --git a/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/ObjectPersistenceException.java b/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/ObjectPersistenceException.java
index 172bcd4..5765174 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/ObjectPersistenceException.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/ObjectPersistenceException.java
@@ -21,6 +21,9 @@ package org.apache.isis.applib.exceptions.unrecoverable;
 
 import org.apache.isis.applib.exceptions.UnrecoverableException;
 
+/**
+ * @since 1.x {@index}
+ */
 public class ObjectPersistenceException extends UnrecoverableException {
     private static final long serialVersionUID = 1L;
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/ReflectiveActionException.java b/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/ReflectiveActionException.java
index e4676af..2ead1c1 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/ReflectiveActionException.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/ReflectiveActionException.java
@@ -21,6 +21,9 @@ package org.apache.isis.applib.exceptions.unrecoverable;
 
 import org.apache.isis.applib.exceptions.UnrecoverableException;
 
+/**
+ * @since 1.x {@index}
+ */
 public class ReflectiveActionException extends UnrecoverableException {
     private static final long serialVersionUID = 1L;
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/RepositoryException.java b/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/RepositoryException.java
index 57fc685..5a0ae4b 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/RepositoryException.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/RepositoryException.java
@@ -33,7 +33,7 @@ import org.apache.isis.applib.exceptions.UnrecoverableException;
  *
  * @see UnrecoverableException
  * @see RecoverableException
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public class RepositoryException extends UnrecoverableException {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/UnexpectedCallException.java b/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/UnexpectedCallException.java
index 96f2be5..6fa562e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/UnexpectedCallException.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/UnexpectedCallException.java
@@ -24,6 +24,8 @@ import org.apache.isis.applib.exceptions.UnrecoverableException;
 /**
  * Indicates that a call was made to a method (normally an overridden one) that
  * was not expected, and hence not coded for.
+ *
+ * @since 1.x {@index}
  */
 public class UnexpectedCallException extends UnrecoverableException {
     private static final long serialVersionUID = 1L;
diff --git a/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/UnknownTypeException.java b/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/UnknownTypeException.java
index a4f71bd..f405d41 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/UnknownTypeException.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/exceptions/unrecoverable/UnknownTypeException.java
@@ -21,6 +21,9 @@ package org.apache.isis.applib.exceptions.unrecoverable;
 
 import org.apache.isis.applib.exceptions.UnrecoverableException;
 
+/**
+ * @since 1.x {@index}
+ */
 public class UnknownTypeException extends UnrecoverableException {
     private static final long serialVersionUID = 1L;
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/graph/Edge.java b/api/applib/src/main/java/org/apache/isis/applib/graph/Edge.java
index 96e90f9..1126d79 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/graph/Edge.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/graph/Edge.java
@@ -19,16 +19,13 @@
 package org.apache.isis.applib.graph;
 
 /**
- * Fundamental building block for graph structures. 
- * 
+ * Fundamental building block for graph structures.
+ *
  * @since 2.0 {@index}
  *
  * @param <T> type constraint for values contained by this edge's vertices
  */
 public interface Edge<T> {
-
     Vertex<T> getFrom();
-
     Vertex<T> getTo();
-
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/graph/Vertex.java b/api/applib/src/main/java/org/apache/isis/applib/graph/Vertex.java
index ea75617..f8bf00a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/graph/Vertex.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/graph/Vertex.java
@@ -21,8 +21,8 @@ package org.apache.isis.applib.graph;
 import java.util.stream.Stream;
 
 /**
- * Fundamental building block for graph structures. 
- * 
+ * Fundamental building block for graph structures.
+ *
  * @since 2.0 {@index}
  *
  * @param <T> type constraint for values contained by this vertex
@@ -36,5 +36,4 @@ public interface Vertex<T> {
 
     Stream<Edge<T>> streamIncoming();
     Stream<Edge<T>> streamOutgoing();
-
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/graph/tree/LazyTreeNode.java b/api/applib/src/main/java/org/apache/isis/applib/graph/tree/LazyTreeNode.java
index ce2964e..38b32a5 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/graph/tree/LazyTreeNode.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/graph/tree/LazyTreeNode.java
@@ -26,6 +26,9 @@ import org.apache.isis.applib.annotation.Value;
 import org.apache.isis.commons.internal.base._Lazy;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Value(semanticsProviderName="org.apache.isis.core.metamodel.facets.value.treenode.TreeNodeValueSemanticsProvider")
 public class LazyTreeNode<T> implements TreeNode<T> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/jaxb/DataTypeFactory.java b/api/applib/src/main/java/org/apache/isis/applib/jaxb/DataTypeFactory.java
index d1f0810..1a6ba63 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/jaxb/DataTypeFactory.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/jaxb/DataTypeFactory.java
@@ -26,6 +26,9 @@ import javax.xml.datatype.XMLGregorianCalendar;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public class DataTypeFactory {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/jaxb/JavaSqlXMLGregorianCalendarMarshalling.java b/api/applib/src/main/java/org/apache/isis/applib/jaxb/JavaSqlXMLGregorianCalendarMarshalling.java
index a64f55d..e918597 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/jaxb/JavaSqlXMLGregorianCalendarMarshalling.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/jaxb/JavaSqlXMLGregorianCalendarMarshalling.java
@@ -27,6 +27,9 @@ import javax.xml.datatype.XMLGregorianCalendar;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public final class JavaSqlXMLGregorianCalendarMarshalling {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/jaxb/JavaTimeJaxbAdapters.java b/api/applib/src/main/java/org/apache/isis/applib/jaxb/JavaTimeJaxbAdapters.java
index a263bcb..14bfef2 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/jaxb/JavaTimeJaxbAdapters.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/jaxb/JavaTimeJaxbAdapters.java
@@ -34,13 +34,12 @@ import lombok.experimental.UtilityClass;
 /**
  * Provides JAXB XmlAdapters for Java time temporal types.
  * <p>
- * 
+ *
  * Example:<pre>
  * &#64;XmlElement &#64;XmlJavaTypeAdapter(JavaTimeJaxbAdapters.LocalDateAdapter.class)
  * &#64;Getter &#64;Setter private java.time.LocalDate localDate;
  * </pre>
- * 
- *  
+ *
  * @since 2.0 {@index}
  */
 @UtilityClass
diff --git a/api/applib/src/main/java/org/apache/isis/applib/jaxb/JavaTimeXMLGregorianCalendarMarshalling.java b/api/applib/src/main/java/org/apache/isis/applib/jaxb/JavaTimeXMLGregorianCalendarMarshalling.java
index a57bc51..377401c 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/jaxb/JavaTimeXMLGregorianCalendarMarshalling.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/jaxb/JavaTimeXMLGregorianCalendarMarshalling.java
@@ -31,6 +31,9 @@ import javax.xml.datatype.XMLGregorianCalendar;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public final class JavaTimeXMLGregorianCalendarMarshalling {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/jaxb/JodaTimeJaxbAdapters.java b/api/applib/src/main/java/org/apache/isis/applib/jaxb/JodaTimeJaxbAdapters.java
index 39ca65e..8801bec 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/jaxb/JodaTimeJaxbAdapters.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/jaxb/JodaTimeJaxbAdapters.java
@@ -30,6 +30,9 @@ import org.joda.time.format.ISODateTimeFormat;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public final class JodaTimeJaxbAdapters {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/jaxb/JodaTimeXMLGregorianCalendarMarshalling.java b/api/applib/src/main/java/org/apache/isis/applib/jaxb/JodaTimeXMLGregorianCalendarMarshalling.java
index 95a423c..b98d088 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/jaxb/JodaTimeXMLGregorianCalendarMarshalling.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/jaxb/JodaTimeXMLGregorianCalendarMarshalling.java
@@ -33,6 +33,9 @@ import org.joda.time.LocalTime;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public class JodaTimeXMLGregorianCalendarMarshalling {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntitiesAdapter.java b/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntitiesAdapter.java
index 7f57f40..018171d 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntitiesAdapter.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntitiesAdapter.java
@@ -33,7 +33,7 @@ import lombok.Getter;
 import lombok.val;
 
 /**
- * @since ? {@index}
+ * @since 2.0 {@index}
  */
 public class PersistentEntitiesAdapter extends XmlAdapter<OidsDto, List<Object>> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntityAdapter.java b/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntityAdapter.java
index d24f7d1..49905fc 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntityAdapter.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntityAdapter.java
@@ -26,7 +26,7 @@ import org.apache.isis.schema.common.v2.OidDto;
 import lombok.val;
 
 /**
- * @since ? {@index}
+ * @since 2.0 {@index}
  */
 public class PersistentEntityAdapter extends XmlAdapter<OidDto, Object> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/jaxb/PrimitiveJaxbAdapters.java b/api/applib/src/main/java/org/apache/isis/applib/jaxb/PrimitiveJaxbAdapters.java
index fbae217..b5a9daf 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/jaxb/PrimitiveJaxbAdapters.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/jaxb/PrimitiveJaxbAdapters.java
@@ -25,6 +25,9 @@ import javax.xml.bind.annotation.adapters.XmlAdapter;
 import org.apache.isis.commons.internal.base._Bytes;
 import org.apache.isis.commons.internal.base._Strings;
 
+/**
+ * @since 2.0 {@index}
+ */
 public final class PrimitiveJaxbAdapters {
 
     /**
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/component/ActionLayoutData.java b/api/applib/src/main/java/org/apache/isis/applib/layout/component/ActionLayoutData.java
index 4a72c0b..92a609c 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/component/ActionLayoutData.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/component/ActionLayoutData.java
@@ -39,7 +39,8 @@ import org.apache.isis.applib.layout.links.Link;
  *  Note that {@link org.apache.isis.applib.annotation.ActionLayout#contributed()} is omitted because this only applies
  *  to domain services.
  * </p>
- * @since ? {@index}
+ *
+ * @since 1.x {@index}
  */
 @XmlRootElement(
         name = "action"
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/component/ActionLayoutDataOwner.java b/api/applib/src/main/java/org/apache/isis/applib/layout/component/ActionLayoutDataOwner.java
index c4b07bb..fec116d 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/component/ActionLayoutDataOwner.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/component/ActionLayoutDataOwner.java
@@ -20,6 +20,9 @@ package org.apache.isis.applib.layout.component;
 
 import java.util.List;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface ActionLayoutDataOwner extends Owner {
     List<ActionLayoutData> getActions();
     void setActions(List<ActionLayoutData> actions);
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/component/CollectionLayoutData.java b/api/applib/src/main/java/org/apache/isis/applib/layout/component/CollectionLayoutData.java
index 46d4bb2..47807bd 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/component/CollectionLayoutData.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/component/CollectionLayoutData.java
@@ -38,6 +38,8 @@ import org.apache.isis.applib.layout.links.Link;
  *     Note that {@link org.apache.isis.applib.annotation.CollectionLayout#render()} is omitted because
  *     {@link #defaultView} is its replacement.
  * </p>
+ *
+ * @since 1.x {@index}
  */
 @XmlRootElement(
         name = "collection"
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/component/CollectionLayoutDataOwner.java b/api/applib/src/main/java/org/apache/isis/applib/layout/component/CollectionLayoutDataOwner.java
index b4ecb19..2a1a3f0 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/component/CollectionLayoutDataOwner.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/component/CollectionLayoutDataOwner.java
@@ -20,7 +20,9 @@ package org.apache.isis.applib.layout.component;
 
 import java.util.List;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface CollectionLayoutDataOwner extends MemberRegionOwner {
-
     List<CollectionLayoutData> getCollections();
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/component/CssClassFaPosition.java b/api/applib/src/main/java/org/apache/isis/applib/layout/component/CssClassFaPosition.java
index ff22b89..bdbbec0 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/component/CssClassFaPosition.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/component/CssClassFaPosition.java
@@ -20,6 +20,9 @@ package org.apache.isis.applib.layout.component;
 
 import javax.xml.bind.annotation.XmlType;
 
+/**
+ * @since 1.x {@index}
+ */
 @XmlType(
         namespace = "http://isis.apache.org/applib/layout/component"
         )
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/component/DomainObjectLayoutData.java b/api/applib/src/main/java/org/apache/isis/applib/layout/component/DomainObjectLayoutData.java
index e16a71a..7493d72 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/component/DomainObjectLayoutData.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/component/DomainObjectLayoutData.java
@@ -31,6 +31,8 @@ import org.apache.isis.applib.layout.links.Link;
 
 /**
  * Describes the layout of the title and icon of a domain object, broadly corresponding to {@link org.apache.isis.applib.annotation.DomainObjectLayout}.
+ *
+ * @since 1.x {@index}
  */
 @XmlRootElement(
         name = "domainObject"
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/component/DomainObjectLayoutDataOwner.java b/api/applib/src/main/java/org/apache/isis/applib/layout/component/DomainObjectLayoutDataOwner.java
index 74c6a25..788dd83 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/component/DomainObjectLayoutDataOwner.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/component/DomainObjectLayoutDataOwner.java
@@ -18,6 +18,9 @@
  */
 package org.apache.isis.applib.layout.component;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface DomainObjectLayoutDataOwner extends Owner {
 
     DomainObjectLayoutData getDomainObject();
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java b/api/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java
index 335d65a..5ea34cd 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java
@@ -35,6 +35,8 @@ import org.apache.isis.applib.layout.grid.bootstrap3.BS3Col;
  * A {@link MemberRegion region} of the page containing a set of
  * related {@link PropertyLayoutData properties} and associated
  * {@link ActionLayoutData actions}.
+ *
+ * @since 1.x {@index}
  */
 @XmlRootElement(
         name = "fieldSet"
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSetOwner.java b/api/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSetOwner.java
index c6a0942..b62483d 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSetOwner.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSetOwner.java
@@ -20,6 +20,9 @@ package org.apache.isis.applib.layout.component;
 
 import java.util.List;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface FieldSetOwner extends MemberRegionOwner {
     List<FieldSet> getFieldSets();
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/component/HasNamed.java b/api/applib/src/main/java/org/apache/isis/applib/layout/component/HasNamed.java
index 098727c..8567b2f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/component/HasNamed.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/component/HasNamed.java
@@ -21,6 +21,9 @@ package org.apache.isis.applib.layout.component;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface HasNamed {
 
     @XmlElement(required = false)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/component/MemberRegion.java b/api/applib/src/main/java/org/apache/isis/applib/layout/component/MemberRegion.java
index f44efe2..9e81369 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/component/MemberRegion.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/component/MemberRegion.java
@@ -26,6 +26,8 @@ package org.apache.isis.applib.layout.component;
  *     of properties and their actions), and a <code>CollectionLayoutData</code>
  *     (containing a single collection and associated actions)
  * </p>
+ *
+ * @since 1.x {@index}
  */
 public interface MemberRegion<T extends MemberRegionOwner> extends Owned<T> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/component/MemberRegionOwner.java b/api/applib/src/main/java/org/apache/isis/applib/layout/component/MemberRegionOwner.java
index a32526a..5eafbe8 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/component/MemberRegionOwner.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/component/MemberRegionOwner.java
@@ -18,6 +18,9 @@
  */
 package org.apache.isis.applib.layout.component;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface MemberRegionOwner extends Owner {
 
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/component/Owned.java b/api/applib/src/main/java/org/apache/isis/applib/layout/component/Owned.java
index 807fe54..38dffd4 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/component/Owned.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/component/Owned.java
@@ -18,6 +18,9 @@
  */
 package org.apache.isis.applib.layout.component;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface Owned<T extends Owner> {
     T getOwner();
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/component/Owner.java b/api/applib/src/main/java/org/apache/isis/applib/layout/component/Owner.java
index 37299cf..96f0711 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/component/Owner.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/component/Owner.java
@@ -18,7 +18,9 @@
  */
 package org.apache.isis.applib.layout.component;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface Owner {
 
-
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/component/PropertyLayoutData.java b/api/applib/src/main/java/org/apache/isis/applib/layout/component/PropertyLayoutData.java
index a56700b..f8e37d4 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/component/PropertyLayoutData.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/component/PropertyLayoutData.java
@@ -37,6 +37,8 @@ import org.apache.isis.applib.layout.links.Link;
 
 /**
  * Describes the layout of a single property, broadly corresponds to the {@link org.apache.isis.applib.annotation.PropertyLayout} annotation.
+ *
+ * @since 1.x {@index}
  */
 @XmlRootElement(
         name = "property"
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/component/ServiceActionLayoutData.java b/api/applib/src/main/java/org/apache/isis/applib/layout/component/ServiceActionLayoutData.java
index 507ae23..93e3248 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/component/ServiceActionLayoutData.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/component/ServiceActionLayoutData.java
@@ -36,6 +36,8 @@ import org.apache.isis.applib.layout.links.Link;
  *  Note that {@link org.apache.isis.applib.annotation.ActionLayout#contributed()} is omitted because this only applies
  *  to domain services.
  * </p>
+ *
+ * @since 1.x {@index}
  */
 @XmlRootElement(
         name = "serviceAction"
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/component/ServiceActionLayoutDataOwner.java b/api/applib/src/main/java/org/apache/isis/applib/layout/component/ServiceActionLayoutDataOwner.java
index 0f98411..dda5240 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/component/ServiceActionLayoutDataOwner.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/component/ServiceActionLayoutDataOwner.java
@@ -20,6 +20,9 @@ package org.apache.isis.applib.layout.component;
 
 import java.util.List;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface ServiceActionLayoutDataOwner extends Owner {
     List<ServiceActionLayoutData> getServiceActions();
     void setServiceActions(List<ServiceActionLayoutData> actions);
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/Grid.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/Grid.java
index 01a3992..0f4b2ba 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/Grid.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/Grid.java
@@ -34,6 +34,8 @@ import org.apache.isis.applib.services.layout.LayoutService;
  * <p>
  *     It is used by the {@link LayoutService} as a common based type for any layouts read in from XML.
  * </p>
+ *
+ * @since 1.x {@index}
  */
 public interface Grid {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/GridAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/GridAbstract.java
index 6a1fdc1..2f797d1 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/GridAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/GridAbstract.java
@@ -41,6 +41,8 @@ import org.apache.isis.applib.services.layout.LayoutService;
  * <p>
  *     It is used by the {@link LayoutService} as a common based type for any layouts read in from XML.
  * </p>
+ *
+ * @since 1.x {@index}
  */
 @XmlTransient // ignore this class
 public abstract class GridAbstract implements Grid {
@@ -98,7 +100,7 @@ public abstract class GridAbstract implements Grid {
     protected void traverseActions(
             final ActionLayoutDataOwner actionLayoutDataOwner,
             final GridAbstract.Visitor visitor) {
-        
+
         final List<ActionLayoutData> actionLayoutDatas = actionLayoutDataOwner.getActions();
         if(actionLayoutDatas == null) {
             return;
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java
index 8847cf3..eedeaa5 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java
@@ -18,6 +18,9 @@
  */
 package org.apache.isis.applib.layout.grid.bootstrap3;
 
+/**
+ * @since 1.x {@index}
+ */
 public abstract class BS3ClearFix extends BS3RowContent {
 
     private static final long serialVersionUID = 1L;
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixHidden.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixHidden.java
index bcd5422..b227be6 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixHidden.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixHidden.java
@@ -28,6 +28,8 @@ import javax.xml.bind.annotation.XmlType;
  * <p>
  *     It is rendered as a (eg) &lt;div class=&quot;clearfix hidden-xs ...&quot;&gt;
  * </p>
+ *
+ * @since 1.x {@index}
  */
 @XmlRootElement(
         name = "clearFixHidden"
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixVisible.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixVisible.java
index a2349a3..22d661c 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixVisible.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFixVisible.java
@@ -29,6 +29,8 @@ import javax.xml.bind.annotation.XmlType;
  * <p>
  *     It is rendered as a (eg) &lt;div class=&quot;clearfix visible-xs-block ...&quot;&gt;
  * </p>
+ *
+ * @since 1.x {@index}
  */
 @XmlRootElement(
         name = "clearFixVisible"
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Col.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Col.java
index 47686f2..550e832 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Col.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Col.java
@@ -50,6 +50,8 @@ import org.apache.isis.commons.internal.primitives._Ints.Bound;
  * <p>
  *     It is rendered as a (eg) &lt;div class=&quot;col-md-4 ...&quot;&gt;
  * </p>
+ *
+ * @since 1.x {@index}
  */
 @XmlRootElement(
         name = "col"
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Element.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Element.java
index 062d557..c3410c2 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Element.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Element.java
@@ -20,6 +20,9 @@ package org.apache.isis.applib.layout.grid.bootstrap3;
 
 import java.io.Serializable;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface BS3Element extends WithinGrid, Serializable {
 
     /**
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ElementAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ElementAbstract.java
index de037fe..160c702 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ElementAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ElementAbstract.java
@@ -22,6 +22,8 @@ import javax.xml.bind.annotation.XmlAttribute;
 
 /**
  * Superclass for all layout classes, factoring out the common {@link #getCssClass()} attribute.
+ *
+ * @since 1.x {@index}
  */
 public abstract class BS3ElementAbstract implements BS3Element {
 
@@ -47,4 +49,4 @@ public abstract class BS3ElementAbstract implements BS3Element {
 
 
 
-}
\ No newline at end of file
+}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Grid.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Grid.java
index f50e427..125a0fc 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Grid.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Grid.java
@@ -45,6 +45,8 @@ import org.apache.isis.applib.mixins.dto.Dto;
  * <p>
  *     The element is rendered as a &lt;div class=&quot;...&quot;&gt;
  * </p>
+ *
+ * @since 1.x {@index}
  */
 @XmlRootElement(
         name = "grid"
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Row.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Row.java
index 9fc2d77..2f2256b 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Row.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Row.java
@@ -37,6 +37,8 @@ import org.apache.isis.applib.annotation.Programmatic;
  * <p>
  *     It is rendered as a &lt;div class=&quot;row ...&quot;&gt;
  * </p>
+ *
+ * @since 1.x {@index}
  */
 @XmlType(
         name = "row"
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContent.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContent.java
index cfdd27c..84a7dec 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContent.java
@@ -31,6 +31,7 @@ import org.apache.isis.applib.annotation.Programmatic;
  *     {@link BS3ClearFix clearfix} classes.
  * </p>
  *
+ * @since 1.x {@index}
  */
 public abstract class BS3RowContent extends BS3ElementAbstract {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContentOwner.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContentOwner.java
index c0f1dbd..a2e7542 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContentOwner.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowContentOwner.java
@@ -20,6 +20,9 @@ package org.apache.isis.applib.layout.grid.bootstrap3;
 
 import org.apache.isis.applib.layout.component.Owner;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface BS3RowContentOwner extends Owner, WithinGrid {
 
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowOwner.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowOwner.java
index 1dafe14..1062ef8 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowOwner.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3RowOwner.java
@@ -22,6 +22,9 @@ import java.util.List;
 
 import org.apache.isis.applib.layout.component.Owner;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface BS3RowOwner extends Owner, WithinGrid {
 
     List<BS3Row> getRows();
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Tab.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Tab.java
index 772e6d4..6c4a282 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Tab.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3Tab.java
@@ -40,6 +40,8 @@ import org.apache.isis.applib.layout.component.PropertyLayoutData;
  * <p>
  *     They simply contain one or more {@link BS3Row row}s.
  * </p>
+ *
+ * @since 1.x {@index}
  */
 @XmlType(
         name = "tab"
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroup.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroup.java
index 02471b6..de7eaff 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroup.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroup.java
@@ -30,6 +30,8 @@ import org.apache.isis.applib.annotation.Programmatic;
 
 /**
  * Represents a tab group containing one or more {@link BS3Tab tab}s.
+ *
+ * @since 1.x {@index}
  */
 @XmlType(
         name = "tabGroup"
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroupOwner.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroupOwner.java
index 280058f..cef4527 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroupOwner.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabGroupOwner.java
@@ -22,6 +22,9 @@ import java.util.List;
 
 import org.apache.isis.applib.layout.component.Owner;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface BS3TabGroupOwner extends Owner, WithinGrid {
 
     List<BS3TabGroup> getTabGroups();
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabOwner.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabOwner.java
index 2a3620d..52c0243 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabOwner.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3TabOwner.java
@@ -22,6 +22,9 @@ import java.util.List;
 
 import org.apache.isis.applib.layout.component.Owner;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface BS3TabOwner extends Owner, WithinGrid {
 
     List<BS3Tab> getTabs();
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/Size.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/Size.java
index 4dd8c61..fbecbaa 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/Size.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/Size.java
@@ -21,6 +21,8 @@ package org.apache.isis.applib.layout.grid.bootstrap3;
 /**
  * As per <a href="http://getbootstrap.com/css/#grid-options">grid options</a>, also used in
  * <a href="http://getbootstrap.com/css/#responsive-utilities">responsive utility</a> classes.
+ *
+ * @since 1.x {@index}
  */
 public enum Size {
     XS,
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/SizeSpan.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/SizeSpan.java
index 813c41c..a24bd28 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/SizeSpan.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/SizeSpan.java
@@ -26,6 +26,9 @@ import javax.xml.bind.annotation.XmlType;
 /**
  *
  */
+/**
+ * @since 1.x {@index}
+ */
 @XmlType(
         name = "sizeSpan"
         , propOrder = {}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/WithinGrid.java b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/WithinGrid.java
index 2f45a1f..532e9a1 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/WithinGrid.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/WithinGrid.java
@@ -20,6 +20,9 @@ package org.apache.isis.applib.layout.grid.bootstrap3;
 
 import org.apache.isis.applib.annotation.Programmatic;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface WithinGrid {
 
     @Programmatic
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/links/Link.java b/api/applib/src/main/java/org/apache/isis/applib/layout/links/Link.java
index 025e550..135bd7e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/links/Link.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/links/Link.java
@@ -25,6 +25,9 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+/**
+ * @since 1.x {@index}
+ */
 @XmlType(
         name = "link"
         , propOrder = {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/HasNamed.java b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/HasNamed.java
index 6627d86..4b4d004 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/HasNamed.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/HasNamed.java
@@ -20,9 +20,12 @@ package org.apache.isis.applib.layout.menubars;
 
 import org.apache.isis.applib.annotation.Programmatic;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface HasNamed {
 
     @Programmatic
     String getNamed();
-    
+
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/Menu.java b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/Menu.java
index 68789ba..1dd86c1 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/Menu.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/Menu.java
@@ -18,6 +18,9 @@
  */
 package org.apache.isis.applib.layout.menubars;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface Menu extends HasNamed {
 
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBar.java b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBar.java
index 7f84461..2a75254 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBar.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBar.java
@@ -18,6 +18,9 @@
  */
 package org.apache.isis.applib.layout.menubars;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface MenuBar {
 
-}
\ No newline at end of file
+}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBars.java b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBars.java
index 1be7b9e..da3c798 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBars.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBars.java
@@ -23,6 +23,9 @@ import java.util.Map;
 import org.apache.isis.applib.annotation.DomainServiceLayout;
 import org.apache.isis.applib.layout.component.ServiceActionLayoutData;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface MenuBars {
 
     @FunctionalInterface
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBarsAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBarsAbstract.java
index 3fbaf16..e1a24bd 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBarsAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBarsAbstract.java
@@ -28,6 +28,9 @@ import org.apache.isis.applib.layout.component.ServiceActionLayoutData;
 
 import lombok.val;
 
+/**
+ * @since 1.x {@index}
+ */
 @XmlTransient // ignore this class
 public abstract class MenuBarsAbstract implements MenuBars, Serializable {
 
@@ -53,7 +56,7 @@ public abstract class MenuBarsAbstract implements MenuBars, Serializable {
     @XmlTransient
     public LinkedHashMap<String, ServiceActionLayoutData> getAllServiceActionsByObjectTypeAndId() {
 
-        val serviceActionsByObjectTypeAndId = 
+        val serviceActionsByObjectTypeAndId =
                 new LinkedHashMap<String, ServiceActionLayoutData>();
 
         visit(serviceActionLayoutData -> {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuSection.java b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuSection.java
index feacaf0..936da1b 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuSection.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuSection.java
@@ -23,7 +23,10 @@ import java.util.List;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.layout.component.ServiceActionLayoutData;
 
-public interface MenuSection extends HasNamed {
+/**
+ * @since 1.x {@index}
+ */
+1public interface MenuSection extends HasNamed {
 
     @Programmatic
     List<ServiceActionLayoutData> getServiceActions();
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3Menu.java b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3Menu.java
index a7ccaf0..20348bc 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3Menu.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3Menu.java
@@ -33,6 +33,8 @@ import lombok.ToString;
 
 /**
  * Describes the collection of domain services into menubars, broadly corresponding to the aggregation of information of {@link DomainServiceLayout} that have the same value of {@link DomainServiceLayout#named()}.
+ *
+ * @since 1.x {@index}
  */
 @XmlType(
         name = "menu"
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBar.java b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBar.java
index cb65485..7758cef 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBar.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBar.java
@@ -31,6 +31,8 @@ import org.apache.isis.applib.layout.menubars.MenuBar;
 
 /**
  * Describes the collection of domain services into menubars, broadly corresponding to the aggregation of information of {@link org.apache.isis.applib.annotation.DomainServiceLayout} that have the same value of {@link DomainServiceLayout#named()}.
+ *
+ * @since 1.x {@index}
  */
 @XmlType(
         name = "menuBar"
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars.java b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars.java
index d52e577..a147e92 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars.java
@@ -32,6 +32,8 @@ import org.apache.isis.commons.internal.exceptions._Exceptions;
 
 /**
  * Describes the collection of domain services into menubars, broadly corresponding to the aggregation of information within {@link org.apache.isis.applib.annotation.DomainServiceLayout}.
+ *
+ * @since 1.x {@index}
  */
 @XmlRootElement(
         name = "menuBars"
@@ -132,7 +134,7 @@ public class BS3MenuBars extends org.apache.isis.applib.layout.menubars.MenuBars
 
         public static VisitorAdapter visitingMenuSections(Consumer<BS3MenuSection> onVisit) {
             return new VisitorAdapter() {
-                @Override public void visit(final BS3MenuSection section) { 
+                @Override public void visit(final BS3MenuSection section) {
                     onVisit.accept(section);
                 }
             };
@@ -140,7 +142,7 @@ public class BS3MenuBars extends org.apache.isis.applib.layout.menubars.MenuBars
 
         public static VisitorAdapter visitingMenus(Consumer<BS3Menu> onVisit) {
             return new VisitorAdapter() {
-                @Override public void visit(final BS3Menu menu) { 
+                @Override public void visit(final BS3Menu menu) {
                     onVisit.accept(menu);
                 }
             };
diff --git a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuSection.java b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuSection.java
index 1e563b8..9af5957 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuSection.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuSection.java
@@ -32,6 +32,8 @@ import org.apache.isis.applib.layout.menubars.MenuSection;
 
 /**
  * Corresponds to a domain service that contributes its serviceActions under a particular {@link BS3MenuBar}.
+ *
+ * @since 1.x {@index}
  */
 @XmlType(
         name = "section"
@@ -58,7 +60,7 @@ public class BS3MenuSection implements MenuSection, Serializable, ServiceActionL
     public void setNamed(String named) {
         this.named = named;
     }
-    
+
     private List<ServiceActionLayoutData> serviceActions = new ArrayList<>();
 
     // no wrapper
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/MixinConstants.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/MixinConstants.java
index 8f7046a..acc3375 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/MixinConstants.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/MixinConstants.java
@@ -21,6 +21,9 @@ package org.apache.isis.applib.mixins;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 
+/**
+ * @since 1.x {@index}
+ */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class MixinConstants {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto.java
index 389eab6..31902e1 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto.java
@@ -18,6 +18,9 @@
  */
 package org.apache.isis.applib.mixins.dto;
 
+/**
+ * @since 1.x {@index}
+ */
 public interface Dto {
 
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXml.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXml.java
index 5bcf5cc..7cbc941 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXml.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXml.java
@@ -34,6 +34,9 @@ import org.apache.isis.applib.value.NamedWithMimeType.CommonMimeType;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ * @since 1.x {@index}
+ */
 @Action(
         domainEvent = Dto_downloadXml.ActionDomainEvent.class,
         semantics = SemanticsOf.SAFE,
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXsd.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXsd.java
index ba81923..1f1f169 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXsd.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/dto/Dto_downloadXsd.java
@@ -39,6 +39,9 @@ import org.apache.isis.applib.value.NamedWithMimeType.CommonMimeType;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ * @since 1.x {@index}
+ */
 @Action(
         domainEvent = Dto_downloadXsd.ActionDomainEvent.class,
         semantics = SemanticsOf.SAFE,
@@ -71,7 +74,7 @@ public class Dto_downloadXsd {
 
         if(schemaMap.isEmpty()) {
             val msg = String.format(
-                    "No schemas were generated for %s; programming error?", 
+                    "No schemas were generated for %s; programming error?",
                     holder.getClass().getName());
             messageService.warnUser(msg);
             return null;
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_downloadLayoutXml.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_downloadLayoutXml.java
index ac45a1e..123e28c 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_downloadLayoutXml.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_downloadLayoutXml.java
@@ -34,6 +34,9 @@ import org.apache.isis.applib.value.NamedWithMimeType.CommonMimeType;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ * @since 1.x {@index}
+ */
 @Action(
         domainEvent = Object_downloadLayoutXml.ActionDomainEvent.class,
         semantics = SemanticsOf.SAFE,
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_openRestApi.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_openRestApi.java
index f8bc14c..27ce79f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_openRestApi.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_openRestApi.java
@@ -34,6 +34,9 @@ import org.apache.isis.applib.value.LocalResourcePath;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ * @since 1.x {@index}
+ */
 @Action(
         domainEvent = Object_openRestApi.ActionDomainEvent.class,
         semantics = SemanticsOf.SAFE,
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_rebuildMetamodel.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_rebuildMetamodel.java
index 58f5b5f..6e2ccd9 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_rebuildMetamodel.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_rebuildMetamodel.java
@@ -30,6 +30,9 @@ import org.apache.isis.applib.services.metamodel.MetaModelService;
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ * @since 1.x {@index}
+ */
 @Action(
         domainEvent = Object_rebuildMetamodel.ActionDomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT,
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_downloadMetamodelXml.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_downloadMetamodelXml.java
index 0129e8e..0593c57 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_downloadMetamodelXml.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_downloadMetamodelXml.java
@@ -38,6 +38,9 @@ import org.apache.isis.applib.value.NamedWithMimeType.CommonMimeType;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ * @since 1.x {@index}
+ */
 @Action(
         domainEvent = Object_downloadMetamodelXml.ActionDomainEvent.class,
         semantics = SemanticsOf.SAFE,
@@ -52,7 +55,7 @@ public class Object_downloadMetamodelXml {
 
     private final Object holder;
 
-    public static class ActionDomainEvent 
+    public static class ActionDomainEvent
     extends org.apache.isis.applib.IsisModuleApplib.ActionDomainEvent<Object_downloadMetamodelXml> {}
 
     @MemberOrder(name = MixinConstants.METADATA_LAYOUT_GROUPNAME, sequence = "700.2")
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java
index d3e5787..1f3d329 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java
@@ -33,6 +33,9 @@ import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ * @since 1.x {@index}
+ */
 @Property
 @PropertyLayout(hidden = Where.ALL_TABLES)
 @RequiredArgsConstructor
@@ -40,10 +43,10 @@ public class Object_objectIdentifier {
 
     @Inject private BookmarkService bookmarkService;
     @Inject private MetaModelService mmService;
-    
+
     private final Object holder;
 
-    public static class ActionDomainEvent 
+    public static class ActionDomainEvent
     extends org.apache.isis.applib.IsisModuleApplib.ActionDomainEvent<Object_objectIdentifier> {}
 
     @MemberOrder(name = MixinConstants.METADATA_LAYOUT_GROUPNAME, sequence = "700.2")
@@ -57,13 +60,13 @@ public class Object_objectIdentifier {
     }
 
     // -- HELPER
-    
+
     private String shortend(@NonNull String identifier) {
-        
+
         val hashHexed = Integer.toHexString(identifier.hashCode());
         val hashPadded = _Strings.padStart(hashHexed, 8, '0');
         return "»" + hashPadded;
     }
-    
+
 
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectType.java b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectType.java
index 6dfd9e9..c2d2742 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectType.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectType.java
@@ -30,16 +30,19 @@ import org.apache.isis.applib.services.bookmark.BookmarkService;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ * @since 1.x {@index}
+ */
 @Property
 @PropertyLayout(hidden = Where.ALL_TABLES)
 @RequiredArgsConstructor
 public class Object_objectType {
-    
+
     @Inject private BookmarkService bookmarkService;
 
     private final Object holder;
 
-    public static class ActionDomainEvent 
+    public static class ActionDomainEvent
     extends org.apache.isis.applib.IsisModuleApplib.ActionDomainEvent<Object_objectType> {}
 
     @MemberOrder(name = MixinConstants.METADATA_LAYOUT_GROUPNAME, sequence = "700.1")
diff --git a/api/applib/src/main/java/org/apache/isis/applib/query/AllInstancesQuery.java b/api/applib/src/main/java/org/apache/isis/applib/query/AllInstancesQuery.java
index bdea6df..f5be5d2 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/query/AllInstancesQuery.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/query/AllInstancesQuery.java
@@ -19,7 +19,7 @@
 package org.apache.isis.applib.query;
 
 /**
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 public interface AllInstancesQuery<T> extends Query<T> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/query/NamedQuery.java b/api/applib/src/main/java/org/apache/isis/applib/query/NamedQuery.java
index 69c328f..00f4d73 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/query/NamedQuery.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/query/NamedQuery.java
@@ -25,7 +25,7 @@ import javax.annotation.Nullable;
 import lombok.NonNull;
 
 /**
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 public interface NamedQuery<T> extends Query<T> {
 
@@ -33,9 +33,9 @@ public interface NamedQuery<T> extends Query<T> {
     Map<String, Object> getParametersByName();
 
     // -- WITHERS
-    
+
     @Override NamedQuery<T> withRange(@NonNull QueryRange range);
-    
+
     NamedQuery<T> withParameter(@NonNull String parameterName, @Nullable Object parameterValue);
-    
+
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/query/Query.java b/api/applib/src/main/java/org/apache/isis/applib/query/Query.java
index 0b60171..39c2441 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/query/Query.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/query/Query.java
@@ -46,11 +46,11 @@ import lombok.NonNull;
  *
  * <b>Note:</b> that the predicate is applied within the {@link RepositoryService}
  * (ie client-side) rather than being pushed back to the object store.
- * 
- * @since 1.x revised for 2.0 {@index}
+ *
+ * @since 1.x {@index}
  */
 public interface Query<T> extends Serializable {
-    
+
     /**
      * The {@link Class} of the objects returned by this query.
      */
@@ -65,32 +65,32 @@ public interface Query<T> extends Serializable {
      * Returns a model with start index into the set table and maximal number of items to return.
      */
     QueryRange getRange();
-    
+
     // -- WITHERS
-    
+
     Query<T> withRange(@NonNull QueryRange range);
-    
+
     default Query<T> withRange(long ...range) {
         return withRange(QueryRange.of(range));
     }
-    
+
     default Query<T> withStart(long start) {
         return withRange(start);
     }
-    
+
     default Query<T> withLimit(long limit) {
         return withRange(0L, limit);
     }
-    
+
     // -- FACTORIES
-    
+
     public static <T> Query<T> allInstances(
             final @NonNull Class<T> resultType) {
         return new _AllInstancesQueryDefault<>(resultType, QueryRange.unconstrained());
     }
-    
+
     public static <T> NamedQuery<T> named(
-            final @NonNull Class<T> resultType, 
+            final @NonNull Class<T> resultType,
             final @NonNull String queryName) {
         return new _NamedQueryDefault<>(resultType, queryName, QueryRange.unconstrained(), null);
     }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/acceptheader/AcceptHeaderService.java b/api/applib/src/main/java/org/apache/isis/applib/services/acceptheader/AcceptHeaderService.java
index 3392d81..c19d9fc 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/acceptheader/AcceptHeaderService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/acceptheader/AcceptHeaderService.java
@@ -23,8 +23,6 @@ import java.util.List;
 import javax.ws.rs.core.MediaType;
 
 /**
- * 
- * 
  * @since 1.x {@index}
  */
 public interface AcceptHeaderService {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkHolder.java b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkHolder.java
index a67179b..0a81f1c 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkHolder.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkHolder.java
@@ -19,8 +19,7 @@
 package org.apache.isis.applib.services.bookmark;
 
 /**
- * 
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 public interface BookmarkHolder {
     Bookmark bookmark();
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkHolder_lookup.java b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkHolder_lookup.java
index 007cb0c..1c889c4 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkHolder_lookup.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkHolder_lookup.java
@@ -27,6 +27,9 @@ import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ * @since 1.x {@index}
+ */
 @Action(
         domainEvent = BookmarkHolder_lookup.ActionDomainEvent.class,
         semantics = SemanticsOf.SAFE
@@ -44,9 +47,9 @@ public class BookmarkHolder_lookup {
     public Object act() {
         return bookmarkService.lookup(bookmarkHolder);
     }
-    
+
     // -- DEPENDENCIES
-    
+
     @Inject private BookmarkService bookmarkService;
 
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkHolder_object.java b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkHolder_object.java
index c8aeda3..0ab33dc 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkHolder_object.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkHolder_object.java
@@ -25,6 +25,9 @@ import org.apache.isis.applib.annotation.Property;
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ * @since 1.x {@index}
+ */
 @Property(
         domainEvent = BookmarkHolder_object.PropertyDomainEvent.class
 )
@@ -33,7 +36,7 @@ public class BookmarkHolder_object {
 
     private final BookmarkHolder bookmarkHolder;
 
-    public static class PropertyDomainEvent 
+    public static class PropertyDomainEvent
     extends IsisModuleApplib.PropertyDomainEvent<BookmarkHolder_object, Object> { }
 
     public Object prop() {
@@ -41,7 +44,7 @@ public class BookmarkHolder_object {
     }
 
     // -- DEPENDENCIES
-    
+
     @Inject private BookmarkService bookmarkService;
 
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/clock/ClockService.java b/api/applib/src/main/java/org/apache/isis/applib/services/clock/ClockService.java
index 9959855..a924101 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/clock/ClockService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/clock/ClockService.java
@@ -21,24 +21,23 @@ package org.apache.isis.applib.services.clock;
 import org.apache.isis.applib.clock.VirtualClock;
 
 /**
- * This service allows an application to be decoupled from the system time.  
- * The most common use case is in support of testing scenarios, to &quot;mock the clock&quot;.  
+ * This service allows an application to be decoupled from the system time.
+ * The most common use case is in support of testing scenarios, to &quot;mock the clock&quot;.
  * Use of this service also opens up the use of centralized
  * co-ordinated time management through a centralized time service.
  *
- * 
  * @since 1.x revised for 2.0 {@index}
  */
 public interface ClockService {
 
     VirtualClock getClock();
-    
+
     // -- SHORTCUTS
-    
+
     default long getEpochMillis() {
         return getClock().getEpochMillis();
     }
-    
+
 //    public java.time.LocalDate now() {
 //        return Clock.getTimeAsLocalDate();
 //    }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessorForActionAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessorForActionAbstract.java
index 9824315..7f6d58e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessorForActionAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessorForActionAbstract.java
@@ -25,6 +25,8 @@ import org.apache.isis.schema.cmd.v2.ParamsDto;
 
 /**
  * Convenience adapter for command processors for action invocations.
+ *
+ * @since 1.x {@index}
  */
 public abstract class CommandDtoProcessorForActionAbstract implements CommandDtoProcessor {
     protected ActionDto getActionDto(final CommandDto commandDto) {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessorForPropertyAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessorForPropertyAbstract.java
index 10691cf..348c1a3 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessorForPropertyAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessorForPropertyAbstract.java
@@ -23,6 +23,8 @@ import org.apache.isis.schema.cmd.v2.PropertyDto;
 
 /**
  * Convenience adapter for command processors for property edits.
+ *
+ * @since 1.x {@index}
  */
 public abstract class CommandDtoProcessorForPropertyAbstract
 implements CommandDtoProcessor {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/spi/CommandDtoProcessorServiceIdentity.java b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/spi/CommandDtoProcessorServiceIdentity.java
index e060330..d160d56 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/spi/CommandDtoProcessorServiceIdentity.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/spi/CommandDtoProcessorServiceIdentity.java
@@ -28,8 +28,8 @@ import org.apache.isis.schema.cmd.v2.CommandDto;
 
 /**
  * At least one implementation is required.
- * 
- * @since 2.0 {@index}
+ *
+ * @since 1.x {@index}
  */
 @Service
 @Named("isis.applib.CommandDtoProcessorServiceIdentity")
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationMenu.java b/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationMenu.java
index e7f29b2..e4ce41d 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationMenu.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationMenu.java
@@ -32,13 +32,12 @@ import org.apache.isis.applib.annotation.DomainServiceLayout;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Named("isis.applib.ConfigurationMenu")
 @DomainService(objectType = "isis.applib.ConfigurationMenu")
 @DomainServiceLayout(menuBar = DomainServiceLayout.MenuBar.TERTIARY)
-/**
- * 
- * @since 1.x {@index}
- */
 public class ConfigurationMenu {
 
     public static abstract class ActionDomainEvent
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationProperty.java b/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationProperty.java
index b4bc82f..340b7f6 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationProperty.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationProperty.java
@@ -36,7 +36,6 @@ import lombok.NoArgsConstructor;
 import lombok.Setter;
 
 /**
- * 
  * @since 2.0 {@index}
  */
 @XmlRootElement(name = "configurationProperty")
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationViewService.java b/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationViewService.java
index 2fb60e0..60604e8 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationViewService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationViewService.java
@@ -22,7 +22,6 @@ package org.apache.isis.applib.services.confview;
 import java.util.Set;
 
 /**
- * 
  * @since 2.0 {@index}
  */
 public interface ConfigurationViewService {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/conmap/ContentMappingService.java b/api/applib/src/main/java/org/apache/isis/applib/services/conmap/ContentMappingService.java
index 4782e77..8ebdf07 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/conmap/ContentMappingService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/conmap/ContentMappingService.java
@@ -27,8 +27,8 @@ import javax.ws.rs.core.MediaType;
 import org.apache.isis.commons.internal.base._NullSafe;
 
 /**
- * 
- * @since 2.0 {@index}
+ *
+ * @since 1.x {@index}
  */
 public interface ContentMappingService {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/error/SimpleTicket.java b/api/applib/src/main/java/org/apache/isis/applib/services/error/SimpleTicket.java
index b1fa8ba..542e926 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/error/SimpleTicket.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/error/SimpleTicket.java
@@ -37,6 +37,8 @@ import static org.apache.isis.commons.internal.base._NullSafe.isEmpty;
  *         <li>the class is {@link Serializable}</li> so that it can be stored by the Wicket viewer as a Wicket model.
  *     </ul>
  * </p>
+ *
+ * @since 2.0 {@index}
  */
 public class SimpleTicket implements Ticket {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerAbstract.java
index 09530d1..4651b88 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerAbstract.java
@@ -45,13 +45,14 @@ import lombok.extern.log4j.Log4j2;
  * <p>
  * If a messaging-parsing {@link Function} is provided through the constructor,
  * then the message can be altered.  Otherwise the exception's {@link Throwable#getMessage() message} is returned as-is.
- * 
+ *
+ * @since 1.x {@index}
  */
 @Log4j2
 public abstract class ExceptionRecognizerAbstract implements ExceptionRecognizer {
-    
+
     @Inject protected TranslationService translationService;
-    
+
     @Getter @Setter private boolean disabled = false;
 
     /**
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerForType.java b/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerForType.java
index 5f1bf0d..3cbad46 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerForType.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerForType.java
@@ -34,15 +34,14 @@ import static org.apache.isis.commons.internal.exceptions._Exceptions.getCausalC
  * <p>
  * If a messaging-parsing {@link Function} is provided through the constructor,
  * then the message can be altered.  Otherwise the exception's {@link Throwable#getMessage() message} is returned as-is.
- * 
- * @since 2.0 {@index}
- * 
+ *
+ * @since 1.x {@index}
  */
 public class ExceptionRecognizerForType extends ExceptionRecognizerAbstract {
 
     protected static final Predicate<Throwable> ofType(
             final Class<? extends Throwable> exceptionType) {
-        
+
         return ex->exceptionType.isAssignableFrom(ex.getClass());
     }
 
@@ -56,19 +55,19 @@ public class ExceptionRecognizerForType extends ExceptionRecognizerAbstract {
      */
     protected static final Predicate<Throwable> excluding(
             final String... messages) {
-        
+
         return ex->{
-            
+
             for (final Throwable throwable : getCausalChain(ex)) {
                 if(containsAnyOfTheseMessages(throwable, messages)) {
-                    return false; 
+                    return false;
                 }
             }
-            
+
             return true;
         };
     }
-    
+
 
     /**
      * A {@link Predicate} that {@link Predicate#apply(Object) applies} only if at least one of the message(s)
@@ -80,15 +79,15 @@ public class ExceptionRecognizerForType extends ExceptionRecognizerAbstract {
      */
     protected static final Predicate<Throwable> including(
             final String... messages) {
-        
+
         return ex->{
-           
+
             for (final Throwable throwable : getCausalChain(ex)) {
                 if(containsAnyOfTheseMessages(throwable, messages)) {
-                    return true; 
+                    return true;
                 }
             }
-            
+
             return false;
         };
     }
@@ -108,7 +107,7 @@ public class ExceptionRecognizerForType extends ExceptionRecognizerAbstract {
     }
 
     public ExceptionRecognizerForType(
-            final Category category, 
+            final Category category,
             final Class<? extends Exception> exceptionType) {
         this(category, exceptionType, null);
     }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerService.java b/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerService.java
index 5734803..36fe0ae 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerService.java
@@ -24,8 +24,7 @@ import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer.Recognitio
 import org.apache.isis.commons.collections.Can;
 
 /**
- * 
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 public interface ExceptionRecognizerService {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/factory/FactoryService.java b/api/applib/src/main/java/org/apache/isis/applib/services/factory/FactoryService.java
index 087273b..e9d2f60 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/factory/FactoryService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/factory/FactoryService.java
@@ -29,9 +29,7 @@ import org.apache.isis.applib.services.repository.RepositoryService;
 import lombok.NonNull;
 
 /**
- * 
- * @since 2.x {@index}
- *
+ * @since 1.x {@index}
  */
 public interface FactoryService {
 
@@ -86,7 +84,7 @@ public interface FactoryService {
      * @since 2.0
      */
     <T> T detachedEntity(@NonNull Class<T> domainClass);
-    
+
     /**
      * Creates a new detached entity instance, with injection points resolved.
      *
@@ -135,7 +133,7 @@ public interface FactoryService {
     default <T> T viewModel(@NonNull Class<T> viewModelClass) {
         return viewModel(viewModelClass, /*mementoStr*/null);
     }
-    
+
     /**
      * Resolves injection points for given ViewModel instance.
      * @param viewModel - most likely just new-ed up, without injection points resolved
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridLoaderService.java b/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridLoaderService.java
index 2bad18d..cf44e72 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridLoaderService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridLoaderService.java
@@ -21,8 +21,7 @@ package org.apache.isis.applib.services.grid;
 import org.apache.isis.applib.layout.grid.Grid;
 
 /**
- * 
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 public interface GridLoaderService {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridService.java b/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridService.java
index a0a490a..8ec3334 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridService.java
@@ -26,8 +26,7 @@ import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.layout.grid.Grid;
 
 /**
- * 
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 public interface GridService {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridSystemService.java b/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridSystemService.java
index 442b207..d5dc6c2 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridSystemService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridSystemService.java
@@ -22,7 +22,8 @@ import org.apache.isis.applib.layout.grid.Grid;
 
 /**
  * Provides an implementation of {@link Grid}.
- * @since 2.0 {@index}
+ *
+ * @since 1.x {@index}
  */
 public interface GridSystemService<G extends Grid> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/health/Health.java b/api/applib/src/main/java/org/apache/isis/applib/services/health/Health.java
index be810bf..f0e9620 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/health/Health.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/health/Health.java
@@ -22,7 +22,6 @@ import lombok.AllArgsConstructor;
 import lombok.Getter;
 
 /**
- * 
  * @since 2.0 {@index}
  */
 @AllArgsConstructor
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/health/HealthCheckService.java b/api/applib/src/main/java/org/apache/isis/applib/services/health/HealthCheckService.java
index faf6b4e..8ae9b89 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/health/HealthCheckService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/health/HealthCheckService.java
@@ -19,13 +19,12 @@
 package org.apache.isis.applib.services.health;
 
 /**
- * 
+ *
  * @since 2.0 {@index}
  */
 public interface HealthCheckService {
 
     Health check();
-
 }
 
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/hint/HintStore.java b/api/applib/src/main/java/org/apache/isis/applib/services/hint/HintStore.java
index f147584..3a7b774 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/hint/HintStore.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/hint/HintStore.java
@@ -21,8 +21,8 @@ package org.apache.isis.applib.services.hint;
 import java.util.Set;
 
 import org.apache.isis.applib.services.bookmark.Bookmark;
+
 /**
- * 
  * @since 1.x {@index}
  */
 public interface HintStore {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/i18n/LocaleProvider.java b/api/applib/src/main/java/org/apache/isis/applib/services/i18n/LocaleProvider.java
index 763e558..3a0e035 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/i18n/LocaleProvider.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/i18n/LocaleProvider.java
@@ -21,8 +21,7 @@ package org.apache.isis.applib.services.i18n;
 import java.util.Locale;
 
 /**
- * 
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 public interface LocaleProvider {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslatableString.java b/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslatableString.java
index 50f4a80..135fb3f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslatableString.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslatableString.java
@@ -28,7 +28,6 @@ import org.apache.isis.applib.annotation.Value;
 import org.apache.isis.commons.internal.collections._Lists;
 
 /**
- * 
  * @since 1.x {@index}
  */
 @Value
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslationService.java b/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslationService.java
index 4934e36..7ab0581 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslationService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslationService.java
@@ -22,7 +22,6 @@ import java.util.Objects;
 import java.util.function.Predicate;
 
 /**
- * 
  * @since 1.x {@index}
  */
 public interface TranslationService {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutService.java b/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutService.java
index 0c20c7f..47de5f6 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutService.java
@@ -23,8 +23,7 @@ import org.apache.isis.applib.layout.grid.Grid;
 import org.apache.isis.applib.services.menu.MenuBarsService;
 
 /**
- * 
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 public interface LayoutService {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java b/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java
index 09aee59..9648974 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java
@@ -38,8 +38,7 @@ import org.apache.isis.applib.value.Clob;
 import org.apache.isis.commons.internal.base._Strings;
 
 /**
- * 
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 @Named("isis.applib.LayoutServiceMenu")
 @DomainService(objectType = "isis.applib.LayoutServiceMenu")
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/linking/DeepLinkService.java b/api/applib/src/main/java/org/apache/isis/applib/services/linking/DeepLinkService.java
index 856cf1a..cfd4645 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/linking/DeepLinkService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/linking/DeepLinkService.java
@@ -27,8 +27,8 @@ import java.net.URI;
  *     The implementation is specific to the viewer(s) configured for Isis.  At the time of writing only one
  *     implementation is available, for the Wicket viewer.
  * </p>
- * 
- * @since 2.0 {@index}
+ *
+ * @since 1.x {@index}
  */
 public interface DeepLinkService {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsLoaderService.java b/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsLoaderService.java
index 5019617..354332f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsLoaderService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsLoaderService.java
@@ -21,8 +21,7 @@ package org.apache.isis.applib.services.menu;
 import org.apache.isis.applib.layout.menubars.bootstrap3.BS3MenuBars;
 
 /**
- * 
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 public interface MenuBarsLoaderService {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsService.java b/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsService.java
index 5a02544..8aaa9ad 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsService.java
@@ -21,8 +21,7 @@ package org.apache.isis.applib.services.menu;
 import org.apache.isis.applib.layout.menubars.MenuBars;
 
 /**
- * 
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 public interface MenuBarsService {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/message/MessageService.java b/api/applib/src/main/java/org/apache/isis/applib/services/message/MessageService.java
index fefcaf6..0703bd6 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/message/MessageService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/message/MessageService.java
@@ -22,8 +22,7 @@ package org.apache.isis.applib.services.message;
 import org.apache.isis.applib.services.i18n.TranslatableString;
 
 /**
- * 
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 public interface MessageService {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java
index 0812c00..71b2842 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java
@@ -36,7 +36,8 @@ import lombok.val;
  * <p>
  * This API is currently extremely limited, but the intention is to extend it gradually as use cases emerge.
  * </p>
- * @since 2.0 {@index}
+ *
+ * @since 1.x {@index}
  */
 public interface MetaModelService {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/metrics/MetricsService.java b/api/applib/src/main/java/org/apache/isis/applib/services/metrics/MetricsService.java
index effcb2f..9874684 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/metrics/MetricsService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/metrics/MetricsService.java
@@ -22,8 +22,7 @@ import org.apache.isis.applib.services.iactn.InteractionContext;
 import org.apache.isis.schema.ixn.v2.MemberExecutionDto;
 
 /**
- * 
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 public interface MetricsService {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultCacheControl.java b/api/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultCacheControl.java
index 03033be..cdeac32 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultCacheControl.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultCacheControl.java
@@ -19,8 +19,7 @@
 package org.apache.isis.applib.services.queryresultscache;
 
 /**
- * 
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 public interface QueryResultCacheControl {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCache.java b/api/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCache.java
index b1d9689..30cd0e0 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCache.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCache.java
@@ -38,8 +38,8 @@ import lombok.Getter;
  * This implementation has no UI and there is only one implementation (this class) in applib, it is annotated with
  * {@link org.apache.isis.applib.annotation.DomainService}.  This means that it is automatically registered and
  * available for use; no further configuration is required.
- * 
- * @since 2.0 {@index}
+ *
+ * @since 1.x {@index}
  */
 public interface QueryResultsCache extends DisposableBean {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java b/api/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java
index 7af94a3..2bb4713 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java
@@ -37,8 +37,7 @@ import org.apache.isis.commons.internal.reflection._Reflect;
 import lombok.val;
 
 /**
- * 
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 public interface ServiceRegistry {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/repository/EntityState.java b/api/applib/src/main/java/org/apache/isis/applib/services/repository/EntityState.java
index 994f8b6..864f69a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/repository/EntityState.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/repository/EntityState.java
@@ -19,14 +19,12 @@
 package org.apache.isis.applib.services.repository;
 
 /**
- * TODO lower case enums not up to standard, is this an issue?
- * 
  * @apiNote use the provided predicates rather then directly referencing the enum names
- *  
- * 
+ *
  * @since 2.0 {@index}
  */
 public enum EntityState {
+
     NOT_PERSISTABLE,
     PERSISTABLE_ATTACHED,
     PERSISTABLE_DETACHED,
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/scratchpad/Scratchpad.java b/api/applib/src/main/java/org/apache/isis/applib/services/scratchpad/Scratchpad.java
index 1a6c223..66e2db8 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/scratchpad/Scratchpad.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/scratchpad/Scratchpad.java
@@ -29,8 +29,8 @@ import org.springframework.beans.factory.DisposableBean;
  * This implementation has only one implementation (this class) in applib, so it is annotated with
  * {@link org.apache.isis.applib.annotation.DomainService}.  This means that it is automatically registered and
  * available for use; no further configuration is required.
- * 
- * @since 2.0 {@index}
+ *
+ * @since 1.x {@index}
  */
 public interface Scratchpad
         extends DisposableBean {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingService.java b/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingService.java
index 4635e46..96a647b 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingService.java
@@ -21,10 +21,11 @@ package org.apache.isis.applib.services.session;
 import java.util.Date;
 
 /**
- * Similar to the {@link org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber}, 
+ * Similar to the {@link org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber},
  * this defines an API to track
  * the status of the current sessions (&quot;users logged on&quot;) on the system.
- * @since 2.0 {@index}
+ *
+ * @since 1.x {@index}
  */
 public interface SessionLoggingService {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingServiceLogging.java b/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingServiceLogging.java
index c2991d3..f870761 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingServiceLogging.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingServiceLogging.java
@@ -32,8 +32,7 @@ import org.apache.isis.applib.annotation.OrderPrecedence;
 import lombok.extern.log4j.Log4j2;
 
 /**
- * 
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 @Service
 @Named("isis.applib.SessionLoggingServiceLogging")
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderForCollectionTypeAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderForCollectionTypeAbstract.java
index b1f3205..7e675b2 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderForCollectionTypeAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderForCollectionTypeAbstract.java
@@ -22,6 +22,9 @@ import java.util.List;
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ * @since 1.x {@index}
+ */
 @RequiredArgsConstructor
 public abstract class TableColumnOrderForCollectionTypeAbstract<T>
         implements TableColumnOrderService {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderService.java b/api/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderService.java
index 97747f5..a79af3c 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderService.java
@@ -21,8 +21,7 @@ package org.apache.isis.applib.services.tablecol;
 import java.util.List;
 
 /**
- * 
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 public interface TableColumnOrderService {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingService.java b/api/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingService.java
index e51fa0c..599f2aa 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingService.java
@@ -24,8 +24,7 @@ import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.memento._Mementos.EncoderDecoder;
 
 /**
- * 
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 public interface UrlEncodingService extends EncoderDecoder {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceUsingBaseEncodingAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceUsingBaseEncodingAbstract.java
index 8bc0dd2..c3a32d4 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceUsingBaseEncodingAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceUsingBaseEncodingAbstract.java
@@ -24,10 +24,7 @@ import org.apache.isis.commons.internal.base._Bytes;
 import org.apache.isis.commons.internal.base._Strings;
 
 /**
- * to use, subclass and annotated with:
- * <pre>
- * &#064;DomainService(nature=DOMAIN, menuOrder="100")
- * </pre>
+ * @since 1.x {@index}
  */
 public abstract class UrlEncodingServiceUsingBaseEncodingAbstract implements UrlEncodingService {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/user/RoleMemento.java b/api/applib/src/main/java/org/apache/isis/applib/services/user/RoleMemento.java
index 6cd939f..0ef9a31 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/user/RoleMemento.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/user/RoleMemento.java
@@ -27,15 +27,16 @@ import lombok.Getter;
 import lombok.Value;
 
 /**
- * Immutable serializable value held by {@link UserMemento}.  
- * @since 2.0 {@index}
+ * Immutable serializable value held by {@link UserMemento}.
+ *
+ * @since 1.x revised for 2.0 {@index}
  */
 @DomainObject(objectType = "isis.applib.RoleMemento")
 @Value
 public final class RoleMemento implements Serializable {
 
     private static final long serialVersionUID = -3876856609238378274L;
-    
+
     /**
      * Creates a new role with the specified name. Description is left blank.
      */
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java b/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
index 5113598..d716d7a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
@@ -35,24 +35,25 @@ import lombok.NonNull;
 
 /**
  * Immutable serializable value holding details about a user and its roles.
- * @since 1.x revised in 2.0 {@index}
+ *
+ * @since 1.x revised for 2.0 {@index}
  */
 @DomainObject(objectType = "isis.applib.UserMemento")
 public final class UserMemento implements Serializable {
-    
+
     private static final long serialVersionUID = 7190090455587885367L;
-    private static final UserMemento SYSTEM_USER = UserMemento.ofName("__system"); 
+    private static final UserMemento SYSTEM_USER = UserMemento.ofName("__system");
 //    private static final UserMemento NO_USER = UserMemento.ofName("__nobody");
-    
+
     // -- FACTORIES
-    
+
     /**
      * The framework's internal user with unrestricted privileges.
      */
     public static UserMemento system() {
         return SYSTEM_USER;
     }
-    
+
 //    /**
 //     * The framework's internal user with no privileges at all, returned by the
 //     * {@link UserService} if no user is logged in.
@@ -60,7 +61,7 @@ public final class UserMemento implements Serializable {
 //    public static UserMemento nobody() {
 //        return NO_USER;
 //    }
-    
+
     /**
      * Creates a new user with the specified name and no roles.
      */
@@ -68,34 +69,34 @@ public final class UserMemento implements Serializable {
             final @NonNull String name) {
         return new UserMemento(name, Stream.empty());
     }
-    
+
     /**
      * Creates a new user with the specified name and assigned roles.
      */
     public static UserMemento ofNameAndRoles(
-            final @NonNull String name, 
+            final @NonNull String name,
             final RoleMemento... roles) {
         return new UserMemento(name, Stream.of(roles));
     }
-    
+
     /**
      * Creates a new user with the specified name and assigned role names.
      */
     public static UserMemento ofNameAndRoleNames(
-            final @NonNull String name, 
+            final @NonNull String name,
             final String... roleNames) {
         return new UserMemento(name, Stream.of(roleNames).map(RoleMemento::new));
     }
-    
+
     /**
      * Creates a new user with the specified name and assigned role names.
      */
     public static UserMemento ofNameAndRoleNames(
-            final @NonNull String name, 
+            final @NonNull String name,
             final @NonNull Stream<String> roleNames) {
         return new UserMemento(name, roleNames.map(RoleMemento::new));
     }
-    
+
     // -- CONSTRUCTOR
 
     /**
@@ -106,7 +107,7 @@ public final class UserMemento implements Serializable {
             throw new IllegalArgumentException("Name not specified");
         }
         this.name = name;
-        this.roles = roles.collect(_Lists.toUnmodifiable()); 
+        this.roles = roles.collect(_Lists.toUnmodifiable());
     }
 
     public String title() {
@@ -139,18 +140,18 @@ public final class UserMemento implements Serializable {
     public boolean isCurrentUser(final @Nullable String userName) {
         return name.equals(userName);
     }
-    
+
     public Stream<String> streamRoleNames() {
         return roles.stream()
                 .map(RoleMemento::getName);
     }
-    
+
     public boolean hasRoleName(final @Nullable String roleName) {
         return streamRoleNames().anyMatch(myRoleName->myRoleName.equals(roleName));
     }
 
     // -- TO STRING, EQUALS, HASHCODE
-    
+
     @Override
     public String toString() {
         final StringBuilder buf = new StringBuilder();
@@ -159,7 +160,7 @@ public final class UserMemento implements Serializable {
         }
         return "User [name=" + getName() + ",roles=" + buf.toString() + "]";
     }
-    
+
     @Override
     public boolean equals(Object obj) {
         if (obj == this) {
@@ -183,18 +184,18 @@ public final class UserMemento implements Serializable {
         }
         return true;
     }
-    
+
     @Override
     public int hashCode() {
         return getName().hashCode(); // its good enough to hash on just the user's name
     }
-    
+
 
 }
 
 // -- REMOVED
 
-//XXX implemented as regex match, java-doc is not specific about what these methods actually do; so if in doubt, rather remove     
+//XXX implemented as regex match, java-doc is not specific about what these methods actually do; so if in doubt, rather remove
 ///**
 //* Determines if the user fulfills the specified role.
 //*
@@ -217,7 +218,7 @@ public final class UserMemento implements Serializable {
 //  return false;
 //}
 
-//XXX not used    
+//XXX not used
 //@UtilityClass
 //public static class NameType {
 //  @UtilityClass
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/userreg/EmailNotificationService.java b/api/applib/src/main/java/org/apache/isis/applib/services/userreg/EmailNotificationService.java
index f5ce156..3675fcf 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/userreg/EmailNotificationService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/userreg/EmailNotificationService.java
@@ -29,6 +29,7 @@ import org.apache.isis.applib.services.userreg.events.PasswordResetEvent;
  * The framework provides a default implementation which in turn uses the
  * {@link org.apache.isis.applib.services.email.EmailService}, namely <code>EmailServiceDefault</code>.
  * </p>
+ *
  * @since 1.x {@index}
  */
 public interface EmailNotificationService
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/userreg/UserDetails.java b/api/applib/src/main/java/org/apache/isis/applib/services/userreg/UserDetails.java
index e2607d5..aea184f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/userreg/UserDetails.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/userreg/UserDetails.java
@@ -25,7 +25,8 @@ import lombok.Setter;
 
 /**
  * A model object for the signup page
- * @since 2.0 {@index}
+ *
+ * @since 1.x {@index}
  */
 public class UserDetails
                 implements Serializable {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/userreg/events/EmailEventAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/services/userreg/events/EmailEventAbstract.java
index ff7cad7..283b8b8 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/userreg/events/EmailEventAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/userreg/events/EmailEventAbstract.java
@@ -20,6 +20,8 @@ package org.apache.isis.applib.services.userreg.events;
 
 /**
  * An event sent to all services interested in user registration
+ *
+ * @since 1.x {@index}
  */
 public abstract class EmailEventAbstract {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/userreg/events/PasswordResetEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/userreg/events/PasswordResetEvent.java
index b727f8f..b84ffaa 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/userreg/events/PasswordResetEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/userreg/events/PasswordResetEvent.java
@@ -20,6 +20,7 @@ package org.apache.isis.applib.services.userreg.events;
 
 /**
  * An event send to all services interested in user password reset
+ *
  * @since 1.x {@index}
  */
 public class PasswordResetEvent extends EmailEventAbstract {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/InvalidException.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/InvalidException.java
index b0453d0..f8b6306 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/InvalidException.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/InvalidException.java
@@ -27,8 +27,6 @@ import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
  * Superclass of exceptions which indicate an attempt to interact with an object
  * or member in a way that is invalid.
  *
- * <p>
- *
  * @since 1.x {@index}
  */
 public class InvalidException extends InteractionException {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExceptionHandler.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExceptionHandler.java
index 864a31d..b65dfcb 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExceptionHandler.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExceptionHandler.java
@@ -19,7 +19,6 @@
 package org.apache.isis.applib.services.wrapper.control;
 
 /**
- * 
  * @since 2.0 {@index}
  */
 @FunctionalInterface
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExceptionHandlerAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExceptionHandlerAbstract.java
index b66a914..ae808f3 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExceptionHandlerAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExceptionHandlerAbstract.java
@@ -22,6 +22,9 @@ import org.apache.logging.log4j.Logger;
 
 import lombok.extern.log4j.Log4j2;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Log4j2
 public abstract class ExceptionHandlerAbstract implements ExceptionHandler {
     public static Logger getLog() {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/AccessEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/AccessEvent.java
index 726e1b7..20a79bc 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/AccessEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/AccessEvent.java
@@ -34,6 +34,7 @@ import org.apache.isis.applib.Identifier;
  * @see VisibilityEvent
  * @see ValidityEvent
  *
+ * @since 1.x {@index}
  */
 public abstract class AccessEvent extends InteractionEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/listeners/InteractionAdapter.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/listeners/InteractionAdapter.java
index b7e2a89..4b4e0cc 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/listeners/InteractionAdapter.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/listeners/InteractionAdapter.java
@@ -39,7 +39,8 @@ import org.apache.isis.applib.services.wrapper.events.PropertyVisibilityEvent;
 /**
  * Provides no-op implementations of each of the methods within
  * {@link InteractionListener}, to simplify the creation of new listeners.
- * @since 2.0 {@index}
+ *
+ * @since 1.x {@index}
  */
 public class InteractionAdapter implements InteractionListener {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/listeners/InteractionListener.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/listeners/InteractionListener.java
index 1a8b55e..3c6b235 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/listeners/InteractionListener.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/listeners/InteractionListener.java
@@ -37,8 +37,7 @@ import org.apache.isis.applib.services.wrapper.events.PropertyUsabilityEvent;
 import org.apache.isis.applib.services.wrapper.events.PropertyVisibilityEvent;
 
 /**
- * 
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 public interface InteractionListener {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionalProcessor.java b/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionalProcessor.java
index b18e7f4..174cc2e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionalProcessor.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionalProcessor.java
@@ -29,33 +29,36 @@ import org.apache.isis.commons.functional.ThrowingRunnable;
 
 import lombok.val;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface TransactionalProcessor {
 
     // -- INTERFACE
-    
+
     /**
-     * Runs given {@code callable} with a transactional boundary, where the detailed transactional behavior 
+     * Runs given {@code callable} with a transactional boundary, where the detailed transactional behavior
      * is governed by given {@link TransactionDefinition} {@code def}.
-     * @return {@link Result} of calling given {@code callable} 
+     * @return {@link Result} of calling given {@code callable}
      */
     <T> Result<T> callTransactional(TransactionDefinition def, Callable<T> callable);
 
     /**
-     * Runs given {@code runnable} with a transactional boundary, where the detailed transactional behavior 
+     * Runs given {@code runnable} with a transactional boundary, where the detailed transactional behavior
      * is governed by given {@link TransactionDefinition} {@code def}.
      */
     default Result<Void> runTransactional(TransactionDefinition def, ThrowingRunnable runnable) {
         return callTransactional(def, ThrowingRunnable.toCallable(runnable));
     }
-    
+
     // -- SHORTCUTS - WITH PROPAGATION CONTROL
 
     /**
-     * Runs given {@code callable} with a transactional boundary, where the detailed transactional behavior 
+     * Runs given {@code callable} with a transactional boundary, where the detailed transactional behavior
      * is governed by given {@link Propagation} {@code propagation}.
      * <p>
      * More fine grained control is given via {@link #callTransactional(TransactionDefinition, Callable)}
-     * @return {@link Result} of calling given {@code callable} 
+     * @return {@link Result} of calling given {@code callable}
      */
     default <T> Result<T> callTransactional(Propagation propagation, Callable<T> callable) {
         val def = new DefaultTransactionDefinition();
@@ -64,7 +67,7 @@ public interface TransactionalProcessor {
     }
 
     /**
-     * Runs given {@code runnable} with a transactional boundary, where the detailed transactional behavior 
+     * Runs given {@code runnable} with a transactional boundary, where the detailed transactional behavior
      * is governed by given {@link Propagation} {@code propagation}.
      * <p>
      * More fine grained control is given via {@link #runTransactional(TransactionDefinition, Callable)}
@@ -72,25 +75,25 @@ public interface TransactionalProcessor {
     default Result<Void> runTransactional(Propagation propagation, ThrowingRunnable runnable) {
         return callTransactional(propagation, ThrowingRunnable.toCallable(runnable));
     }
-    
-    
+
+
     // -- SHORTCUTS - MOST FREQUENT USAGE
-    
+
     /**
      * Runs given {@code callable} within an existing transactional boundary, or in the absence of such a
      * boundary, creates a new one.
      * <p>
-     * In other words, support a current transaction, create a new one if none exists. 
+     * In other words, support a current transaction, create a new one if none exists.
      * @param <T>
      * @param callable
-     * @return {@link Result} of calling given {@code callable} 
+     * @return {@link Result} of calling given {@code callable}
      */
     default <T> Result<T> callWithinCurrentTransactionElseCreateNew(Callable<T> callable) {
         val def = new DefaultTransactionDefinition();
         def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
         return callTransactional(def, callable);
     }
-    
+
     /**
      * Runs given {@code runnable} within an existing transactional boundary, or in the absence of such a
      * boundary creates a new one.
diff --git a/api/applib/src/main/java/org/apache/isis/applib/snapshot/SnapshottableWithInclusions.java b/api/applib/src/main/java/org/apache/isis/applib/snapshot/SnapshottableWithInclusions.java
index 3245e77..a9dd1df 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/snapshot/SnapshottableWithInclusions.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/snapshot/SnapshottableWithInclusions.java
@@ -27,7 +27,8 @@ import org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotService;
  * Optional interface for domain objects with which an
  * snapshot is to be created using the {@link XmlSnapshotService}, indicating
  * paths to be {@link XmlSnapshotService.Snapshot#} automatically include additional paths within the snapshot.
- * @since ? {@index}
+ *
+ * @since 1.x {@index}
  */
 public interface SnapshottableWithInclusions {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/spec/AbstractSpecification.java b/api/applib/src/main/java/org/apache/isis/applib/spec/AbstractSpecification.java
index 0c2ec5a..0f17000a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/spec/AbstractSpecification.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/spec/AbstractSpecification.java
@@ -36,7 +36,8 @@ import java.lang.reflect.Method;
  * <p>
  * Implementation note: inspired by (borrowed code from) Hamcrest's
  * <tt>TypeSafeMatcher</tt>.
- * @since ? {@index}
+ *
+ * @since 1.x {@index}
  */
 public abstract class AbstractSpecification<T> implements Specification {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/spec/AbstractSpecification2.java b/api/applib/src/main/java/org/apache/isis/applib/spec/AbstractSpecification2.java
index 4265846..3a8fe6f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/spec/AbstractSpecification2.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/spec/AbstractSpecification2.java
@@ -39,7 +39,8 @@ import org.apache.isis.commons.internal.base._Casts;
  * <p>
  * Implementation note: inspired by (borrowed code from) Hamcrest's
  * <tt>TypeSafeMatcher</tt>.
- * @since ? {@index}
+ *
+ * @since 1.x {@index}
  */
 public abstract class AbstractSpecification2<T> implements Specification2 {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/spec/Specification.java b/api/applib/src/main/java/org/apache/isis/applib/spec/Specification.java
index 4197702..5ff03f9 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/spec/Specification.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/spec/Specification.java
@@ -22,7 +22,8 @@ package org.apache.isis.applib.spec;
 /**
  * An implementation of the <i>Specification</i> pattern, as described in Eric
  * Evans' <i>Domain Driven Design</i>, p224.
- * @since ? {@index}
+ *
+ * @since 1.x {@index}
  */
 public interface Specification {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/spec/Specification2.java b/api/applib/src/main/java/org/apache/isis/applib/spec/Specification2.java
index 336ce35..3974114 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/spec/Specification2.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/spec/Specification2.java
@@ -28,7 +28,8 @@ import org.apache.isis.applib.services.i18n.TranslatableString;
  *     If implemented, then the {@link #satisfies(Object)} inherited from {@link Specification} can just return <tt>null</tt>;
  *     it will never be called by the framework.
  * </p>
- * @since ? {@index}
+ *
+ * @since 1.x {@index}
  */
 public interface Specification2 extends Specification {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/spec/SpecificationAnd.java b/api/applib/src/main/java/org/apache/isis/applib/spec/SpecificationAnd.java
index 427b581..f5ef871 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/spec/SpecificationAnd.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/spec/SpecificationAnd.java
@@ -42,7 +42,7 @@ import org.apache.isis.applib.util.ReasonBuffer;
  *
  * @see SpecificationOr
  * @see SpecificationNot
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public abstract class SpecificationAnd implements Specification {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/spec/SpecificationNot.java b/api/applib/src/main/java/org/apache/isis/applib/spec/SpecificationNot.java
index f57b63d..f84035a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/spec/SpecificationNot.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/spec/SpecificationNot.java
@@ -43,7 +43,7 @@ package org.apache.isis.applib.spec;
  *
  * @see SpecificationAnd
  * @see SpecificationOr
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public abstract class SpecificationNot implements Specification {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/spec/SpecificationOr.java b/api/applib/src/main/java/org/apache/isis/applib/spec/SpecificationOr.java
index 6d6a9f5..fe5fe80 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/spec/SpecificationOr.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/spec/SpecificationOr.java
@@ -42,7 +42,7 @@ import org.apache.isis.applib.util.ReasonBuffer;
  *
  * @see SpecificationAnd
  * @see SpecificationNot
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public abstract class SpecificationOr implements Specification {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/types/DescriptionType.java b/api/applib/src/main/java/org/apache/isis/applib/types/DescriptionType.java
index 048147b..4fd53f1 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/types/DescriptionType.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/types/DescriptionType.java
@@ -20,6 +20,9 @@ package org.apache.isis.applib.types;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public class DescriptionType {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/types/MemberIdentifierType.java b/api/applib/src/main/java/org/apache/isis/applib/types/MemberIdentifierType.java
index dbbc2d5..4b71f78 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/types/MemberIdentifierType.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/types/MemberIdentifierType.java
@@ -28,6 +28,8 @@ import lombok.experimental.UtilityClass;
 
 /**
  * As per {@link Command#getMemberIdentifier()} and {@link org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber#audit(UUID, int, String, Bookmark, String, String, String, String, String, Timestamp)}.
+ *
+ * @since 2.0 {@index}
  */
 public class MemberIdentifierType {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/types/TargetActionType.java b/api/applib/src/main/java/org/apache/isis/applib/types/TargetActionType.java
index 6349c5b..4ec7905 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/types/TargetActionType.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/types/TargetActionType.java
@@ -28,6 +28,8 @@ import lombok.experimental.UtilityClass;
 
 /**
  * A user-friendly name of an action, as per {@link Command#getTargetAction()}, {@link org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber#audit(UUID, int, String, Bookmark, String, String, String, String, String, Timestamp)}.
+ *
+ * @since 2.0 {@index}
  */
 @UtilityClass
 public class TargetActionType {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/types/TargetClassType.java b/api/applib/src/main/java/org/apache/isis/applib/types/TargetClassType.java
index e453c1d..9ba83b1 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/types/TargetClassType.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/types/TargetClassType.java
@@ -28,6 +28,8 @@ import lombok.experimental.UtilityClass;
 
 /**
  * A user-friendly name of a class, as per {@link Command#getTargetClass()}, {@link org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber#audit(UUID, int, String, Bookmark, String, String, String, String, String, Timestamp)}.
+ *
+ * @since 2.0 {@index}
  */
 @UtilityClass
 public class TargetClassType {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/util/Enums.java b/api/applib/src/main/java/org/apache/isis/applib/util/Enums.java
index 41f385f..67f3342 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/util/Enums.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/Enums.java
@@ -26,7 +26,7 @@ import org.apache.isis.commons.internal.base._Strings;
 import lombok.experimental.UtilityClass;
 
 /**
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 @UtilityClass
 public final class Enums {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/util/ObjectContracts.java b/api/applib/src/main/java/org/apache/isis/applib/util/ObjectContracts.java
index eb68dc5..622690e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/util/ObjectContracts.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/ObjectContracts.java
@@ -67,8 +67,7 @@ import lombok.extern.log4j.Log4j2;
  * }
  * </pre>
  *
- * @since 2.0 (re-invented)
- *
+ * @since 1.x revised for 2.0 {@index}
  */
 @Log4j2
 public final class ObjectContracts {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/util/ReasonBuffer.java b/api/applib/src/main/java/org/apache/isis/applib/util/ReasonBuffer.java
index 684288b..d747fc0 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/util/ReasonBuffer.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/ReasonBuffer.java
@@ -30,6 +30,8 @@ package org.apache.isis.applib.util;
  *
  * <p>
  * An alternative is to use the {@link Reasons} class.
+ *
+ * @since 1.x {@index}
  */
 public class ReasonBuffer {
     StringBuffer reasonBuffer = new StringBuffer();
diff --git a/api/applib/src/main/java/org/apache/isis/applib/util/ReasonBuffer2.java b/api/applib/src/main/java/org/apache/isis/applib/util/ReasonBuffer2.java
index c10f0ba..9d4fb2d 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/util/ReasonBuffer2.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/ReasonBuffer2.java
@@ -27,6 +27,8 @@ import org.apache.isis.commons.internal.collections._Lists;
 
 /**
  * Extension to applib's {@link ReasonBuffer}.
+ *
+ * @since 2.0 {@index}
  */
 public class ReasonBuffer2 {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/util/Reasons.java b/api/applib/src/main/java/org/apache/isis/applib/util/Reasons.java
index 750e5c2..731e6d8 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/util/Reasons.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/Reasons.java
@@ -21,6 +21,8 @@ package org.apache.isis.applib.util;
 
 /**
  * An alternative to {@link ReasonBuffer}.
+ *
+ * @since 1.x {@index}
  */
 public class Reasons {
     private Reasons() {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/util/TitleBuffer.java b/api/applib/src/main/java/org/apache/isis/applib/util/TitleBuffer.java
index 1219e34..c305ca2 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/util/TitleBuffer.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/TitleBuffer.java
@@ -26,11 +26,21 @@ import org.apache.isis.commons.internal._Constants;
 
 /**
  * Title buffer is a utility class to help produce titles for objects without
- * having to add lots of guard code. It provides two basic method: one to
+ * having to add lots of guard code.
+ *
+ * <p>
+ * It provides two basic method: one to
  * concatenate a title to the buffer; another to append a title with a joiner
- * string, taking care adding in necessary spaces. The benefits of using this
+ * string, taking care adding in necessary spaces.
+ * </p>
+ *
+ * <p>
+ * The benefits of using this
  * class is that null references are safely ignored (rather than appearing as
  * 'null'), and joiners (a space by default) are only added when needed.
+ * </p>
+ *
+ * @since 1.x {@index}
  */
 public class TitleBuffer {
     private static final String SPACE = " ";
diff --git a/api/applib/src/main/java/org/apache/isis/applib/util/TitleBufferException.java b/api/applib/src/main/java/org/apache/isis/applib/util/TitleBufferException.java
index 64ec136..700edb7 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/util/TitleBufferException.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/TitleBufferException.java
@@ -19,6 +19,9 @@
 
 package org.apache.isis.applib.util;
 
+/**
+ * @since 1.x {@index}
+ */
 public class TitleBufferException extends RuntimeException {
     private static final long serialVersionUID = 1L;
     private Throwable cause;
diff --git a/api/applib/src/main/java/org/apache/isis/applib/util/schema/ChangesDtoUtils.java b/api/applib/src/main/java/org/apache/isis/applib/util/schema/ChangesDtoUtils.java
index 5433730..4128870 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/util/schema/ChangesDtoUtils.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/schema/ChangesDtoUtils.java
@@ -36,7 +36,7 @@ import org.apache.isis.commons.internal.resources._Resources;
 import org.apache.isis.schema.chg.v2.ChangesDto;
 
 /**
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public final class ChangesDtoUtils {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/util/schema/CommandDtoUtils.java b/api/applib/src/main/java/org/apache/isis/applib/util/schema/CommandDtoUtils.java
index 61159dd..b36eced 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/util/schema/CommandDtoUtils.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/schema/CommandDtoUtils.java
@@ -42,7 +42,7 @@ import org.apache.isis.schema.common.v2.OidsDto;
 import org.apache.isis.schema.common.v2.PeriodDto;
 
 /**
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public final class CommandDtoUtils {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/util/schema/CommonDtoUtils.java b/api/applib/src/main/java/org/apache/isis/applib/util/schema/CommonDtoUtils.java
index b43a7d1..fb3589c 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/util/schema/CommonDtoUtils.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/schema/CommonDtoUtils.java
@@ -67,7 +67,7 @@ import lombok.NonNull;
 import lombok.val;
 
 /**
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 public final class CommonDtoUtils {
 
@@ -106,13 +106,13 @@ public final class CommonDtoUtils {
                     entry(OffsetDateTime.class, ValueType.OFFSET_DATE_TIME),
                     entry(OffsetTime.class, ValueType.OFFSET_TIME),
                     entry(ZonedDateTime.class, ValueType.ZONED_DATE_TIME),
-                    
+
                     // joda.time
                     entry(org.joda.time.DateTime.class, ValueType.JODA_DATE_TIME),
                     entry(org.joda.time.LocalDateTime.class, ValueType.JODA_LOCAL_DATE_TIME),
                     entry(org.joda.time.LocalDate.class, ValueType.JODA_LOCAL_DATE),
                     entry(org.joda.time.LocalTime.class, ValueType.JODA_LOCAL_TIME),
-                    
+
                     entry(java.sql.Timestamp.class, ValueType.JAVA_SQL_TIMESTAMP),
                     entry(Blob.class, ValueType.BLOB),
                     entry(Clob.class, ValueType.CLOB)
@@ -157,7 +157,7 @@ public final class CommonDtoUtils {
             final ValueType valueType,
             final Object value,
             final BookmarkService bookmarkService) {
-        
+
         valueWithTypeDto.setType(valueType);
 
         setValueOn((ValueDto)valueWithTypeDto, valueType, value, bookmarkService);
@@ -165,15 +165,15 @@ public final class CommonDtoUtils {
 
         return valueWithTypeDto;
     }
-    
+
     public static <T extends ValueWithTypeDto> T setValueOnNonScalar(
             final T valueWithTypeDto,
             final ValueType elementValueType,
             final Object value,
             final BookmarkService bookmarkService) {
-        
+
         valueWithTypeDto.setType(ValueType.COLLECTION);
-        
+
         val collectionDto = asCollectionDto(value, elementValueType, bookmarkService);
         valueWithTypeDto.setCollection(collectionDto);
         valueWithTypeDto.setNull(value == null);
@@ -317,8 +317,8 @@ public final class CommonDtoUtils {
         case REFERENCE: {
             final Bookmark bookmark = pojo instanceof Bookmark
                     ? (Bookmark) pojo
-                    : bookmarkService!=null 
-                            ? bookmarkService.bookmarkFor(pojo) 
+                    : bookmarkService!=null
+                            ? bookmarkService.bookmarkFor(pojo)
                             : null;
 
             if (bookmark != null) {
@@ -364,32 +364,32 @@ public final class CommonDtoUtils {
 
         val collectionDto = new CollectionDto();
         collectionDto.setType(commonElementValueType);
-        
+
         val needsCommonElementValueTypeAutodetect = commonElementValueType==ValueType.VOID;
-        
+
         val commonElementValueTypeRef = _Refs.<ValueType>objectRef(null);
-        
+
         _NullSafe.streamAutodetect(iterableOrArray)
         .forEach(element->{
             val valueDto = new ValueDto();
             if(element==null) {
                 setValueOn(valueDto, ValueType.VOID, element, bookmarkService);
             } else {
-                val elementValueType = asValueType(element.getClass()); 
+                val elementValueType = asValueType(element.getClass());
                 setValueOn(valueDto, elementValueType, element, bookmarkService);
-                
+
                 if(needsCommonElementValueTypeAutodetect) {
                     commonElementValueTypeRef.update(acc->reduce(acc, elementValueType));
                 }
-                
+
             }
             collectionDto.getValue().add(valueDto);
         });
-        
+
         if(needsCommonElementValueTypeAutodetect) {
             collectionDto.setType(commonElementValueTypeRef.getValueElseDefault(ValueType.VOID));
         }
-        
+
         return collectionDto;
     }
 
@@ -397,12 +397,12 @@ public final class CommonDtoUtils {
 
     private static ValueType reduce(ValueType acc, ValueType next) {
         if(acc==null) {
-            return next;    
+            return next;
         }
         if(acc==next) {
-            return acc;    
+            return acc;
         }
-        throw _Exceptions.unsupportedOperation("mixing types within a collection is not supported yet");    
+        throw _Exceptions.unsupportedOperation("mixing types within a collection is not supported yet");
     }
 
     public static <T> T getValue(
@@ -439,7 +439,7 @@ public final class CommonDtoUtils {
             return valueDto.getBigDecimal();
         case BIG_INTEGER:
             return valueDto.getBigInteger();
-         // JAVA TIME    
+         // JAVA TIME
         case LOCAL_DATE:
             return JavaTimeXMLGregorianCalendarMarshalling.toLocalDate(valueDto.getLocalDate());
         case LOCAL_TIME:
@@ -476,17 +476,17 @@ public final class CommonDtoUtils {
                 return Collections.emptyList();
             }
             val list = new ArrayList<Object>();
-            
+
             val elementValueType = collectionDto.getType();
-            
+
             for(val elementValueDto : collectionDto.getValue()) {
-                
+
                 if(elementValueDto instanceof ValueWithTypeDto) {
                     list.add(getValueAsObject(elementValueDto, ((ValueWithTypeDto)elementValueDto).getType()));
                 } else {
-                    list.add(getValueAsObject(elementValueDto, elementValueType));    
+                    list.add(getValueAsObject(elementValueDto, elementValueType));
                 }
-                
+
             }
             return list;
         case BLOB:
@@ -574,7 +574,7 @@ public final class CommonDtoUtils {
 
         return paramDto;
     }
-    
+
     public static ParamDto newParamDtoNonScalar(
             final String parameterName,
             final Class<?> parameterElementType,
diff --git a/api/applib/src/main/java/org/apache/isis/applib/util/schema/InteractionDtoUtils.java b/api/applib/src/main/java/org/apache/isis/applib/util/schema/InteractionDtoUtils.java
index 3aafd63..840267a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/util/schema/InteractionDtoUtils.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/schema/InteractionDtoUtils.java
@@ -53,6 +53,9 @@ import org.apache.isis.schema.ixn.v2.InteractionDto;
 import org.apache.isis.schema.ixn.v2.MemberExecutionDto;
 import org.apache.isis.schema.ixn.v2.PropertyEditDto;
 
+/**
+ * @since 1.x {@index}
+ */
 public final class InteractionDtoUtils {
 
 
@@ -356,9 +359,9 @@ public final class InteractionDtoUtils {
     public static void addReturn(
             final ActionInvocationDto invocationDto,
             final Class<?> returnType,
-            final Object result, 
+            final Object result,
             final BookmarkService bookmarkService) {
-        
+
         final ValueWithTypeDto returned = CommonDtoUtils
                 .newValueWithTypeDto(returnType, result, bookmarkService);
         invocationDto.setReturned(returned);
diff --git a/api/applib/src/main/java/org/apache/isis/applib/util/schema/MemberExecutionDtoUtils.java b/api/applib/src/main/java/org/apache/isis/applib/util/schema/MemberExecutionDtoUtils.java
index d407e09..1ee16ee 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/util/schema/MemberExecutionDtoUtils.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/util/schema/MemberExecutionDtoUtils.java
@@ -32,6 +32,9 @@ import org.apache.isis.schema.ixn.v2.ObjectCountsDto;
 
 import lombok.NonNull;
 
+/**
+ * @since 1.x {@index}
+ */
 public final class MemberExecutionDtoUtils {
 
     public static <T extends MemberExecutionDto> T clone(final T dto) {
@@ -82,20 +85,20 @@ public final class MemberExecutionDtoUtils {
         }
         return differenceDto;
     }
-    
+
     public static <T extends MemberExecutionDto> String toXml(final @NonNull T dto) {
         return _Xml.writeXml(dto, writeOptions())
                 .orElseFail();
     }
 
     public static <T extends MemberExecutionDto> void toXml(
-            final @NonNull T dto, 
+            final @NonNull T dto,
             final @NonNull Writer writer) throws JAXBException {
         _Xml.writeXml(dto, writer, writeOptions());
     }
-    
+
     // -- HELPER
-    
+
     private static WriteOptions writeOptions() {
         return WriteOptions.builder()
                 .useContextCache(true)
@@ -104,5 +107,5 @@ public final class MemberExecutionDtoUtils {
                 .build();
     }
 
-    
+
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/value/Blob.java b/api/applib/src/main/java/org/apache/isis/applib/value/Blob.java
index 7a7abff..7c4ac48 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/value/Blob.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/value/Blob.java
@@ -40,7 +40,7 @@ import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
 /**
- * @since ? {@index}
+ * @since 1.x {@index}
  */
 @Value(semanticsProviderName =
         "org.apache.isis.core.metamodel.facets.value.blobs.BlobValueSemanticsProvider")
@@ -57,17 +57,17 @@ public final class Blob implements NamedWithMimeType {
      * </pre>
      */
     private static final long serialVersionUID = 5659679806709601263L;
-    
+
     // -- FACTORIES
-    
+
     /**
      * Returns a new {@link Blob} of given {@code name}, {@code mimeType} and {@code content}.
      * <p>
-     * {@code name} may or may not include the desired filename extension, it 
-     * is guaranteed, that the resulting {@link Blob} has the appropriate extension 
+     * {@code name} may or may not include the desired filename extension, it
+     * is guaranteed, that the resulting {@link Blob} has the appropriate extension
      * as constraint by the given {@code mimeType}.
      * <p>
-     * For more fine-grained control use one of the {@link Blob} constructors directly. 
+     * For more fine-grained control use one of the {@link Blob} constructors directly.
      * @param name - may or may not include the desired filename extension
      * @param mimeType
      * @param content - bytes
@@ -78,8 +78,8 @@ public final class Blob implements NamedWithMimeType {
         val fileName = _Strings.asFileNameWithExtension(name, proposedFileExtension);
         return new Blob(fileName, mimeType.getMimeType(), content);
     }
-    
-     // -- 
+
+     // --
 
     private final MimeType mimeType;
     private final byte[] bytes;
@@ -203,23 +203,23 @@ public final class Blob implements NamedWithMimeType {
         }
 
     }
-    
+
     /**
-     * @return optionally the payload as a {@link BufferedImage} based on whether 
-     * this Blob's MIME type identifies as image and whether the payload is not empty 
+     * @return optionally the payload as a {@link BufferedImage} based on whether
+     * this Blob's MIME type identifies as image and whether the payload is not empty
      */
     public Optional<BufferedImage> asImage() {
-        
+
         val bytes = getBytes();
         if(bytes == null) {
             return Optional.empty();
         }
-        
+
         val mimeType = getMimeType();
         if(mimeType == null || !mimeType.getPrimaryType().equals("image")) {
             return Optional.empty();
         }
-        
+
         try {
             val img = _Images.fromBytes(getBytes());
             return Optional.ofNullable(img);
@@ -227,7 +227,7 @@ public final class Blob implements NamedWithMimeType {
             log.error("failed to read image data", e);
             return Optional.empty();
         }
-        
+
     }
-    
+
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/value/NamedWithMimeType.java b/api/applib/src/main/java/org/apache/isis/applib/value/NamedWithMimeType.java
index 626e473..263fa14 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/value/NamedWithMimeType.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/value/NamedWithMimeType.java
@@ -29,7 +29,7 @@ import org.apache.isis.commons.collections.Can;
 import lombok.Getter;
 
 /**
- * @since 2.0 {@index}
+ * @since 1.x {@index}
  */
 public interface NamedWithMimeType extends Serializable {
 
@@ -39,7 +39,7 @@ public interface NamedWithMimeType extends Serializable {
 
     /**
      * Subset of MimeTypes most commonly used.
-     * 
+     *
      * @since 2.0
      */
     public static enum CommonMimeType {
@@ -106,7 +106,7 @@ public interface NamedWithMimeType extends Serializable {
         WOFF2("font/woff2"),
         XHTML("application/xhtml+xml"),
         XML("application/xml"), /*alias*/ XSD("application/xml"),
-        
+
         XUL("application/vnd.mozilla.xul+xml"),
         ZIP("application/zip"),
         _7Z("application/x-7z-compressed"),
@@ -114,7 +114,7 @@ public interface NamedWithMimeType extends Serializable {
         // see
         // https://stackoverflow.com/questions/4212861/what-is-a-correct-mime-type-for-docx-pptx-etc
 
-        DOC("application/msword"), 
+        DOC("application/msword"),
         DOT("application/msword"),
 
         DOCX("application/vnd.openxmlformats-officedocument.wordprocessingml.document"),
@@ -122,7 +122,7 @@ public interface NamedWithMimeType extends Serializable {
         DOCM("application/vnd.ms-word.document.macroEnabled.12"),
         DOTM("application/vnd.ms-word.template.macroEnabled.12"),
 
-        XLS("application/vnd.ms-excel"), 
+        XLS("application/vnd.ms-excel"),
         XLT("application/vnd.ms-excel"),
         XLA("application/vnd.ms-excel"),
 
@@ -133,9 +133,9 @@ public interface NamedWithMimeType extends Serializable {
         XLAM("application/vnd.ms-excel.addin.macroEnabled.12"),
         XLSB("application/vnd.ms-excel.sheet.binary.macroEnabled.12"),
 
-        PPT("application/vnd.ms-powerpoint"), 
+        PPT("application/vnd.ms-powerpoint"),
         POT("application/vnd.ms-powerpoint"),
-        PPS("application/vnd.ms-powerpoint"), 
+        PPS("application/vnd.ms-powerpoint"),
         PPA("application/vnd.ms-powerpoint"),
 
         PPTX("application/vnd.openxmlformats-officedocument.presentationml.presentation"),
@@ -146,7 +146,7 @@ public interface NamedWithMimeType extends Serializable {
         POTM("application/vnd.ms-powerpoint.template.macroEnabled.12"),
         PPSM("application/vnd.ms-powerpoint.slideshow.macroEnabled.12"),
 
-        MDB("application/vnd.ms-access"), 
+        MDB("application/vnd.ms-access"),
 
         ;
 
diff --git a/api/schema/src/main/java/org/apache/isis/schema/IsisModuleSchema.java b/api/schema/src/main/java/org/apache/isis/schema/IsisModuleSchema.java
index 3279205..f9eb941 100644
--- a/api/schema/src/main/java/org/apache/isis/schema/IsisModuleSchema.java
+++ b/api/schema/src/main/java/org/apache/isis/schema/IsisModuleSchema.java
@@ -20,6 +20,9 @@ package org.apache.isis.schema;
 
 import org.springframework.context.annotation.Configuration;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 public class IsisModuleSchema {
 
diff --git a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/CommandSubscriberForJdo.java b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/CommandSubscriberForJdo.java
index 60689be..fb2c36b 100644
--- a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/CommandSubscriberForJdo.java
+++ b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/CommandSubscriberForJdo.java
@@ -36,6 +36,9 @@ import lombok.RequiredArgsConstructor;
 import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isis.ext.commandLog.CommandCompletionHook")
 @Order(OrderPrecedence.MIDPOINT) // after JdoPersistenceLifecycleService
diff --git a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/IsisModuleExtCommandLogImpl.java b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/IsisModuleExtCommandLogImpl.java
index 9f1fe10..1353de3 100644
--- a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/IsisModuleExtCommandLogImpl.java
+++ b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/IsisModuleExtCommandLogImpl.java
@@ -29,6 +29,9 @@ import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
 import org.apache.isis.testing.fixtures.applib.modules.ModuleWithFixtures;
 import org.apache.isis.testing.fixtures.applib.teardown.jdo.TeardownFixtureJdoAbstract;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @Import({
         // @DomainService's
diff --git a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasUniqueId_command.java b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasUniqueId_command.java
index 1725f81..ba8aa7d 100644
--- a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasUniqueId_command.java
+++ b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasUniqueId_command.java
@@ -36,6 +36,8 @@ import org.apache.isis.extensions.commandlog.impl.jdo.CommandJdoRepository;
  * This mixin contributes a <tt>command</tt> action to any (non-command) implementation of
  * {@link org.apache.isis.commons.having.HasUniqueId}; that is: audit entries, and published events.  Thus, it
  * is possible to navigate from the effect back to the cause.
+ *
+ * @since 2.0 {@index}
  */
 @Action(
     semantics = SemanticsOf.SAFE
diff --git a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasUsername_recentCommandsByUser.java b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasUsername_recentCommandsByUser.java
index 8c5fbc4..944f156 100644
--- a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasUsername_recentCommandsByUser.java
+++ b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/HasUsername_recentCommandsByUser.java
@@ -32,6 +32,9 @@ import org.apache.isis.extensions.commandlog.impl.jdo.CommandJdo;
 import org.apache.isis.extensions.commandlog.impl.jdo.CommandJdoRepository;
 
 
+/**
+ * @since 2.0 {@index}
+ */
 @Collection(
     domainEvent = HasUsername_recentCommandsByUser.CollectionDomainEvent.class
 )
diff --git a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/Object_recentCommands.java b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/Object_recentCommands.java
index 42ac568..8e68c15 100644
--- a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/Object_recentCommands.java
+++ b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/Object_recentCommands.java
@@ -35,6 +35,10 @@ import org.apache.isis.extensions.commandlog.impl.jdo.CommandJdo;
 import org.apache.isis.extensions.commandlog.impl.jdo.CommandJdoRepository;
 
 /**
+ * @since 2.0 {@index}
+ */
+
+/**
  * This mixin contributes a <tt>recentCommands</tt> action to any domain object
  * (unless also {@link HasUniqueId} - commands don't themselves have commands).
  */
diff --git a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/T_recent.java b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/T_recent.java
index 58a9e2c..843c8fd 100644
--- a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/T_recent.java
+++ b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/mixins/T_recent.java
@@ -60,8 +60,7 @@ public abstract class T_recent<T> {
                 , domainObject);
     }
 
-    @Inject
-    CommandJdoRepository commandJdoRepository;
+    @Inject CommandJdoRepository commandJdoRepository;
     @Inject BookmarkService bookmarkService;
     @Inject QueryResultsCache queryResultsCache;
 
diff --git a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/ui/CommandServiceMenu.java b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/ui/CommandServiceMenu.java
index 7d77af9..eeee395 100644
--- a/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/ui/CommandServiceMenu.java
+++ b/extensions/core/command-log/impl/src/main/java/org/apache/isis/extensions/commandlog/impl/ui/CommandServiceMenu.java
@@ -50,6 +50,9 @@ import org.apache.isis.extensions.commandlog.impl.jdo.CommandJdoRepository;
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ * @since 2.0 {@index}
+ */
 @DomainService(
     nature = NatureOfService.VIEW,
     objectType = "isis.ext.commandLog.CommandServiceMenu"
@@ -134,7 +137,7 @@ public class CommandServiceMenu {
         commandServiceRepository.truncateLog();
     }
 
-    
+
     private LocalDate now() {
         return clockService.getClock().localDate(ZoneId.systemDefault());
     }
diff --git a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/IsisModuleExtCommandReplayPrimary.java b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/IsisModuleExtCommandReplayPrimary.java
index d7aa331..8864f2b 100644
--- a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/IsisModuleExtCommandReplayPrimary.java
+++ b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/IsisModuleExtCommandReplayPrimary.java
@@ -29,6 +29,9 @@ import org.apache.isis.extensions.commandreplay.primary.restapi.CommandRetrieval
 import org.apache.isis.extensions.commandreplay.primary.spiimpl.CaptureResultOfCommand;
 import org.apache.isis.extensions.commandreplay.primary.ui.CommandReplayOnPrimaryService;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @Import({
         // @Configuration's
diff --git a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/config/PrimaryConfig.java b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/config/PrimaryConfig.java
index 215919c..f65e600 100644
--- a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/config/PrimaryConfig.java
+++ b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/config/PrimaryConfig.java
@@ -30,6 +30,9 @@ import org.apache.isis.core.config.IsisConfiguration;
 import lombok.Getter;
 import lombok.val;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isis.ext.commandReplayPrimary.PrimaryConfig")
 @Order(OrderPrecedence.MIDPOINT)
diff --git a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/mixins/Object_openOnSecondary.java b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/mixins/Object_openOnSecondary.java
index 738f0ec..3a677d0 100644
--- a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/mixins/Object_openOnSecondary.java
+++ b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/mixins/Object_openOnSecondary.java
@@ -34,6 +34,9 @@ import org.apache.isis.extensions.commandreplay.primary.config.PrimaryConfig;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Action(
     semantics = SemanticsOf.SAFE,
     domainEvent = Object_openOnSecondary.ActionDomainEvent.class,
diff --git a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/restapi/CommandRetrievalService.java b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/restapi/CommandRetrievalService.java
index e956335..f92de9f 100644
--- a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/restapi/CommandRetrievalService.java
+++ b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/restapi/CommandRetrievalService.java
@@ -40,6 +40,9 @@ import org.apache.isis.extensions.commandreplay.primary.IsisModuleExtCommandRepl
 
 import lombok.Getter;
 
+/**
+ * @since 2.0 {@index}
+ */
 @DomainService(
     nature = NatureOfService.REST,
     objectType = "isis.ext.commandReplayPrimary.CommandRetrievalService"
diff --git a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/spiimpl/CaptureResultOfCommand.java b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/spiimpl/CaptureResultOfCommand.java
index 1395a5b..8d4136d 100644
--- a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/spiimpl/CaptureResultOfCommand.java
+++ b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/spiimpl/CaptureResultOfCommand.java
@@ -39,6 +39,10 @@ import org.apache.isis.schema.common.v2.PeriodDto;
 import lombok.val;
 
 /**
+ * @since 2.0 {@index}
+ */
+
+/**
  * Uses the SPI infrastructure to copy over standard properties from {@link Command} to {@link CommandDto}.
  */
 @Service
diff --git a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/ui/CommandReplayOnPrimaryService.java b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/ui/CommandReplayOnPrimaryService.java
index 0fc4b8c..54ef737 100644
--- a/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/ui/CommandReplayOnPrimaryService.java
+++ b/extensions/core/command-replay/primary/src/main/java/org/apache/isis/extensions/commandreplay/primary/ui/CommandReplayOnPrimaryService.java
@@ -51,6 +51,9 @@ import org.apache.isis.schema.cmd.v2.CommandsDto;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 
+/**
+ * @since 2.0 {@index}
+ */
 @DomainService(
     nature = NatureOfService.VIEW,
     objectType = "isis.ext.commandReplayPrimary.CommandReplayOnPrimaryService"
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/IsisModuleExtCommandReplaySecondary.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/IsisModuleExtCommandReplaySecondary.java
index 034145e..cf016ca 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/IsisModuleExtCommandReplaySecondary.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/IsisModuleExtCommandReplaySecondary.java
@@ -54,6 +54,9 @@ import org.apache.isis.extensions.quartz.spring.AutowiringSpringBeanJobFactory;
 
 import lombok.val;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @Import({
         // @Configuration's
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/SecondaryStatus.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/SecondaryStatus.java
index 076a4b5c..f590b2e 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/SecondaryStatus.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/SecondaryStatus.java
@@ -18,6 +18,9 @@
  */
 package org.apache.isis.extensions.commandreplay.secondary;
 
+/**
+ * @since 2.0 {@index}
+ */
 public enum SecondaryStatus {
     TICKING_CLOCK_STATUS_UNKNOWN,
     TICKING_CLOCK_NOT_YET_INITIALIZED,
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyser.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyser.java
index ce33c9f..1255b2f 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyser.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyser.java
@@ -20,6 +20,9 @@ package org.apache.isis.extensions.commandreplay.secondary.analyser;
 
 import org.apache.isis.extensions.commandlog.impl.jdo.CommandJdo;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface CommandReplayAnalyser {
 
     /**
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserException.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserException.java
index c4e570d..cd3aaa1 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserException.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserException.java
@@ -37,6 +37,9 @@ import org.apache.isis.schema.common.v2.InteractionType;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isis.ext.commandReplaySecondary.CommandReplayAnalyserException")
 @Order(OrderPrecedence.MIDPOINT)
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserResult.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserResult.java
index 9ebfc22..4a0d206 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserResult.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserResult.java
@@ -36,6 +36,9 @@ import org.apache.isis.schema.common.v2.InteractionType;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isis.ext.commandReplaySecondary.CommandReplayAnalyserResult")
 @Order(OrderPrecedence.MIDPOINT)
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analysis/CommandReplayAnalysisService.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analysis/CommandReplayAnalysisService.java
index 78c5c91..9f1494e 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analysis/CommandReplayAnalysisService.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/analysis/CommandReplayAnalysisService.java
@@ -33,6 +33,9 @@ import org.apache.isis.extensions.commandreplay.secondary.analyser.CommandReplay
 
 import lombok.extern.log4j.Log4j2;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isis.ext.commandReplaySecondary.CommandReplayAnalysisService")
 @Order(OrderPrecedence.MIDPOINT)
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/clock/TickingClockService.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/clock/TickingClockService.java
index b040814..1b1c327 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/clock/TickingClockService.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/clock/TickingClockService.java
@@ -52,6 +52,8 @@ import lombok.extern.log4j.Log4j2;
  *     thread-local.  These methods should therefore only be used in single-user
  *     systems, eg a replay secondary.
  * </p>
+ *
+ * @since 2.0 {@index}
  */
 @Service()
 @Named("isis.ext.commandReplaySecondary.TickingClockService")
@@ -149,4 +151,4 @@ public class TickingClockService {
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/config/SecondaryConfig.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/config/SecondaryConfig.java
index d5a243d..937633c 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/config/SecondaryConfig.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/config/SecondaryConfig.java
@@ -32,6 +32,9 @@ import org.apache.isis.core.config.IsisConfiguration;
 import lombok.Getter;
 import lombok.val;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isis.ext.commandReplaySecondary.SecondaryConfig")
 @Order(OrderPrecedence.MIDPOINT)
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/executor/CommandExecutorServiceWithTime.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/executor/CommandExecutorServiceWithTime.java
index 46e8df6..63c7469 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/executor/CommandExecutorServiceWithTime.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/executor/CommandExecutorServiceWithTime.java
@@ -42,6 +42,8 @@ import lombok.extern.log4j.Log4j2;
  * <p>
  *     It then delegates down to the default implementation.
  * </p>
+ *
+ * @since 2.0 {@index}
  */
 @Service
 @Named("isis.ext.commandReplaySecondary.CommandExecutorServiceWithTime")
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/fetch/CommandFetcher.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/fetch/CommandFetcher.java
index 58790d6..c1daa70 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/fetch/CommandFetcher.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/fetch/CommandFetcher.java
@@ -47,6 +47,9 @@ import org.apache.isis.schema.cmd.v2.CommandsDto;
 import lombok.extern.log4j.Log4j2;
 
 
+/**
+ * @since 2.0 {@index}
+ */
 @Service()
 @Named("isis.ext.commandReplaySecondary.CommandFetcher")
 @Order(OrderPrecedence.MIDPOINT)
@@ -167,4 +170,4 @@ public class CommandFetcher {
     @Inject
     SecondaryConfig secondaryConfig;
 
-}
\ No newline at end of file
+}
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/job/ReplicateAndReplayJob.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/job/ReplicateAndReplayJob.java
index f7de20e..f757f12 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/job/ReplicateAndReplayJob.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/job/ReplicateAndReplayJob.java
@@ -37,6 +37,9 @@ import org.apache.isis.extensions.commandreplay.secondary.jobcallables.Replicate
 import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
+/**
+ * @since 2.0 {@index}
+ */
 @DisallowConcurrentExecution
 @PersistJobDataAfterExecution
 @Log4j2
@@ -53,9 +56,9 @@ public class ReplicateAndReplayJob implements Job {
 
         if(secondaryConfig.isConfigured()) {
             val user = UserMemento.ofNameAndRoleNames(
-                    secondaryConfig.getPrimaryUser(), 
+                    secondaryConfig.getPrimaryUser(),
                     secondaryConfig.getQuartzRoles().stream());
-            
+
             authentication = SimpleAuthentication.validOf(user);
             exec(quartzContext);
         }
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/job/SecondaryStatusData.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/job/SecondaryStatusData.java
index e11052d..d43e165 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/job/SecondaryStatusData.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/job/SecondaryStatusData.java
@@ -26,6 +26,9 @@ import org.apache.isis.extensions.quartz.context.JobExecutionData;
 import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Log4j2
 class SecondaryStatusData {
 
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/jobcallables/ReplicateAndRunCommands.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/jobcallables/ReplicateAndRunCommands.java
index cc40bd6..f055957 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/jobcallables/ReplicateAndRunCommands.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/jobcallables/ReplicateAndRunCommands.java
@@ -48,6 +48,8 @@ import lombok.extern.log4j.Log4j2;
  *     (<code>{@link org.apache.isis.extensions.commandreplay.secondary.job.ReplicateAndReplayJob}</code>)
  *     files.
  * </p>
+ *
+ * @since 2.0 {@index}
  */
 @Log4j2
 public class ReplicateAndRunCommands implements Callable<SecondaryStatus> {
@@ -189,4 +191,4 @@ public class ReplicateAndRunCommands implements Callable<SecondaryStatus> {
 
     }
 
-}
\ No newline at end of file
+}
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/CommandJdo_exclude.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/CommandJdo_exclude.java
index 8d401df..59b9e95 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/CommandJdo_exclude.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/CommandJdo_exclude.java
@@ -34,6 +34,9 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.log4j.Log4j2;
 
 
+/**
+ * @since 2.0 {@index}
+ */
 @Action(
     semantics = SemanticsOf.NON_IDEMPOTENT_ARE_YOU_SURE,
     domainEvent = CommandJdo_exclude.ActionDomainEvent.class
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/CommandJdo_replayQueue.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/CommandJdo_replayQueue.java
index ad2e9e4..0156141 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/CommandJdo_replayQueue.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/CommandJdo_replayQueue.java
@@ -32,6 +32,9 @@ import org.apache.isis.extensions.commandreplay.secondary.config.SecondaryConfig
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Collection(
     domainEvent = CommandJdo_replayQueue.CollectionDomainEvent.class
 )
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/Object_openOnPrimary.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/Object_openOnPrimary.java
index b2528b9..b3fa856 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/Object_openOnPrimary.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/mixins/Object_openOnPrimary.java
@@ -34,6 +34,9 @@ import org.apache.isis.extensions.commandreplay.secondary.config.SecondaryConfig
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Action(
     semantics = SemanticsOf.SAFE,
     domainEvent = Object_openOnPrimary.ActionDomainEvent.class,
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/spi/ReplayCommandExecutionController.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/spi/ReplayCommandExecutionController.java
index 505c668..f8bf43d 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/spi/ReplayCommandExecutionController.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/spi/ReplayCommandExecutionController.java
@@ -26,6 +26,8 @@ package org.apache.isis.extensions.commandreplay.secondary.spi;
  * If no implementation is configured, then replication/replay will continue
  * without interruption.
  * </p>
+ *
+ * @since 2.0 {@index}
  */
 public interface ReplayCommandExecutionController {
 
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/ui/CommandReplayOnSecondaryService.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/ui/CommandReplayOnSecondaryService.java
index 69c6aaf..b3531f9 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/ui/CommandReplayOnSecondaryService.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/ui/CommandReplayOnSecondaryService.java
@@ -46,6 +46,9 @@ import lombok.RequiredArgsConstructor;
 import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
+/**
+ * @since 2.0 {@index}
+ */
 @DomainService(
     nature = NatureOfService.VIEW,
     objectType = "isis.ext.commandReplaySecondary.CommandReplayOnSecondaryService"
diff --git a/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/applib/IsisModuleIncModelApplib.java b/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/applib/IsisModuleIncModelApplib.java
index 1005fc0..969e674 100644
--- a/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/applib/IsisModuleIncModelApplib.java
+++ b/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/applib/IsisModuleIncModelApplib.java
@@ -20,6 +20,9 @@ package org.apache.isis.extensions.modelannotation.applib;
 
 import org.springframework.context.annotation.Configuration;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 public class IsisModuleIncModelApplib {
 
diff --git a/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/applib/annotation/Model.java b/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/applib/annotation/Model.java
index 36ed7b7..02977f7 100644
--- a/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/applib/annotation/Model.java
+++ b/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/applib/annotation/Model.java
@@ -26,13 +26,13 @@ import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
 /**
- * Indicates that a method is a supporting-method, one that contributes (hide, validate, ...) 
+ * Indicates that a method is a supporting-method, one that contributes (hide, validate, ...)
  * to an <em>Action</em>.
  * <p>
- * By placing the {@link Model} annotation on a method, a contract with the meta-model is enforced, 
+ * By placing the {@link Model} annotation on a method, a contract with the meta-model is enforced,
  * such that this method must be recognized and cannot be ignored.
  *
- * @since 2.0
+ * @since 2.0 {@index}
  */
 @Inherited
 @Target({ ElementType.METHOD })
diff --git a/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/metamodel/IsisModuleExtModelAnnotation.java b/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/metamodel/IsisModuleExtModelAnnotation.java
index f6b5f5c..cb41ff5 100644
--- a/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/metamodel/IsisModuleExtModelAnnotation.java
+++ b/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/metamodel/IsisModuleExtModelAnnotation.java
@@ -24,6 +24,9 @@ import org.springframework.context.annotation.Import;
 import org.apache.isis.extensions.modelannotation.applib.IsisModuleIncModelApplib;
 import org.apache.isis.extensions.modelannotation.metamodel.services.IncubatorMetaModelPlugin;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @Import({
         // modules
diff --git a/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/metamodel/facets/SupportingMethodValidatorRefinerFactory.java b/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/metamodel/facets/SupportingMethodValidatorRefinerFactory.java
index d5d3624..41c05cb 100644
--- a/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/metamodel/facets/SupportingMethodValidatorRefinerFactory.java
+++ b/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/metamodel/facets/SupportingMethodValidatorRefinerFactory.java
@@ -38,12 +38,10 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.extensions.modelannotation.applib.annotation.Model;
 
 /**
- * 
- * @since 2.0
- *
+ * @since 2.0 {@index}
  */
-public class SupportingMethodValidatorRefinerFactory 
-extends FacetFactoryAbstract 
+public class SupportingMethodValidatorRefinerFactory
+extends FacetFactoryAbstract
 implements MetaModelRefiner {
 
     public SupportingMethodValidatorRefinerFactory() {
@@ -62,17 +60,17 @@ implements MetaModelRefiner {
 
             final Class<?> type = spec.getCorrespondingClass();
 
-//XXX for debugging ...            
+//XXX for debugging ...
 //            if(spec.getSpecId().asString().contains("ProperMemberSupport")) {
-//                
+//
 //                val sb = new StringBuffer();
-//                
+//
 //                sb.append("\n### debug " + spec.getSpecId().asString()).append("\n");
-//                
+//
 //                spec.streamFacetHolders()
 //                .flatMap(FacetHolder::streamFacets)
 //                .forEach(facet->sb.append("facet: " + facet).append("\n"));
-//                
+//
 //                System.out.println(sb);
 //            }
 
@@ -84,7 +82,7 @@ implements MetaModelRefiner {
                     .map(ImperativeFacet::getMethods)
                     .flatMap(List::stream)
                     .collect(Collectors.toCollection(HashSet::new));
-            
+
             // methods intended to be included with the meta-model
             final HashSet<Method> intendedMethods = _Sets.<Method>newHashSet();
             for(Method method: type.getDeclaredMethods()) {
@@ -97,7 +95,7 @@ implements MetaModelRefiner {
             final Set<Method> notRecognizedMethods =
                     _Sets.minus(intendedMethods, recognizedMethods);
 
-            // find reasons about why these are not recognized    
+            // find reasons about why these are not recognized
             notRecognizedMethods.forEach(notRecognizedMethod->{
                 final List<String>  unmetContraints = unmetContraints(spec, notRecognizedMethod);
 
@@ -123,7 +121,7 @@ implements MetaModelRefiner {
     // -- VALIDATION LOGIC
 
     private List<String> unmetContraints(
-            ObjectSpecification spec, 
+            ObjectSpecification spec,
             Method method) {
 
         //val type = spec.getCorrespondingClass();
@@ -132,7 +130,7 @@ implements MetaModelRefiner {
         if (!MethodUtil.isPublic(method)) {
             unmetContraints.add("method must be 'public'");
             return unmetContraints; // don't check any further
-        } 
+        }
 
         unmetContraints.add("misspelled prefix or unsupported method signature");
         return unmetContraints;
diff --git a/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/metamodel/services/IncubatorMetaModelPlugin.java b/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/metamodel/services/IncubatorMetaModelPlugin.java
index 21a8498..a174e8d 100644
--- a/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/metamodel/services/IncubatorMetaModelPlugin.java
+++ b/extensions/core/model-annotation/src/main/java/org/apache/isis/extensions/modelannotation/metamodel/services/IncubatorMetaModelPlugin.java
@@ -24,13 +24,16 @@ import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.extensions.modelannotation.metamodel.facets.SupportingMethodValidatorRefinerFactory;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Component
 public class IncubatorMetaModelPlugin implements MetaModelRefiner {
 
     @Override
     public void refineProgrammingModel(ProgrammingModel programmingModel) {
         programmingModel.addFactory(
-                ProgrammingModel.FacetProcessingOrder.C2_AFTER_METHOD_REMOVING, 
+                ProgrammingModel.FacetProcessingOrder.C2_AFTER_METHOD_REMOVING,
                 SupportingMethodValidatorRefinerFactory.class,
                 ProgrammingModel.Marker.INCUBATING
                 );
diff --git a/extensions/core/quartz/impl/src/main/java/org/apache/isis/extensions/quartz/IsisModuleExtQuartzImpl.java b/extensions/core/quartz/impl/src/main/java/org/apache/isis/extensions/quartz/IsisModuleExtQuartzImpl.java
index 5d79c3e..fbd2ad9 100644
--- a/extensions/core/quartz/impl/src/main/java/org/apache/isis/extensions/quartz/IsisModuleExtQuartzImpl.java
+++ b/extensions/core/quartz/impl/src/main/java/org/apache/isis/extensions/quartz/IsisModuleExtQuartzImpl.java
@@ -21,6 +21,9 @@ package org.apache.isis.extensions.quartz;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @Import({
         // @Configuration's
diff --git a/extensions/core/quartz/impl/src/main/java/org/apache/isis/extensions/quartz/context/JobExecutionData.java b/extensions/core/quartz/impl/src/main/java/org/apache/isis/extensions/quartz/context/JobExecutionData.java
index e884703..01b2f5e 100644
--- a/extensions/core/quartz/impl/src/main/java/org/apache/isis/extensions/quartz/context/JobExecutionData.java
+++ b/extensions/core/quartz/impl/src/main/java/org/apache/isis/extensions/quartz/context/JobExecutionData.java
@@ -25,6 +25,8 @@ import lombok.extern.log4j.Log4j2;
 
 /**
  * Requires that the job is annotated with the {@link org.quartz.PersistJobDataAfterExecution} annotation.
+ *
+ * @since 2.0 {@index}
  */
 @Log4j2
 @RequiredArgsConstructor
diff --git a/extensions/core/quartz/impl/src/main/java/org/apache/isis/extensions/quartz/spring/AutowiringSpringBeanJobFactory.java b/extensions/core/quartz/impl/src/main/java/org/apache/isis/extensions/quartz/spring/AutowiringSpringBeanJobFactory.java
index 3f4e18c..1b2e603 100644
--- a/extensions/core/quartz/impl/src/main/java/org/apache/isis/extensions/quartz/spring/AutowiringSpringBeanJobFactory.java
+++ b/extensions/core/quartz/impl/src/main/java/org/apache/isis/extensions/quartz/spring/AutowiringSpringBeanJobFactory.java
@@ -24,6 +24,9 @@ import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
 import org.springframework.scheduling.quartz.SpringBeanJobFactory;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class AutowiringSpringBeanJobFactory
         extends SpringBeanJobFactory
         implements ApplicationContextAware {
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/IsisModuleExtSecmanApi.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/IsisModuleExtSecmanApi.java
index 6ce8d5f..ae6b62f 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/IsisModuleExtSecmanApi.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/IsisModuleExtSecmanApi.java
@@ -20,6 +20,9 @@ package org.apache.isis.extensions.secman.api;
 
 import org.springframework.context.annotation.Configuration;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 public class IsisModuleExtSecmanApi {
 
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecmanConfiguration.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecmanConfiguration.java
index c66af4a..58668da 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecmanConfiguration.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecmanConfiguration.java
@@ -28,6 +28,9 @@ import lombok.Getter;
 import lombok.NonNull;
 import lombok.Singular;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Builder
 public class SecmanConfiguration {
 
@@ -57,30 +60,30 @@ public class SecmanConfiguration {
     final String[] adminStickyNamespacePermissions = new String[]{
             "isis.ext.secman"
     };
-    
-    @Getter @Singular 
+
+    @Getter @Singular
     final Set<String> adminAdditionalNamespacePermissions;
-    
+
     /**
      * Delegated users, on first successful logon, are auto-created but disabled (by default).
-     * <p> 
-     * This option allows to override this behavior, such that authenticated 
+     * <p>
+     * This option allows to override this behavior, such that authenticated
      * users are also auto-enabled.
      * <p>
-     * default: false 
+     * default: false
      *
      */
-    @Getter @Builder.Default 
+    @Getter @Builder.Default
     final boolean autoEnableIfDelegatedAndAuthenticated = false;
 
     // -- UTILITIES
-    
+
     public Stream<String> streamAdminNamespacePermissions() {
         return Stream.concat(
                 _NullSafe.stream(adminStickyNamespacePermissions),
                 _NullSafe.stream(adminAdditionalNamespacePermissions));
     }
-    
+
     public boolean isStickyAdminNamespace(String featureFqn) {
         return _NullSafe.stream(adminStickyNamespacePermissions)
         .anyMatch(stickyPackage->stickyPackage.equals(featureFqn));
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecurityRealm.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecurityRealm.java
index 8b4a512..767ddc7 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecurityRealm.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecurityRealm.java
@@ -20,6 +20,9 @@ package org.apache.isis.extensions.secman.api;
 
 import java.util.EnumSet;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface SecurityRealm {
 
     EnumSet<SecurityRealmCharacteristic> getCharacteristics();
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecurityRealmCharacteristic.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecurityRealmCharacteristic.java
index 0cd6b5d..331a4e8 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecurityRealmCharacteristic.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecurityRealmCharacteristic.java
@@ -18,6 +18,9 @@
  */
 package org.apache.isis.extensions.secman.api;
 
+/**
+ * @since 2.0 {@index}
+ */
 public enum SecurityRealmCharacteristic {
     DELEGATING
 }
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecurityRealmService.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecurityRealmService.java
index 87402f1..6f45001 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecurityRealmService.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecurityRealmService.java
@@ -18,6 +18,9 @@
  */
 package org.apache.isis.extensions.secman.api;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface SecurityRealmService {
 
     SecurityRealm getCurrentRealm();
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/encryption/PasswordEncryptionService.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/encryption/PasswordEncryptionService.java
index 70101a8..f3ca4cb 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/encryption/PasswordEncryptionService.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/encryption/PasswordEncryptionService.java
@@ -20,6 +20,9 @@ package org.apache.isis.extensions.secman.api.encryption;
 
 import org.apache.isis.applib.annotation.Programmatic;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface PasswordEncryptionService {
 
     @Programmatic
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/encryption/PasswordEncryptionServiceNone.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/encryption/PasswordEncryptionServiceNone.java
index 0fdb5fe..80b7996 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/encryption/PasswordEncryptionServiceNone.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/encryption/PasswordEncryptionServiceNone.java
@@ -22,6 +22,9 @@ import java.util.Objects;
 
 import org.apache.isis.applib.annotation.Programmatic;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class PasswordEncryptionServiceNone implements PasswordEncryptionService {
 
     @Programmatic
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/events/UserCreatedEvent.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/events/UserCreatedEvent.java
index bea7172..d1e06c9 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/events/UserCreatedEvent.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/events/UserCreatedEvent.java
@@ -24,10 +24,10 @@ import org.apache.isis.extensions.secman.api.user.ApplicationUser;
 import lombok.NonNull;
 import lombok.Value;
 
-/** 
+/**
  * SecMan fires this event when a new user entity just got persisted.
  * <p>
- * Users may subscribe to this event in order to apply business 
+ * Users may subscribe to this event in order to apply business
  * logic to the newly created user. eg. add default roles
  * <p>
  * <pre>
@@ -38,25 +38,26 @@ import lombok.Value;
  *         // business logic ...
  *     }
  * }
- *                     
+ *
  * </pre>
- * @since Jun 23, 2020
+ *
+ * @since 2.0 {@index}
  */
 @Value(staticConstructor="of")
 public class UserCreatedEvent {
-    
+
     @NonNull private ApplicationUser user;
 
     // -- SHORTCUTS
-    
+
     public AccountType getAccountType() {
-        return user.getAccountType(); 
+        return user.getAccountType();
     }
-    
+
     public String getUserName() {
-        return user.getUsername(); 
+        return user.getUsername();
     }
-    
+
     public boolean isDelegated() {
         return getAccountType()!=null && getAccountType().isDelegated();
     }
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermission.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermission.java
index a28d5c7..a207be5 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermission.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermission.java
@@ -61,27 +61,29 @@ import lombok.val;
  *     implies a {@link ApplicationPermissionMode#CHANGING usability} veto.</li>
  * </ul>
  * </p>
+ *
+ * @since 2.0 {@index}
  */
 @DomainObject(objectType = "isis.ext.secman.IApplicationPermission")
 public interface ApplicationPermission {
-    
+
     // -- DOMAIN EVENTS
-    
+
     public static abstract class PropertyDomainEvent<T> extends IsisModuleExtSecmanApi.PropertyDomainEvent<ApplicationPermission, T> {}
     public static abstract class CollectionDomainEvent<T> extends IsisModuleExtSecmanApi.CollectionDomainEvent<ApplicationPermission, T> {}
     public static abstract class ActionDomainEvent extends IsisModuleExtSecmanApi.ActionDomainEvent<ApplicationPermission> {}
-    
+
     public static class AllowDomainEvent extends ActionDomainEvent {}
     public static class UpdateRoleDomainEvent extends ActionDomainEvent {}
     public static class VetoDomainEvent extends ActionDomainEvent {}
     public static class DeleteDomainEvent extends ActionDomainEvent {}
     public static class ChangingDomainEvent extends ActionDomainEvent {}
     public static class ViewingDomainEvent extends ActionDomainEvent {}
-    
+
     public static class RelocateNamespaceDomainEvent extends ActionDomainEvent {}
-    
+
     // -- MODEL
-    
+
     /**
      * having a title() method (rather than using @Title annotation) is necessary as a workaround to be able to use
      * wrapperFactory#unwrap(...) method, which is otherwise broken in Isis 1.6.0
@@ -95,7 +97,7 @@ public interface ApplicationPermission {
 
         createFeatureId()
         .ifPresent(featureId->{
-            
+
             switch (featureId.getType()) {
             case PACKAGE:
                 buf.append(getFeatureFqn());              // com.mycompany
@@ -114,16 +116,16 @@ public interface ApplicationPermission {
                 .append(featureId.getMemberName());   // com.mycompany.Bar#foo
                 break;
             }
-            
+
         });
-        
+
         return buf.toString();
     }
-    
+
     ApplicationFeatureType getFeatureType();
 
     // -- ROLE
-    
+
     @Property
     @PropertyLayout(
             hidden=Where.REFERENCES_PARENT
@@ -133,49 +135,49 @@ public interface ApplicationPermission {
         throw _Exceptions.unsupportedOperation("please implement me");
     }
     void setRole(ApplicationRole applicationRole);
-    
+
     // -- RULE
-    
+
     @Property
     @MemberOrder(name="Permissions", sequence = "2")
     default ApplicationPermissionRule getRule() {
         throw _Exceptions.unsupportedOperation("please implement me");
     }
     void setRule(ApplicationPermissionRule rule);
-    
+
     // -- MODE
-    
+
     @Property
     @MemberOrder(name="Permissions", sequence = "3")
     default ApplicationPermissionMode getMode() {
         throw _Exceptions.unsupportedOperation("please implement me");
     }
     void setMode(ApplicationPermissionMode changing);
-    
+
     // -- TYPE
-    
+
     @Property
     @MemberOrder(name="Feature", sequence = "5")
     default String getType() {
         throw _Exceptions.unsupportedOperation("please implement me");
     }
-    
+
     // -- FQN
-    
+
     @Property
     @MemberOrder(name="Feature", sequence = "5.1")
     default String getFeatureFqn() {
         throw _Exceptions.unsupportedOperation("please implement me");
     }
     void setFeatureFqn(String featureFqn);
-    
+
     // -- HELPER
-    
+
     @Programmatic
     default Optional<ApplicationFeatureId> createFeatureId() {
         return Optional.of(getFeatureType())
                 .map(featureType -> ApplicationFeatureId.newFeature(featureType, getFeatureFqn()));
     }
-    
+
 
 }
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionMode.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionMode.java
index 1f0f0a4..1076fcc 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionMode.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionMode.java
@@ -24,6 +24,8 @@ import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeature;
 /**
  * Named after UNIX modes (<code>chmod</code> etc), determines that nature of access (of denial of access if vetoed)
  * to an {@link ApplicationFeature}.
+ *
+ * @since 2.0 {@index}
  */
 public enum ApplicationPermissionMode {
     /**
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionRepository.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionRepository.java
index fe49246..eb7c476 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionRepository.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionRepository.java
@@ -25,23 +25,26 @@ import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureId;
 import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureType;
 import org.apache.isis.extensions.secman.api.role.ApplicationRole;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface ApplicationPermissionRepository<P extends ApplicationPermission> {
 
     Optional<P> findByUserAndPermissionValue(String username, ApplicationPermissionValue changingPermissionValue);
 
     Optional<P> findByRoleAndRuleAndFeature(
-            ApplicationRole holder, 
+            ApplicationRole holder,
             ApplicationPermissionRule rule,
-            ApplicationFeatureType type, 
+            ApplicationFeatureType type,
             String featureFqn);
 
     Collection<P> allPermissions();
-    
+
     Collection<P> findOrphaned();
     Collection<P> findByFeatureCached(ApplicationFeatureId featureId);
     Collection<P> findByRoleAndRuleAndFeatureTypeCached(
             ApplicationRole holder,
-            ApplicationPermissionRule rule, 
+            ApplicationPermissionRule rule,
             ApplicationFeatureType type);
 
 
@@ -49,21 +52,21 @@ public interface ApplicationPermissionRepository<P extends ApplicationPermission
      * @return detached entity
      */
     P newApplicationPermission();
-    
+
     P newPermission(
             ApplicationRole role,
-            ApplicationPermissionRule rule, 
+            ApplicationPermissionRule rule,
             ApplicationPermissionMode mode,
-            String packageFqn, 
-            String className, 
+            String packageFqn,
+            String className,
             String memberName);
 
     P newPermission(
-            ApplicationRole holder, 
-            ApplicationPermissionRule rule, 
+            ApplicationRole holder,
+            ApplicationPermissionRule rule,
             ApplicationPermissionMode mode,
-            ApplicationFeatureType featureType, 
+            ApplicationFeatureType featureType,
             String featureFqn);
-    
+
 
 }
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionRule.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionRule.java
index bf63738..25ac6f0 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionRule.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionRule.java
@@ -24,6 +24,8 @@ import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeature;
 /**
  * Whether the permission {@link #ALLOW grants} or {@link #VETO denies} access to an
  * {@link ApplicationFeature}.
+ *
+ * @since 2.0 {@index}
  */
 public enum ApplicationPermissionRule {
     /**
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionValue.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionValue.java
index b4feb50..7291ce6 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionValue.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionValue.java
@@ -35,6 +35,8 @@ import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureId;
  *     Intended for value type arithmetic and also for caching.  No user/role information is held because that information
  *     is not required to perform the arithmetic.
  * </p>
+ *
+ * @since 2.0 {@index}
  */
 public class ApplicationPermissionValue implements Comparable<ApplicationPermissionValue>, Serializable {
 
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionValueSet.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionValueSet.java
index 46eb013..5c53ecc 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionValueSet.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermissionValueSet.java
@@ -30,12 +30,14 @@ import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
 import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureId;
 
 /**
- * A serializable value object representing a set of (anonymized) 
+ * A serializable value object representing a set of (anonymized)
  * {@link ApplicationPermissionValue permission}s.
  *
  * <p>
  *     Intended for value type arithmetic and also for caching.
  * </p>
+ *
+ * @since 2.0 {@index}
  */
 public class ApplicationPermissionValueSet implements Serializable {
 
@@ -77,14 +79,14 @@ public class ApplicationPermissionValueSet implements Serializable {
      *                     -> VETO, VIEWING
      *                     -> VETO, CHANGING
      * </pre>
-     * 
+     *
      * <p>
      *     Note that {@link org.apache.isis.extensions.security.manager.jdo.dom.permission.ApplicationPermissionRule#ALLOW allow} rule
      *     is ordered before {@link org.apache.isis.extensions.security.manager.jdo.dom.permission.ApplicationPermissionRule#VETO veto} rule
      *     meaning that it is checked first and therefore also takes precedence.
      * </p>
      */
-    private final _Multimaps.SetMultimap<ApplicationFeatureId, ApplicationPermissionValue> permissionsByFeature = 
+    private final _Multimaps.SetMultimap<ApplicationFeatureId, ApplicationPermissionValue> permissionsByFeature =
             _Multimaps.newSortedSetMultimap(
                     Collections.reverseOrder(ApplicationFeatureId.Comparators.natural()),
                     null // natural element order
@@ -99,7 +101,7 @@ public class ApplicationPermissionValueSet implements Serializable {
     // -- constructor
 
     public ApplicationPermissionValueSet(
-            final List<ApplicationPermissionValue> permissionValues, 
+            final List<ApplicationPermissionValue> permissionValues,
             final PermissionsEvaluationService permissionsEvaluationService) {
 
         this.values = Collections.unmodifiableList(_Lists.newArrayList(permissionValues));
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationService.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationService.java
index bd438df..dfef149 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationService.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationService.java
@@ -31,6 +31,8 @@ import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureId;
  *     All implementations of this interface must be {@link java.io.Serializable}, because
  *     an instance is serialized into {@link org.apache.isis.extensions.secman.api.permission.ApplicationPermissionValueSet}.
  * </p>
+ *
+ * @since 2.0 {@index}
  */
 public interface PermissionsEvaluationService extends Serializable {
 
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationServiceAbstract.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationServiceAbstract.java
index 977f06b..3c041ac 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationServiceAbstract.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationServiceAbstract.java
@@ -23,6 +23,9 @@ import java.util.Collection;
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureId;
 
+/**
+ * @since 2.0 {@index}
+ */
 public abstract class PermissionsEvaluationServiceAbstract implements PermissionsEvaluationService {
 
     private static final long serialVersionUID = 1L;
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationServiceAllowBeatsVeto.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationServiceAllowBeatsVeto.java
index 5c2a48d..03da7eb 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationServiceAllowBeatsVeto.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationServiceAllowBeatsVeto.java
@@ -22,6 +22,8 @@ import java.util.Collection;
 
 /**
  * An implementation whereby a VETO permission for a feature overrides an ALLOW (for same scope).
+ *
+ * @since 2.0 {@index}
  */
 public class PermissionsEvaluationServiceAllowBeatsVeto extends PermissionsEvaluationServiceAbstract {
 
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationServiceVetoBeatsAllow.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationServiceVetoBeatsAllow.java
index 5fc66d5..21bd7a4 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationServiceVetoBeatsAllow.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/PermissionsEvaluationServiceVetoBeatsAllow.java
@@ -27,6 +27,8 @@ import lombok.val;
 
 /**
  * An implementation whereby a VETO permission for a feature overrides an ALLOW (for same scope).
+ *
+ * @since 2.0 {@index}
  */
 public class PermissionsEvaluationServiceVetoBeatsAllow extends PermissionsEvaluationServiceAbstract {
 
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/ApplicationRole.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/ApplicationRole.java
index 890156e..1fa9dd0 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/ApplicationRole.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/ApplicationRole.java
@@ -20,6 +20,9 @@ package org.apache.isis.extensions.secman.api.role;
 
 import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface ApplicationRole {
 
     public static final int MAX_LENGTH_NAME = 50;
@@ -27,11 +30,11 @@ public interface ApplicationRole {
     public static final int TYPICAL_LENGTH_DESCRIPTION = 50;
 
     // -- EVENTS
-    
+
     public static abstract class PropertyDomainEvent<T> extends IsisModuleExtSecmanApi.PropertyDomainEvent<ApplicationRole, T> {}
     public static abstract class CollectionDomainEvent<T> extends IsisModuleExtSecmanApi.CollectionDomainEvent<ApplicationRole, T> {}
     public static abstract class ActionDomainEvent extends IsisModuleExtSecmanApi.ActionDomainEvent<ApplicationRole> {}
-    
+
     public static class AddUserDomainEvent extends ActionDomainEvent {}
     public static class RemoveUserDomainEvent extends ActionDomainEvent {}
     public static class AddActionDomainEvent extends ActionDomainEvent {}
@@ -40,14 +43,14 @@ public interface ApplicationRole {
     public static class AddPackageDomainEvent extends ActionDomainEvent {}
     public static class AddPropertyDomainEvent extends ActionDomainEvent {}
     public static class RemovePermissionDomainEvent extends ActionDomainEvent {}
-    
+
     public static class DeleteDomainEvent extends ActionDomainEvent {}
-    
+
     public static class UpdateDescriptionDomainEvent extends ActionDomainEvent {}
     public static class UpdateNameDomainEvent extends ActionDomainEvent {}
-    
+
     // -- MODEL
-    
+
     /**
      * having a title() method (rather than using @Title annotation) is necessary as a workaround to be able to use
      * wrapperFactory#unwrap(...) method, which is otherwise broken in Isis 1.6.0
@@ -55,10 +58,10 @@ public interface ApplicationRole {
     default String title() {
         return getName();
     }
-    
+
     String getName();
     void setName(String name);
-    
+
     String getDescription();
     void setDescription(String description);
 
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/ApplicationRoleRepository.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/ApplicationRoleRepository.java
index 21bc101..75b16a1 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/ApplicationRoleRepository.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/ApplicationRoleRepository.java
@@ -23,21 +23,24 @@ import java.util.Optional;
 
 import org.apache.isis.extensions.secman.api.user.ApplicationUser;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface ApplicationRoleRepository<R extends ApplicationRole> {
 
     /**
-     * 
+     *
      * @return detached entity
      */
     R newApplicationRole();
-    
+
     Collection<R> allRoles();
 
     R newRole(String name, String description);
 
     Collection<R> findNameContaining(String search);
     Collection<R> getRoles(ApplicationUser user);
-    
+
     /**
      * auto-complete support
      * @param search
@@ -54,6 +57,6 @@ public interface ApplicationRoleRepository<R extends ApplicationRole> {
 
     void deleteRole(ApplicationRole holder);
 
-    
+
 
 }
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/ApplicationTenancy.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/ApplicationTenancy.java
index 591c7da..f55e545 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/ApplicationTenancy.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/ApplicationTenancy.java
@@ -20,18 +20,21 @@ package org.apache.isis.extensions.secman.api.tenancy;
 
 import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface ApplicationTenancy {
 
     public static final int MAX_LENGTH_PATH = 255;
     public static final int MAX_LENGTH_NAME = 40;
     public static final int TYPICAL_LENGTH_NAME = 20;
-    
+
     // -- DOMAIN EVENTS
-    
+
     public static abstract class PropertyDomainEvent<T> extends IsisModuleExtSecmanApi.PropertyDomainEvent<ApplicationTenancy, T> {}
     public static abstract class CollectionDomainEvent<T> extends IsisModuleExtSecmanApi.CollectionDomainEvent<ApplicationTenancy, T> {}
     public static abstract class ActionDomainEvent extends IsisModuleExtSecmanApi.ActionDomainEvent<ApplicationTenancy> {}
-    
+
     public static class AddUserDomainEvent extends ActionDomainEvent {}
     public static class RemoveUserDomainEvent extends ActionDomainEvent {}
     public static class AddChildDomainEvent extends ActionDomainEvent {}
@@ -39,19 +42,19 @@ public interface ApplicationTenancy {
     public static class RemoveChildDomainEvent extends ActionDomainEvent {}
     public static class UpdateNameDomainEvent extends ActionDomainEvent {}
     public static class UpdateParentDomainEvent extends ActionDomainEvent {}
-    
+
     // -- MODEL
-    
+
     default String title() {
         return getName();
     }
-    
+
     public String getPath();
 
     public String getName();
     public void setName(String name);
 
     public ApplicationTenancy getParent();
-    
+
 
 }
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/ApplicationTenancyEvaluator.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/ApplicationTenancyEvaluator.java
index a149ef9..01128cd 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/ApplicationTenancyEvaluator.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/ApplicationTenancyEvaluator.java
@@ -26,6 +26,8 @@ import org.apache.isis.extensions.secman.api.user.ApplicationUser;
  * making the call (the "who").
  *
  * @see #handles(Class)
+ *
+ * @since 2.0 {@index}
  */
 public interface ApplicationTenancyEvaluator {
 
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/ApplicationTenancyRepository.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/ApplicationTenancyRepository.java
index 7bf17a7..7afbe7f 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/ApplicationTenancyRepository.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/ApplicationTenancyRepository.java
@@ -22,18 +22,21 @@ import java.util.Collection;
 
 import org.apache.isis.extensions.secman.api.user.ApplicationUser;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface ApplicationTenancyRepository<T extends ApplicationTenancy> {
 
     /**
-     * 
+     *
      * @return detached entity
      */
     T newApplicationTenancy();
-    
+
     Collection<T> allTenancies();
     Collection<T> getChildren(ApplicationTenancy tenancy);
     Collection<T> findByNameOrPathMatchingCached(String partialNameOrPath);
-    
+
     /**
      * auto-complete support
      * @param search
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/HasAtPath.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/HasAtPath.java
index 8a73c05..552ecf9 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/HasAtPath.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/HasAtPath.java
@@ -102,6 +102,8 @@ package org.apache.isis.extensions.secman.api.tenancy;
  * </table>
  * <p>any object that is not tenanted (that is, its class does not implement {@link HasAtPath the WithApplicationTenancy interface} is accessible by any user (usual permission rules apply).
  * </p>
+ *
+ * @since 2.0 {@index}
  */
 public interface HasAtPath {
 
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/AccountType.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/AccountType.java
index eeaea49..1fbe34f 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/AccountType.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/AccountType.java
@@ -21,8 +21,10 @@ package org.apache.isis.extensions.secman.api.user;
 import org.apache.isis.core.metamodel.commons.StringExtensions;
 
 /**
- * Whether the user's account is local enabled (user/password) or 
+ * Whether the user's account is local enabled (user/password) or
  * delegated (eg LDAP), as per {@link IsisModuleSecurityRealm#setDelegateAuthenticationRealm(org.apache.shiro.realm.AuthenticatingRealm)}.
+ *
+ * @since 2.0 {@index}
  */
 public enum AccountType {
     LOCAL,
@@ -31,11 +33,11 @@ public enum AccountType {
     public boolean isLocal() {
         return this==LOCAL;
     }
-    
+
     public boolean isDelegated() {
         return this==DELEGATED;
     }
-    
+
     @Override
     public String toString() {
         return StringExtensions.capitalize(name());
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUser.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUser.java
index d783b74..dc40a86 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUser.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUser.java
@@ -26,24 +26,26 @@ import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionVal
 import org.apache.isis.extensions.secman.api.role.ApplicationRole;
 import org.apache.isis.extensions.secman.api.tenancy.HasAtPath;
 
-
+/**
+ * @since 2.0 {@index}
+ */
 public interface ApplicationUser extends HasUsername, HasAtPath {
 
     // -- CONSTANTS
-    
+
     public static final int MAX_LENGTH_USERNAME = 30;
     public static final int MAX_LENGTH_FAMILY_NAME = 50;
     public static final int MAX_LENGTH_GIVEN_NAME = 50;
     public static final int MAX_LENGTH_KNOWN_AS = 20;
     public static final int MAX_LENGTH_EMAIL_ADDRESS = 50;
     public static final int MAX_LENGTH_PHONE_NUMBER = 25;
-    
-    // -- DOMAIN EVENTS 
-    
+
+    // -- DOMAIN EVENTS
+
     public static abstract class PropertyDomainEvent<T> extends IsisModuleExtSecmanApi.PropertyDomainEvent<ApplicationUser, T> {}
     public static abstract class CollectionDomainEvent<T> extends IsisModuleExtSecmanApi.CollectionDomainEvent<ApplicationUser, T> {}
     public static abstract class ActionDomainEvent extends IsisModuleExtSecmanApi.ActionDomainEvent<ApplicationUser> {}
-    
+
     public static class AddRoleDomainEvent extends ActionDomainEvent {}
     public static class UpdateAtPathDomainEvent extends ActionDomainEvent {}
     public static class UpdateUsernameDomainEvent extends ActionDomainEvent {}
@@ -63,7 +65,7 @@ public interface ApplicationUser extends HasUsername, HasAtPath {
     public static class UserDuplicateDomainEvent extends ActionDomainEvent {}
 
     // -- MODEL
-    
+
     /**
      * having a title() method (rather than using @Title annotation) is necessary as a workaround to be able to use
      * wrapperFactory#unwrap(...) method, which is otherwise broken in Isis 1.6.0
@@ -73,9 +75,9 @@ public interface ApplicationUser extends HasUsername, HasAtPath {
     }
 
     default String iconName() {
-        return getStatus().isEnabled() ? "enabled" : "disabled"; 
+        return getStatus().isEnabled() ? "enabled" : "disabled";
     }
-    
+
     String getName();
 
     String getEncryptedPassword();
@@ -111,13 +113,13 @@ public interface ApplicationUser extends HasUsername, HasAtPath {
     void setPhoneNumber(String phoneNumber);
 
     void setUsername(String username);
-    
+
     void setEncryptedPassword(String encryptedPassword);
 
     boolean isForSelfOrRunAsAdministrator();
 
     boolean isHasPassword();
-    
+
     default boolean isLocalAccount() {
         return getAccountType() == AccountType.LOCAL;
     }
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUserRepository.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUserRepository.java
index 2eb41ff..7d0b7cf 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUserRepository.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUserRepository.java
@@ -30,6 +30,9 @@ import org.apache.isis.extensions.secman.api.tenancy.ApplicationTenancy;
 
 import lombok.NonNull;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface ApplicationUserRepository<U extends ApplicationUser> {
 
     /**
@@ -45,7 +48,7 @@ public interface ApplicationUserRepository<U extends ApplicationUser> {
     Collection<U> findByAtPath(String atPath);
     Collection<U> findByRole(ApplicationRole role);
     Collection<U> findByTenancy(ApplicationTenancy tenancy);
-    
+
     /**
      * auto-complete support
      * @param search
@@ -59,11 +62,11 @@ public interface ApplicationUserRepository<U extends ApplicationUser> {
     boolean isPasswordFeatureEnabled(ApplicationUser holder);
 
     boolean updatePassword(ApplicationUser user, String password);
-    
+
     U newUser(String username, AccountType accountType, Consumer<U> beforePersist);
 
     default U newLocalUser(
-            @NonNull String username, 
+            @NonNull String username,
             @Nullable Password password,
             @NonNull ApplicationUserStatus status) {
 
@@ -88,7 +91,7 @@ public interface ApplicationUserRepository<U extends ApplicationUser> {
 
     }
 
-    
+
 
 
 }
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUserStatus.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUserStatus.java
index eaa706a..da794d6 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUserStatus.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUserStatus.java
@@ -22,6 +22,8 @@ import org.apache.isis.core.metamodel.commons.StringExtensions;
 
 /**
  * Whether the user's account is enabled or disabled.
+ *
+ * @since 2.0 {@index}
  */
 public enum ApplicationUserStatus {
     ENABLED,
diff --git a/extensions/security/secman/encryption-jbcrypt/src/main/java/org/apache/isis/extensions/secman/encryption/jbcrypt/IsisModuleExtSecmanEncryptionJbcrypt.java b/extensions/security/secman/encryption-jbcrypt/src/main/java/org/apache/isis/extensions/secman/encryption/jbcrypt/IsisModuleExtSecmanEncryptionJbcrypt.java
index d97f6a6..903c112 100644
--- a/extensions/security/secman/encryption-jbcrypt/src/main/java/org/apache/isis/extensions/secman/encryption/jbcrypt/IsisModuleExtSecmanEncryptionJbcrypt.java
+++ b/extensions/security/secman/encryption-jbcrypt/src/main/java/org/apache/isis/extensions/secman/encryption/jbcrypt/IsisModuleExtSecmanEncryptionJbcrypt.java
@@ -23,6 +23,9 @@ import org.springframework.context.annotation.Import;
 
 import org.apache.isis.extensions.secman.encryption.jbcrypt.services.PasswordEncryptionServiceUsingJBcrypt;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @Import({
     PasswordEncryptionServiceUsingJBcrypt.class
diff --git a/extensions/security/secman/encryption-jbcrypt/src/main/java/org/apache/isis/extensions/secman/encryption/jbcrypt/services/PasswordEncryptionServiceUsingJBcrypt.java b/extensions/security/secman/encryption-jbcrypt/src/main/java/org/apache/isis/extensions/secman/encryption/jbcrypt/services/PasswordEncryptionServiceUsingJBcrypt.java
index 4d81e0a..1ec9fab 100644
--- a/extensions/security/secman/encryption-jbcrypt/src/main/java/org/apache/isis/extensions/secman/encryption/jbcrypt/services/PasswordEncryptionServiceUsingJBcrypt.java
+++ b/extensions/security/secman/encryption-jbcrypt/src/main/java/org/apache/isis/extensions/secman/encryption/jbcrypt/services/PasswordEncryptionServiceUsingJBcrypt.java
@@ -28,6 +28,9 @@ import org.springframework.stereotype.Service;
 import org.apache.isis.applib.annotation.OrderPrecedence;
 import org.apache.isis.extensions.secman.api.encryption.PasswordEncryptionService;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isis.ext.secman.PasswordEncryptionServiceUsingJBcrypt")
 @Order(OrderPrecedence.MIDPOINT)
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/IsisModuleExtSecmanModel.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/IsisModuleExtSecmanModel.java
index c591c89..642daec 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/IsisModuleExtSecmanModel.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/IsisModuleExtSecmanModel.java
@@ -21,6 +21,9 @@ package org.apache.isis.extensions.secman.model;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @ComponentScan(
         basePackageClasses= {
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/app/user/MeService.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/app/user/MeService.java
index 3219ea9..e5c4f6d 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/app/user/MeService.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/app/user/MeService.java
@@ -35,6 +35,9 @@ import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
 import org.apache.isis.extensions.secman.api.user.ApplicationUser;
 import org.apache.isis.extensions.secman.api.user.ApplicationUserRepository;
 
+/**
+ * @since 2.0 {@index}
+ */
 @DomainService(
         nature = NatureOfService.VIEW,
         objectType = "isis.ext.secman.MeService"
@@ -51,7 +54,7 @@ public class MeService {
     @Inject private ApplicationUserRepository<? extends ApplicationUser> applicationUserRepository;
     @Inject private UserService userService;
     @Inject private javax.inject.Provider<QueryResultsCache> queryResultsCacheProvider;
-    
+
     // -- iconName
     public String iconName() {
         return "applicationUser";
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/IsisModuleExtSecmanPersistenceJdo.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/IsisModuleExtSecmanPersistenceJdo.java
index d98e1f2..148215d 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/IsisModuleExtSecmanPersistenceJdo.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/IsisModuleExtSecmanPersistenceJdo.java
@@ -21,6 +21,9 @@ package org.apache.isis.extensions.secman.jdo;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @ComponentScan(
         basePackageClasses= {
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/SeedSecurityModuleService.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/SeedSecurityModuleService.java
index dee96ee..9d6facb 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/SeedSecurityModuleService.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/SeedSecurityModuleService.java
@@ -32,6 +32,9 @@ import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
 
 import lombok.extern.log4j.Log4j2;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isis.ext.secman.SeedSecurityModuleService")
 @Order(OrderPrecedence.MIDPOINT)
@@ -56,9 +59,9 @@ public class SeedSecurityModuleService {
 
             fixtureScripts.run(new SeedUsersAndRolesFixtureScript());
         }
-        
+
     }
 
-    
+
 
 }
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/SeedUsersAndRolesFixtureScript.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/SeedUsersAndRolesFixtureScript.java
index de66e4f..25cb3f2 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/SeedUsersAndRolesFixtureScript.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/SeedUsersAndRolesFixtureScript.java
@@ -33,8 +33,10 @@ import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
  * This fixture script will be run automatically on start-up by virtue of the fact that the
  * {@link org.apache.isis.extensions.secman.jdo.seed.SeedSecurityModuleService} is a
  * {@link org.apache.isis.applib.annotation.DomainService} and calls the setup during its
- * {@link org.apache.isis.extensions.secman.jdo.seed.SeedSecurityModuleService#init() init} 
+ * {@link org.apache.isis.extensions.secman.jdo.seed.SeedSecurityModuleService#init() init}
  * ({@link javax.annotation.PostConstruct}) method.
+ *
+ * @since 2.0 {@index}
  */
 public class SeedUsersAndRolesFixtureScript extends FixtureScript {
 
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/GlobalTenancy.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/GlobalTenancy.java
index 9ded73b..53ce9a0 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/GlobalTenancy.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/GlobalTenancy.java
@@ -20,6 +20,9 @@ package org.apache.isis.extensions.secman.jdo.seed.scripts;
 
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class GlobalTenancy extends AbstractTenancyFixtureScript {
 
     public static final String TENANCY_NAME = "Global";
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.java
index 475ecbb..4bc5012 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.java
@@ -22,6 +22,9 @@ import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureResult;
 import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionMode;
 import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRule;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class IsisExtFixturesFixtureResultsRoleAndPermissions extends AbstractRoleAndPermissionsFixtureScript {
 
     public static final String ROLE_NAME = "isis-ext-fixtures-fixtureresults";
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtSecmanAdminRoleAndPermissions.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtSecmanAdminRoleAndPermissions.java
index 43c90c3..3285d50 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtSecmanAdminRoleAndPermissions.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtSecmanAdminRoleAndPermissions.java
@@ -23,6 +23,9 @@ import org.apache.isis.extensions.secman.api.SecmanConfiguration;
 import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionMode;
 import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRule;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class IsisExtSecmanAdminRoleAndPermissions extends AbstractRoleAndPermissionsFixtureScript {
 
     private String[] adminInitialPackagePermissions;
@@ -40,5 +43,5 @@ public class IsisExtSecmanAdminRoleAndPermissions extends AbstractRoleAndPermiss
                 ApplicationPermissionMode.CHANGING,
                 adminInitialPackagePermissions);
     }
-    
+
 }
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtSecmanAdminUser.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtSecmanAdminUser.java
index 9dd98d5..73f5ddb 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtSecmanAdminUser.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtSecmanAdminUser.java
@@ -23,14 +23,17 @@ import java.util.Arrays;
 import org.apache.isis.extensions.secman.api.SecmanConfiguration;
 import org.apache.isis.extensions.secman.api.user.AccountType;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class IsisExtSecmanAdminUser extends AbstractUserAndRolesFixtureScript {
 
     public IsisExtSecmanAdminUser(SecmanConfiguration configBean) {
         super(
-                configBean.getAdminUserName(), 
+                configBean.getAdminUserName(),
                 configBean.getAdminPassword(),
                 null,
-                GlobalTenancy.TENANCY_PATH, 
+                GlobalTenancy.TENANCY_PATH,
                 AccountType.LOCAL,
                 Arrays.asList(configBean.getAdminRoleName()));
     }
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtSecmanFixtureRoleAndPermissions.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtSecmanFixtureRoleAndPermissions.java
index a8d5564..8bf6a6f 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtSecmanFixtureRoleAndPermissions.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtSecmanFixtureRoleAndPermissions.java
@@ -24,6 +24,8 @@ import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRul
 
 /**
  * Role to run in the prototype fixture scripts for the example webapp for the security module.
+ *
+ * @since 2.0 {@index}
  */
 public class IsisExtSecmanFixtureRoleAndPermissions extends AbstractRoleAndPermissionsFixtureScript {
 
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.java
index 450536e..70e84f3 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.java
@@ -29,6 +29,8 @@ import org.apache.isis.extensions.secman.model.app.user.MeService;
 /**
  * Role for regular users of the security module, providing the ability to lookup their user account using the
  * {@link org.apache.isis.extensions.secman.model.app.user.MeService}, and for viewing and maintaining their user details.
+ *
+ * @since 2.0 {@index}
  */
 public class IsisExtSecmanRegularUserRoleAndPermissions extends AbstractRoleAndPermissionsFixtureScript {
 
@@ -50,7 +52,7 @@ public class IsisExtSecmanRegularUserRoleAndPermissions extends AbstractRoleAndP
                 ApplicationPermissionMode.CHANGING,
                 MeService.class,
                 "me");
-        
+
         newClassPermissions(
                 ApplicationPermissionRule.ALLOW,
                 ApplicationPermissionMode.VIEWING,
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/IsisModuleExtSecmanPersistenceJpa.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/IsisModuleExtSecmanPersistenceJpa.java
index 2840157..6fe1ec0 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/IsisModuleExtSecmanPersistenceJpa.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/IsisModuleExtSecmanPersistenceJpa.java
@@ -32,6 +32,9 @@ import org.apache.isis.extensions.secman.jpa.dom.user.ApplicationUser;
 import org.apache.isis.extensions.secman.jpa.dom.user.ApplicationUserRepository;
 import org.apache.isis.extensions.secman.jpa.seed.SeedSecurityModuleService;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @Import({
     ApplicationPermissionRepository.class,
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/SeedSecurityModuleService.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/SeedSecurityModuleService.java
index 075cca6..e499406 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/SeedSecurityModuleService.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/SeedSecurityModuleService.java
@@ -32,6 +32,9 @@ import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
 
 import lombok.extern.log4j.Log4j2;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isis.ext.secman.SeedSecurityModuleService")
 @Order(OrderPrecedence.MIDPOINT)
@@ -56,9 +59,9 @@ public class SeedSecurityModuleService {
 
             fixtureScripts.run(new SeedUsersAndRolesFixtureScript());
         }
-        
+
     }
 
-    
+
 
 }
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/SeedUsersAndRolesFixtureScript.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/SeedUsersAndRolesFixtureScript.java
index c862a64..9e5583d 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/SeedUsersAndRolesFixtureScript.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/SeedUsersAndRolesFixtureScript.java
@@ -33,8 +33,10 @@ import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
  * This fixture script will be run automatically on start-up by virtue of the fact that the
  * {@link org.apache.isis.extensions.secman.jpa.seed.SeedSecurityModuleService} is a
  * {@link org.apache.isis.applib.annotation.DomainService} and calls the setup during its
- * {@link org.apache.isis.extensions.secman.jpa.seed.SeedSecurityModuleService#init() init} 
+ * {@link org.apache.isis.extensions.secman.jpa.seed.SeedSecurityModuleService#init() init}
  * ({@link javax.annotation.PostConstruct}) method.
+ *
+ * @since 2.0 {@index}
  */
 public class SeedUsersAndRolesFixtureScript extends FixtureScript {
 
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/GlobalTenancy.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/GlobalTenancy.java
index 6e636d5..5a2a54a0 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/GlobalTenancy.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/GlobalTenancy.java
@@ -20,6 +20,9 @@ package org.apache.isis.extensions.secman.jpa.seed.scripts;
 
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class GlobalTenancy extends AbstractTenancyFixtureScript {
 
     public static final String TENANCY_NAME = "Global";
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.java
index 7bbcf4d..35c6934 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.java
@@ -22,6 +22,9 @@ import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureResult;
 import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionMode;
 import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRule;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class IsisExtFixturesFixtureResultsRoleAndPermissions extends AbstractRoleAndPermissionsFixtureScript {
 
     public static final String ROLE_NAME = "isis-ext-fixtures-fixtureresults";
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtSecmanAdminRoleAndPermissions.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtSecmanAdminRoleAndPermissions.java
index d2cbbfc..fd80466 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtSecmanAdminRoleAndPermissions.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtSecmanAdminRoleAndPermissions.java
@@ -23,6 +23,9 @@ import org.apache.isis.extensions.secman.api.SecmanConfiguration;
 import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionMode;
 import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRule;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class IsisExtSecmanAdminRoleAndPermissions extends AbstractRoleAndPermissionsFixtureScript {
 
     private String[] adminInitialPackagePermissions;
@@ -40,5 +43,5 @@ public class IsisExtSecmanAdminRoleAndPermissions extends AbstractRoleAndPermiss
                 ApplicationPermissionMode.CHANGING,
                 adminInitialPackagePermissions);
     }
-    
+
 }
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtSecmanAdminUser.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtSecmanAdminUser.java
index 3e7cf6b..2fdcf6c 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtSecmanAdminUser.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtSecmanAdminUser.java
@@ -23,14 +23,17 @@ import java.util.Arrays;
 import org.apache.isis.extensions.secman.api.SecmanConfiguration;
 import org.apache.isis.extensions.secman.api.user.AccountType;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class IsisExtSecmanAdminUser extends AbstractUserAndRolesFixtureScript {
 
     public IsisExtSecmanAdminUser(SecmanConfiguration configBean) {
         super(
-                configBean.getAdminUserName(), 
+                configBean.getAdminUserName(),
                 configBean.getAdminPassword(),
                 null,
-                GlobalTenancy.TENANCY_PATH, 
+                GlobalTenancy.TENANCY_PATH,
                 AccountType.LOCAL,
                 Arrays.asList(configBean.getAdminRoleName()));
     }
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtSecmanFixtureRoleAndPermissions.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtSecmanFixtureRoleAndPermissions.java
index 0045210..08092b2 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtSecmanFixtureRoleAndPermissions.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtSecmanFixtureRoleAndPermissions.java
@@ -24,6 +24,8 @@ import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRul
 
 /**
  * Role to run in the prototype fixture scripts for the example webapp for the security module.
+ *
+ * @since 2.0 {@index}
  */
 public class IsisExtSecmanFixtureRoleAndPermissions extends AbstractRoleAndPermissionsFixtureScript {
 
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.java
index ae5ff2d..d9a12f5 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.java
@@ -29,6 +29,8 @@ import org.apache.isis.extensions.secman.model.app.user.MeService;
 /**
  * Role for regular users of the security module, providing the ability to lookup their user account using the
  * {@link org.apache.isis.extensions.secman.model.app.user.MeService}, and for viewing and maintaining their user details.
+ *
+ * @since 2.0 {@index}
  */
 public class IsisExtSecmanRegularUserRoleAndPermissions extends AbstractRoleAndPermissionsFixtureScript {
 
@@ -44,7 +46,7 @@ public class IsisExtSecmanRegularUserRoleAndPermissions extends AbstractRoleAndP
                 ApplicationPermissionMode.CHANGING,
                 LogoutMenu.class,
                 "logout");
-        
+
         newMemberPermissions(
                 ApplicationPermissionRule.ALLOW,
                 ApplicationPermissionMode.CHANGING,
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/userreg/SecurityModuleAppUserRegistrationServiceAbstract.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/userreg/SecurityModuleAppUserRegistrationServiceAbstract.java
index 22a5158..2fa7ee3 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/userreg/SecurityModuleAppUserRegistrationServiceAbstract.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/userreg/SecurityModuleAppUserRegistrationServiceAbstract.java
@@ -35,12 +35,14 @@ import org.apache.isis.extensions.secman.jpa.dom.user.ApplicationUserRepository;
 /**
  * An abstract implementation of {@link org.apache.isis.applib.services.userreg.UserRegistrationService}
  * with a single abstract method for the initial role of newly created local users
+ *
+ * @since 2.0 {@index}
  */
 public abstract class SecurityModuleAppUserRegistrationServiceAbstract implements UserRegistrationService {
 
     @Inject private ApplicationUserRepository applicationUserRepository;
     @Inject private ApplicationRoleRepository applicationRoleRepository;
-    
+
     @Override
     public boolean usernameExists(final String username) {
         return applicationUserRepository.findByUsername(username).isPresent();
@@ -52,19 +54,19 @@ public abstract class SecurityModuleAppUserRegistrationServiceAbstract implement
 
         final Password password = new Password(userDetails.getPassword());
         final ApplicationRole initialRole = getInitialRole();
-        
+
         final String username = userDetails.getUsername();
         final String emailAddress = userDetails.getEmailAddress();
         final ApplicationUser applicationUser = (ApplicationUser) applicationUserRepository
                 .newLocalUser(username, password, ApplicationUserStatus.ENABLED);
-        
+
         if(_Strings.isNotEmpty(emailAddress)) {
             applicationUser.setEmailAddress(emailAddress);
         }
         if(initialRole!=null) {
             applicationRoleRepository.addRoleToUser(initialRole, applicationUser);
         }
-        
+
         final Set<ApplicationRole> additionalRoles = getAdditionalInitialRoles();
         if(additionalRoles != null) {
             for (final ApplicationRole additionalRole : additionalRoles) {
@@ -99,5 +101,5 @@ public abstract class SecurityModuleAppUserRegistrationServiceAbstract implement
      * @return Additional roles for newly created local users
      */
     protected abstract Set<ApplicationRole> getAdditionalInitialRoles();
-    
+
 }
diff --git a/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/IsisModuleExtSecmanRealmShiro.java b/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/IsisModuleExtSecmanRealmShiro.java
index 476b831..f4f796b 100644
--- a/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/IsisModuleExtSecmanRealmShiro.java
+++ b/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/IsisModuleExtSecmanRealmShiro.java
@@ -23,6 +23,9 @@ import org.springframework.context.annotation.Import;
 
 import org.apache.isis.extensions.secman.shiro.services.SecurityRealmServiceUsingShiro;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @Import({
     SecurityRealmServiceUsingShiro.class
diff --git a/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/IsisModuleExtSecmanShiroRealm.java b/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/IsisModuleExtSecmanShiroRealm.java
index 350a309..b023bfd 100644
--- a/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/IsisModuleExtSecmanShiroRealm.java
+++ b/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/IsisModuleExtSecmanShiroRealm.java
@@ -58,6 +58,9 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.val;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class IsisModuleExtSecmanShiroRealm extends AuthorizingRealm implements SecurityRealm {
 
     private static final String SECMAN_ENABLE_DELEGATED_USERS = "isis.ext.secman.enableDelegatedUsers";
@@ -66,7 +69,7 @@ public class IsisModuleExtSecmanShiroRealm extends AuthorizingRealm implements S
     @Inject protected PlatformTransactionManager txMan;
     @Inject private SecmanConfiguration configBean;
 	@Inject protected IsisConfiguration isisConfiguration;
-    
+
     @Getter @Setter private AuthenticatingRealm delegateAuthenticationRealm;
     @Getter @Setter private boolean autoCreateUser = true;
 
@@ -94,11 +97,11 @@ public class IsisModuleExtSecmanShiroRealm extends AuthorizingRealm implements S
         val usernamePasswordToken = (UsernamePasswordToken) token;
         val username = usernamePasswordToken.getUsername();
         val password = usernamePasswordToken.getPassword();
-        
+
 
         // this code block is just an optimization, entirely optional
         {
-            val alreadyAuthenticatedPrincipal = 
+            val alreadyAuthenticatedPrincipal =
                     getPrincipal_fromAlreadyAuthenticatedSubjectIfApplicable(token);
             if(alreadyAuthenticatedPrincipal!=null) {
                 val credentials = token.getCredentials();
@@ -106,20 +109,20 @@ public class IsisModuleExtSecmanShiroRealm extends AuthorizingRealm implements S
                 return AuthInfoForApplicationUser.of(alreadyAuthenticatedPrincipal, realmName, credentials);
             }
         }
-        
+
         // lookup from database, for roles/perms
         PrincipalForApplicationUser principal = lookupPrincipal_inApplicationUserRepository(username);
 
         val autoCreateUserWhenDelegatedAuthentication = hasDelegateAuthenticationRealm() && isAutoCreateUser();
         if (principal == null && autoCreateUserWhenDelegatedAuthentication) {
-            // When using delegated authentication, desired behavior is to auto-create user accounts in the 
+            // When using delegated authentication, desired behavior is to auto-create user accounts in the
             // DB only if these do successfully authenticate with the delegated authentication mechanism
             // while the newly created user will be disabled by default
             authenticateElseThrow_usingDelegatedMechanism(token);
             val newPrincipal = createPrincipal_inApplicationUserRepository(username);
 
             _Assert.assertNotNull(newPrincipal);
-            
+
             if(configBean.isAutoEnableIfDelegatedAndAuthenticated()) {
                 principal = newPrincipal;
             } else {
@@ -171,24 +174,24 @@ public class IsisModuleExtSecmanShiroRealm extends AuthorizingRealm implements S
     }
 
     // -- HELPER
-    
+
     /**
      * @implNote
      * This is just an optimization, entirely optional.
      * <p>
-     * We reuse principal information on subjects that are already authenticated, 
+     * We reuse principal information on subjects that are already authenticated,
      * provided we are in a single realm authentication scenario.
      * @param token
      * @return {@code null} if not applicable
      */
     private PrincipalForApplicationUser getPrincipal_fromAlreadyAuthenticatedSubjectIfApplicable(
             AuthenticationToken token) {
-        
+
         // this optimization is only implemented for the simple case of a single realm setup
         if(!ShiroUtils.isSingleRealm()) {
-            return null;   
+            return null;
         }
-        
+
         val currentSubject = SecurityUtils.getSubject();
         if(currentSubject!=null && currentSubject.isAuthenticated()) {
             val authenticatedPrincipalObject = currentSubject.getPrincipal();
@@ -219,7 +222,7 @@ public class IsisModuleExtSecmanShiroRealm extends AuthorizingRealm implements S
                 return _NullSafe.size(fullStackTrace)>1
                         ? _Arrays.subArray(super.getStackTrace(), 0, 1)
                         : fullStackTrace;
-            }            
+            }
         };
     }
 
diff --git a/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/services/SecurityRealmServiceUsingShiro.java b/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/services/SecurityRealmServiceUsingShiro.java
index 3fe9c94..40fc0d2 100644
--- a/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/services/SecurityRealmServiceUsingShiro.java
+++ b/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/services/SecurityRealmServiceUsingShiro.java
@@ -33,12 +33,15 @@ import org.apache.isis.extensions.secman.shiro.util.ShiroUtils;
 
 import lombok.val;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isis.ext.secman.SecurityRealmServiceUsingShiro")
 @Order(OrderPrecedence.MIDPOINT)
 @Qualifier("Shiro")
 public class SecurityRealmServiceUsingShiro implements SecurityRealmService {
-    
+
     @Inject private ServiceInjector serviceInjector;
 
     @Override
diff --git a/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/util/ShiroUtils.java b/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/util/ShiroUtils.java
index dbaede2..7100675 100644
--- a/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/util/ShiroUtils.java
+++ b/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/util/ShiroUtils.java
@@ -30,6 +30,9 @@ import org.apache.isis.extensions.secman.shiro.IsisModuleExtSecmanShiroRealm;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public class ShiroUtils {
 
@@ -62,5 +65,5 @@ public class ShiroUtils {
         final RealmSecurityManager securityManager = getSecurityManager();
         return securityManager.getRealms().size() == 1;
     }
-    
+
 }
diff --git a/extensions/security/shiro-realm-ldap/impl/src/main/java/org/apache/isis/extensions/shirorealmldap/realm/impl/IsisLdapContextFactory.java b/extensions/security/shiro-realm-ldap/impl/src/main/java/org/apache/isis/extensions/shirorealmldap/realm/impl/IsisLdapContextFactory.java
index 226cc52..8b641de 100644
--- a/extensions/security/shiro-realm-ldap/impl/src/main/java/org/apache/isis/extensions/shirorealmldap/realm/impl/IsisLdapContextFactory.java
+++ b/extensions/security/shiro-realm-ldap/impl/src/main/java/org/apache/isis/extensions/shirorealmldap/realm/impl/IsisLdapContextFactory.java
@@ -33,6 +33,8 @@ import org.apache.shiro.realm.ldap.JndiLdapContextFactory;
  *
  * <p>
  * See {@link IsisLdapRealm} for typical configuration within <tt>shiro.ini</tt>.
+ *
+ * @since 1.x {@index}
  */
 public class IsisLdapContextFactory extends JndiLdapContextFactory {
 
diff --git a/extensions/security/shiro-realm-ldap/impl/src/main/java/org/apache/isis/extensions/shirorealmldap/realm/impl/IsisLdapRealm.java b/extensions/security/shiro-realm-ldap/impl/src/main/java/org/apache/isis/extensions/shirorealmldap/realm/impl/IsisLdapRealm.java
index 0ff708b..9adda95 100644
--- a/extensions/security/shiro-realm-ldap/impl/src/main/java/org/apache/isis/extensions/shirorealmldap/realm/impl/IsisLdapRealm.java
+++ b/extensions/security/shiro-realm-ldap/impl/src/main/java/org/apache/isis/extensions/shirorealmldap/realm/impl/IsisLdapRealm.java
@@ -133,6 +133,8 @@ import static org.apache.isis.commons.internal.base._NullSafe.stream;
  * See the sample for group and user attribute and mapping.
  * <p/>
  * </p>
+ *
+ * @since 1.x {@index}
  */
 public class IsisLdapRealm extends DefaultLdapRealm {
 
diff --git a/extensions/security/shiro-realm-ldap/impl/src/main/java/org/apache/isis/extensions/shirorealmldap/realm/impl/IsisModuleExtShiroRealmLdapImpl.java b/extensions/security/shiro-realm-ldap/impl/src/main/java/org/apache/isis/extensions/shirorealmldap/realm/impl/IsisModuleExtShiroRealmLdapImpl.java
index 6537f27..27b6d9d 100644
--- a/extensions/security/shiro-realm-ldap/impl/src/main/java/org/apache/isis/extensions/shirorealmldap/realm/impl/IsisModuleExtShiroRealmLdapImpl.java
+++ b/extensions/security/shiro-realm-ldap/impl/src/main/java/org/apache/isis/extensions/shirorealmldap/realm/impl/IsisModuleExtShiroRealmLdapImpl.java
@@ -24,6 +24,9 @@ import org.springframework.context.annotation.Import;
 import org.apache.isis.security.shiro.IsisModuleSecurityShiro;
 
 
+/**
+ * @since 1.x {@index}
+ */
 @Configuration
 @Import({
         // modules
diff --git a/extensions/vro/cors/impl/src/main/java/org/apache/isis/extensions/cors/impl/IsisModuleExtCorsImpl.java b/extensions/vro/cors/impl/src/main/java/org/apache/isis/extensions/cors/impl/IsisModuleExtCorsImpl.java
index bc8e6e8..76df208 100644
--- a/extensions/vro/cors/impl/src/main/java/org/apache/isis/extensions/cors/impl/IsisModuleExtCorsImpl.java
+++ b/extensions/vro/cors/impl/src/main/java/org/apache/isis/extensions/cors/impl/IsisModuleExtCorsImpl.java
@@ -38,19 +38,22 @@ import org.apache.isis.core.config.IsisConfiguration;
 import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @Named("isis.ext.cors.WebModuleServerCors")
 @Qualifier("CORS")
 @Log4j2
 public class IsisModuleExtCorsImpl {
-    
+
     @Bean
     public FilterRegistrationBean<Filter> createCorsFilterRegistration(IsisConfiguration configuration) {
 
         final Map<String, String> cfgMap = configuration.getAsMap();
         final String resteasyBase = cfgMap.getOrDefault("resteasy.jaxrs.defaultPath", "/restful/*");
-        log.info("Setting up CORS to filter resteasy-base at '{}' with {}", 
-                resteasyBase, 
+        log.info("Setting up CORS to filter resteasy-base at '{}' with {}",
+                resteasyBase,
                 configuration.getExtensions().getCors());
 
         final FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<>();
@@ -61,21 +64,21 @@ public class IsisModuleExtCorsImpl {
     }
 
     private CorsFilter createCorsFilter(IsisConfiguration configuration) {
-        
+
         val isisCorsConfig = configuration.getExtensions().getCors();
-        
+
         val corsConfiguration = new CorsConfiguration();
         corsConfiguration.setAllowCredentials(isisCorsConfig.isAllowCredentials());
         corsConfiguration.setAllowedHeaders(isisCorsConfig.getAllowedHeaders());
         corsConfiguration.setAllowedMethods(isisCorsConfig.getAllowedMethods());
         corsConfiguration.setAllowedOrigins(isisCorsConfig.getAllowedOrigins());
         corsConfiguration.setExposedHeaders(isisCorsConfig.getExposedHeaders());
-        
+
         val source = new UrlBasedCorsConfigurationSource();
         source.registerCorsConfiguration("/**", corsConfiguration);
-        
+
         return new CorsFilter(source);
     }
-    
+
 
 }
diff --git a/extensions/vw/exceldownload/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/exceldownload/ui/IsisModuleExtExcelDownloadUi.java b/extensions/vw/exceldownload/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/exceldownload/ui/IsisModuleExtExcelDownloadUi.java
index a393815..b33b682 100644
--- a/extensions/vw/exceldownload/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/exceldownload/ui/IsisModuleExtExcelDownloadUi.java
+++ b/extensions/vw/exceldownload/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/exceldownload/ui/IsisModuleExtExcelDownloadUi.java
@@ -23,6 +23,9 @@ import org.springframework.context.annotation.Import;
 
 import org.apache.isis.extensions.viewer.wicket.exceldownload.ui.components.CollectionContentsAsExcelFactory;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @Import({
         // @Component's
diff --git a/extensions/vw/exceldownload/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/exceldownload/ui/components/CollectionContentsAsExcel.java b/extensions/vw/exceldownload/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/exceldownload/ui/components/CollectionContentsAsExcel.java
index cdebca1..ce357da 100644
--- a/extensions/vw/exceldownload/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/exceldownload/ui/components/CollectionContentsAsExcel.java
+++ b/extensions/vw/exceldownload/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/exceldownload/ui/components/CollectionContentsAsExcel.java
@@ -34,6 +34,8 @@ import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel
 /**
  * {@link PanelAbstract Panel} that represents a {@link EntityCollectionModel
  * collection of entity}s rendered using {@link AjaxFallbackDefaultDataTable}.
+ *
+ * @since 2.0 {@index}
  */
 public class CollectionContentsAsExcel extends PanelAbstract<EntityCollectionModel> {
 
diff --git a/extensions/vw/exceldownload/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/exceldownload/ui/components/CollectionContentsAsExcelFactory.java b/extensions/vw/exceldownload/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/exceldownload/ui/components/CollectionContentsAsExcelFactory.java
index b892e65..405d4ad 100644
--- a/extensions/vw/exceldownload/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/exceldownload/ui/components/CollectionContentsAsExcelFactory.java
+++ b/extensions/vw/exceldownload/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/exceldownload/ui/components/CollectionContentsAsExcelFactory.java
@@ -30,10 +30,12 @@ import org.apache.isis.viewer.wicket.ui.ComponentType;
 
 /**
  * {@link ComponentFactory} for {@link CollectionContentsAsExcel}.
+ *
+ * @since 2.0 {@index}
  */
 @org.springframework.stereotype.Component
-public class CollectionContentsAsExcelFactory 
-extends ComponentFactoryAbstract 
+public class CollectionContentsAsExcelFactory
+extends ComponentFactoryAbstract
 implements CollectionContentsAsFactory {
 
     private static final long serialVersionUID = 1L;
diff --git a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/CalendarEventable.java b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/CalendarEventable.java
index 76cdf76..9002746 100644
--- a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/CalendarEventable.java
+++ b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/CalendarEventable.java
@@ -24,6 +24,9 @@ import org.apache.isis.extensions.fullcalendar.applib.value.CalendarEvent;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface CalendarEventable {
 
     /**
diff --git a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/Calendarable.java b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/Calendarable.java
index c10ce81..ee1baf0 100644
--- a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/Calendarable.java
+++ b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/Calendarable.java
@@ -21,25 +21,28 @@ package org.apache.isis.extensions.fullcalendar.applib;
 import java.util.Map;
 import java.util.Set;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface Calendarable {
 
     /**
      * The names of unique &quot;calendar&quot;s provided by this object.
-     * 
+     *
      * <p>
      * The &quot;calendar&quot; is a string identifier that indicates the nature of this event.
-     * 
+     *
      * <p>
      * For example, an event of a lease's <code>FixedBreakOption</code> has three dates: the <i>break date</i>,
-     * the <i>exercise date</i> and the <i>reminder date</i>.  These therefore correspond to three different 
-     * calendar names, respectively <i>Fixed break</i>, <i>Fixed break exercise</i> and 
+     * the <i>exercise date</i> and the <i>reminder date</i>.  These therefore correspond to three different
+     * calendar names, respectively <i>Fixed break</i>, <i>Fixed break exercise</i> and
      * <i>Fixed break exercise reminder</i>.
      */
     Set<String> getCalendarNames();
-    
+
     /**
      * The events associated with this object, keyed by their corresponding {@link #getCalendarNames() calendar name}.
      */
 	Map<String, CalendarEventable> getCalendarEvents();
-	
+
 }
diff --git a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/IsisModuleExtFullCalendarApplib.java b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/IsisModuleExtFullCalendarApplib.java
index c393ecb..7a23c6b 100644
--- a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/IsisModuleExtFullCalendarApplib.java
+++ b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/IsisModuleExtFullCalendarApplib.java
@@ -20,6 +20,9 @@ package org.apache.isis.extensions.fullcalendar.applib;
 
 import org.springframework.context.annotation.Configuration;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 public class IsisModuleExtFullCalendarApplib {
 }
diff --git a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/spi/CalendarableDereferencingService.java b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/spi/CalendarableDereferencingService.java
index ff65e2c..ed9906c 100644
--- a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/spi/CalendarableDereferencingService.java
+++ b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/spi/CalendarableDereferencingService.java
@@ -30,6 +30,7 @@ import org.apache.isis.extensions.fullcalendar.applib.Calendarable;
  *     <tt>Note</tt> (ie the <tt>Notable</tt>) sto be shown instead.
  * </p>
  *
+ * @since 2.0 {@index}
  */
 public interface CalendarableDereferencingService {
 	Object dereference(final Object calendarableOrCalendarEventable);
diff --git a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEvent.java b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEvent.java
index 2ee040d..92f2970 100644
--- a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEvent.java
+++ b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEvent.java
@@ -28,19 +28,21 @@ import org.apache.isis.applib.util.ObjectContracts.ObjectContract;
 
 /**
  * Value type representing an event on a calendar.
+ *
+ * @since 2.0 {@index}
  */
 @Value(semanticsProviderClass=CalendarEventSemanticsProvider.class)
 public class CalendarEvent implements Serializable {
 
     private static final long serialVersionUID = 1L;
-    
+
 	static final CalendarEvent DEFAULT_VALUE = null; // no default
-	
+
     private final DateTime dateTime;
     private final String calendarName;
     private final String title;
     private final String notes;
-	
+
 	public CalendarEvent(final DateTime dateTime, final String calendarName, final String title) {
         this(dateTime, calendarName, title, null);
 	}
@@ -55,41 +57,41 @@ public class CalendarEvent implements Serializable {
     public DateTime getDateTime() {
         return dateTime;
     }
-    
+
     public String getCalendarName() {
         return calendarName;
     }
-    
+
     public String getTitle() {
         return title;
     }
-    
+
     public String getNotes() {
         return notes;
     }
-   
+
 	public CalendarEvent withDateTime(final DateTime date) {
 		return new CalendarEvent(date, this.calendarName, this.title, this.notes);
 	}
-	
+
 	public CalendarEvent withCalendarName(final String calendarName) {
 	    return new CalendarEvent(this.dateTime, calendarName, this.title, this.notes);
 	}
-	
+
 	public CalendarEvent withTitle(final String title) {
 	    return new CalendarEvent(this.dateTime, this.calendarName, title, this.notes);
 	}
-	
+
 	public CalendarEvent withNotes(final String notes) {
 	    return new CalendarEvent(this.dateTime, this.calendarName, this.title, notes);
 	}
 
-	private static final ObjectContract<CalendarEvent> objectContract = 
+	private static final ObjectContract<CalendarEvent> objectContract =
 	    ObjectContracts.contract(CalendarEvent.class)
 	    .thenUse("dateTime", CalendarEvent::getDateTime)
 	    .thenUse("calendarName", CalendarEvent::getCalendarName);
-	
-	
+
+
 	@Override
     public int hashCode() {
 	    return objectContract.hashCode(this);
@@ -104,7 +106,7 @@ public class CalendarEvent implements Serializable {
     public String toString() {
         return objectContract.toString(this);
     }
-    
+
     public static int typicalLength() {
 		return 30;
 	}
diff --git a/extensions/vw/fullcalendar/ui/src/main/java/org/apache/isis/extensions/fullcalendar/ui/component/IsisModuleExtFullCalendarUi.java b/extensions/vw/fullcalendar/ui/src/main/java/org/apache/isis/extensions/fullcalendar/ui/component/IsisModuleExtFullCalendarUi.java
index 0f721e0..8fdeb63 100644
--- a/extensions/vw/fullcalendar/ui/src/main/java/org/apache/isis/extensions/fullcalendar/ui/component/IsisModuleExtFullCalendarUi.java
+++ b/extensions/vw/fullcalendar/ui/src/main/java/org/apache/isis/extensions/fullcalendar/ui/component/IsisModuleExtFullCalendarUi.java
@@ -23,6 +23,9 @@ import org.springframework.context.annotation.Import;
 
 import org.apache.isis.extensions.fullcalendar.applib.IsisModuleExtFullCalendarApplib;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @Import({
         IsisModuleExtFullCalendarApplib.class
diff --git a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/annotations/PdfJsViewer.java b/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/annotations/PdfJsViewer.java
index 4f1df63..f5534d4 100644
--- a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/annotations/PdfJsViewer.java
+++ b/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/annotations/PdfJsViewer.java
@@ -29,6 +29,8 @@ import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.config.Scale;
  * An annotation that could be applied on a property or parameter
  * of type {@link org.apache.isis.applib.value.Blob}. Such property/parameter will be visualized
  * with <a href="https://github.com/mozilla/pdf.js">PDF.js</a> viewer.
+ *
+ * @since 2.0 {@index}
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Target(value = {ElementType.METHOD, ElementType.FIELD})
diff --git a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/PdfJsConfig.java b/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/PdfJsConfig.java
index fc7dfcd..c8e6507 100644
--- a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/PdfJsConfig.java
+++ b/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/PdfJsConfig.java
@@ -24,6 +24,9 @@ import de.agilecoders.wicket.jquery.AbstractConfig;
 import de.agilecoders.wicket.jquery.IKey;
 import de.agilecoders.wicket.jquery.Key;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class PdfJsConfig extends AbstractConfig {
 
     private static final IKey<Integer> INITIAL_PAGE = new Key<>("initialPage", 1);
diff --git a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/Scale.java b/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/Scale.java
index fb8204b..7c57e2b 100644
--- a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/Scale.java
+++ b/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/Scale.java
@@ -20,6 +20,9 @@ package org.apache.isis.extensions.viewer.wicket.pdfjs.applib.config;
 
 import org.apache.wicket.util.lang.Objects;
 
+/**
+ * @since 2.0 {@index}
+ */
 public enum Scale {
     AUTOMATIC("auto"),
     ACTUAL_SIZE("page-actual"),
diff --git a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/spi/PdfJsViewerAdvisor.java b/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/spi/PdfJsViewerAdvisor.java
index 33b54c4..67765e3 100644
--- a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/spi/PdfJsViewerAdvisor.java
+++ b/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/spi/PdfJsViewerAdvisor.java
@@ -27,6 +27,8 @@ import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.config.Scale;
 
 /**
  * SPI service interface.
+ *
+ * @since 2.0 {@index}
  */
 public interface PdfJsViewerAdvisor {
 
@@ -49,7 +51,7 @@ public interface PdfJsViewerAdvisor {
     class InstanceKey implements Serializable {
 
         private static final long serialVersionUID = 1L;
-        
+
         private final TypeKey typeKey;
         private final String identifier;
 
@@ -124,7 +126,7 @@ public interface PdfJsViewerAdvisor {
         public static class TypeKey implements Serializable {
 
             private static final long serialVersionUID = 1L;
-            
+
             private final String objectType;
             private final String propertyId;
             private final String userName;
@@ -206,7 +208,7 @@ public interface PdfJsViewerAdvisor {
     class Advice implements Serializable {
 
         private static final long serialVersionUID = 1L;
-        
+
         private final Integer pageNum;
         private final TypeAdvice typeAdvice;
 
@@ -271,7 +273,7 @@ public interface PdfJsViewerAdvisor {
         public static class TypeAdvice implements Serializable {
 
             private static final long serialVersionUID = 1L;
-            
+
             private final Scale scale;
             private final Integer height;
 
diff --git a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/IsisModuleExtPdfjsUi.java b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/IsisModuleExtPdfjsUi.java
index 53ea359..c24bccb 100644
--- a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/IsisModuleExtPdfjsUi.java
+++ b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/IsisModuleExtPdfjsUi.java
@@ -24,6 +24,9 @@ import org.springframework.context.annotation.Import;
 import org.apache.isis.extensions.viewer.wicket.pdfjs.metamodel.IsisModuleExtPdfjsMetaModel;
 import org.apache.isis.extensions.viewer.wicket.pdfjs.ui.components.PdfJsViewerPanelComponentFactory;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @Import({
         // modules
diff --git a/isis-tooling.yml b/isis-tooling.yml
index 356bc14..183c13a 100644
--- a/isis-tooling.yml
+++ b/isis-tooling.yml
@@ -59,7 +59,7 @@ global:
     Extensions: org.apache.isis.extensions
     "Core: Command Log": "org.apache.isis.extensions:isis-extensions-command-log.*"
     "Core: Command Replay": "org.apache.isis.extensions:isis-extensions-command-replay.*"
-    "Core: Flyway": "org.apache.isis.extensions:isis-extensions-flyway.*"
+    #"Core: Flyway": "org.apache.isis.extensions:isis-extensions-flyway.*"
     "Core: Model Annotation": "org.apache.isis.extensions:isis-extensions-modelannotation.*"
     "Core: Quartz": "org.apache.isis.extensions:isis-extensions-quartz.*"
     #"Security: Audit Trail": "org.apache.isis.security:isis-extensions-audit-trail.*"
diff --git a/mappings/jaxrsclient/applib/src/main/java/org/apache/isis/extensions/jaxrsclient/applib/IsisModuleExtJaxRsClientApplib.java b/mappings/jaxrsclient/applib/src/main/java/org/apache/isis/extensions/jaxrsclient/applib/IsisModuleExtJaxRsClientApplib.java
index a3d3e7b..6c5f5e7 100644
--- a/mappings/jaxrsclient/applib/src/main/java/org/apache/isis/extensions/jaxrsclient/applib/IsisModuleExtJaxRsClientApplib.java
+++ b/mappings/jaxrsclient/applib/src/main/java/org/apache/isis/extensions/jaxrsclient/applib/IsisModuleExtJaxRsClientApplib.java
@@ -22,6 +22,9 @@ import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @Import({
         // modules
diff --git a/mappings/jaxrsclient/applib/src/main/java/org/apache/isis/extensions/jaxrsclient/applib/client/JaxRsClient.java b/mappings/jaxrsclient/applib/src/main/java/org/apache/isis/extensions/jaxrsclient/applib/client/JaxRsClient.java
index 9928d16..ed36eeb 100644
--- a/mappings/jaxrsclient/applib/src/main/java/org/apache/isis/extensions/jaxrsclient/applib/client/JaxRsClient.java
+++ b/mappings/jaxrsclient/applib/src/main/java/org/apache/isis/extensions/jaxrsclient/applib/client/JaxRsClient.java
@@ -22,6 +22,9 @@ import java.net.URI;
 
 import lombok.Getter;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface JaxRsClient {
 
     public enum ReprType {
diff --git a/mappings/jaxrsclient/applib/src/main/java/org/apache/isis/extensions/jaxrsclient/applib/client/JaxRsResponse.java b/mappings/jaxrsclient/applib/src/main/java/org/apache/isis/extensions/jaxrsclient/applib/client/JaxRsResponse.java
index 46ed637..428d44a 100644
--- a/mappings/jaxrsclient/applib/src/main/java/org/apache/isis/extensions/jaxrsclient/applib/client/JaxRsResponse.java
+++ b/mappings/jaxrsclient/applib/src/main/java/org/apache/isis/extensions/jaxrsclient/applib/client/JaxRsResponse.java
@@ -18,6 +18,9 @@
  */
 package org.apache.isis.extensions.jaxrsclient.applib.client;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface JaxRsResponse {
 
     int getStatus();
diff --git a/mappings/jaxrsclient/impl/src/main/java/org/apache/isis/extensions/jaxrsclient/impl/IsisModuleExtJaxRsClientImpl.java b/mappings/jaxrsclient/impl/src/main/java/org/apache/isis/extensions/jaxrsclient/impl/IsisModuleExtJaxRsClientImpl.java
index af8a507..932fff9 100644
--- a/mappings/jaxrsclient/impl/src/main/java/org/apache/isis/extensions/jaxrsclient/impl/IsisModuleExtJaxRsClientImpl.java
+++ b/mappings/jaxrsclient/impl/src/main/java/org/apache/isis/extensions/jaxrsclient/impl/IsisModuleExtJaxRsClientImpl.java
@@ -21,6 +21,9 @@ package org.apache.isis.extensions.jaxrsclient.impl;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @ComponentScan
 public class IsisModuleExtJaxRsClientImpl {
diff --git a/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/ActionParameterListBuilder.java b/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/ActionParameterListBuilder.java
index 57efcff..d02c72d 100644
--- a/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/ActionParameterListBuilder.java
+++ b/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/ActionParameterListBuilder.java
@@ -27,19 +27,18 @@ import javax.ws.rs.client.Entity;
 import lombok.Getter;
 
 /**
- * 
- * @since 2.0
+ * @since 2.0 {@index}
  */
 public class ActionParameterListBuilder {
 
     private final Map<String, String> actionParameters = new LinkedHashMap<>();
-    
+
     @Getter
     private final Map<String, Class<?>> actionParameterTypes = new LinkedHashMap<>();
 
     public ActionParameterListBuilder addActionParameter(String parameterName, String parameterValue) {
-        actionParameters.put(parameterName, parameterValue != null 
-                ? value("\"" + parameterValue + "\"") 
+        actionParameters.put(parameterName, parameterValue != null
+                ? value("\"" + parameterValue + "\"")
                         : value(JSON_NULL_LITERAL));
         actionParameterTypes.put(parameterName, String.class);
         return this;
@@ -87,12 +86,12 @@ public class ActionParameterListBuilder {
         return this;
     }
 
-//XXX would be nice to have, but also requires the RO spec to be updated     
+//XXX would be nice to have, but also requires the RO spec to be updated
 //    public ActionParameterListBuilder addActionParameterDto(String parameterName, Object parameterDto) {
 //        actionParameters.put(parameterName, dto(parameterDto));
 //        return this;
 //    }
-    
+
     public Entity<String> build() {
 
         final StringBuilder sb = new StringBuilder();
@@ -112,7 +111,7 @@ public class ActionParameterListBuilder {
     private String value(String valueLiteral) {
         return "{\"value\" : " + valueLiteral + "}";
     }
-    
+
 //    @SneakyThrows
 //    private String dto(Object dto) {
 //        val mapper = new ObjectMapper();
diff --git a/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/IsisModuleExtRestClient.java b/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/IsisModuleExtRestClient.java
index 2de0526..9ae6064 100644
--- a/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/IsisModuleExtRestClient.java
+++ b/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/IsisModuleExtRestClient.java
@@ -20,6 +20,9 @@ package org.apache.isis.extensions.restclient;
 
 import org.springframework.context.annotation.Configuration;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 public class IsisModuleExtRestClient {
 }
diff --git a/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/ResponseDigest.java b/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/ResponseDigest.java
index c4b32d1..a881f87 100644
--- a/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/ResponseDigest.java
+++ b/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/ResponseDigest.java
@@ -49,8 +49,7 @@ import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
 /**
- * 
- * @since 2.0
+ * @since 2.0 {@index}
  */
 @Log4j2
 public class ResponseDigest<T> {
@@ -63,12 +62,12 @@ public class ResponseDigest<T> {
      * @return
      */
     public static <T> ResponseDigest<T> of(
-            @NonNull final Response response, 
+            @NonNull final Response response,
             @NonNull final Class<T> entityType) {
-        
+
         return new ResponseDigest<>(response, entityType, null).digest();
     }
-    
+
     /**
      * synchronous response processing (list of entities)
      * @param <T>
@@ -78,17 +77,17 @@ public class ResponseDigest<T> {
      * @return
      */
     public static <T> ResponseDigest<T> ofList(
-            @NonNull final Response response, 
+            @NonNull final Response response,
             @NonNull final Class<T> entityType,
             @NonNull final GenericType<List<T>> genericType) {
-        
+
         return new ResponseDigest<>(response, entityType, genericType).digest();
     }
-    
+
     /** a-synchronous response failure processing */
     public static <T> ResponseDigest<T> ofAsyncFailure(
-            final Future<Response> asyncResponse, 
-            final Class<T> entityType, 
+            final Future<Response> asyncResponse,
+            final Class<T> entityType,
             final Exception failure) {
 
         Response response;
@@ -101,7 +100,7 @@ public class ResponseDigest<T> {
         final ResponseDigest<T> failureDigest = new ResponseDigest<>(response, entityType, null);
         return failureDigest.digestAsyncFailure(asyncResponse.isCancelled(), failure);
     }
-    
+
     private final Response response;
     private final Class<T> entityType;
     private final GenericType<List<T>> genericType;
@@ -129,44 +128,44 @@ public class ResponseDigest<T> {
     public boolean isFailure() {
         return failureCause!=null;
     }
-    
+
     /**
      * @return (non-null), optionally the result if cardinality is exactly ONE
      */
     public Optional<T> getEntity(){
         return getEntities().getSingleton();
     }
-    
+
     /**
-     * @return (non-null), the entities replied by the REST endpoint supporting any cardinality ZERO, ONE or more. 
+     * @return (non-null), the entities replied by the REST endpoint supporting any cardinality ZERO, ONE or more.
      */
     public Can<T> getEntities(){
         return entities;
     }
 
     /**
-     * @return (nullable), the failure case (if any), when the REST endpoint replied with a failure status code 
+     * @return (nullable), the failure case (if any), when the REST endpoint replied with a failure status code
      */
     public @Nullable Exception getFailureCause(){
         return failureCause;
     }
 
     /**
-     * @param failureMapper - fallback, to calculate a result from given failure exception 
-     * @return the result if cardinality is exactly ONE, otherwise the result of applying the failure to the {@code failureMapper} 
+     * @param failureMapper - fallback, to calculate a result from given failure exception
+     * @return the result if cardinality is exactly ONE, otherwise the result of applying the failure to the {@code failureMapper}
      */
     public T singletonOrElseMapFailure(Function<Exception, T> failureMapper) {
-        return isSuccess() 
+        return isSuccess()
                 ? getEntity().orElseGet(()->failureMapper.apply(new NoSuchElementException()))
                 : failureMapper.apply(getFailureCause());
     }
 
     /**
      * @param failureMapper - fallback, to calculate a result from given failure exception
-     * @return the result of any cardinality, otherwise the result of applying the failure to the {@code failureMapper} 
+     * @return the result of any cardinality, otherwise the result of applying the failure to the {@code failureMapper}
      */
     public Can<T> multipleOrElseMapFailure(Function<Exception, Can<T>> failureMapper) {
-        return isSuccess() 
+        return isSuccess()
                 ? getEntities()
                         : failureMapper.apply(getFailureCause());
     }
@@ -181,24 +180,24 @@ public class ResponseDigest<T> {
             return this;
         }
 
-        // a valid result corresponding to object not found, which is not an error per se  
+        // a valid result corresponding to object not found, which is not an error per se
         if(response.getStatusInfo().getStatusCode() == 404) {
             entities = Can.empty();
             return this;
         }
-        
+
         if(!response.hasEntity()) {
             entities = Can.empty();
             failureCause = new NoSuchElementException(defaultFailureMessage(response));
             return this;
         }
-        
+
         if(response.getStatusInfo().getFamily() != Family.SUCCESSFUL) {
             entities = Can.empty();
             failureCause = new RestfulClientException(defaultFailureMessage(response));
             return this;
         }
-        
+
         // see if we can extract the returned representation type (repr-type) from the header
         val contentTypeHeaderString = response.getHeaderString("Content-Type");
         val reprType = RepresentationTypeSimplifiedV2.parseContentTypeHeaderString(contentTypeHeaderString)
@@ -206,13 +205,13 @@ public class ResponseDigest<T> {
         if(reprType==null) {
             entities = Can.empty();
             failureCause = new RestfulClientException(String.format(
-                    "Invalid REST response, cannot parse header's Content-Type '%s' for the repr-type to use", 
+                    "Invalid REST response, cannot parse header's Content-Type '%s' for the repr-type to use",
                     contentTypeHeaderString));
             return this;
         }
-        
+
         try {
-            
+
             if(genericType==null) {
                 // when response is a singleton
                 val singleton = readSingle(reprType);
@@ -223,7 +222,7 @@ public class ResponseDigest<T> {
                 // when response is a list
                 entities = Can.ofCollection(readList(reprType));
             }
-            
+
         } catch (Exception e) {
             entities = Can.empty();
             failureCause = new RestfulClientException("failed to read JAX-RS response content", e);
@@ -232,12 +231,12 @@ public class ResponseDigest<T> {
         return this;
     }
 
-    private T readSingle(final RepresentationTypeSimplifiedV2 reprType) 
+    private T readSingle(final RepresentationTypeSimplifiedV2 reprType)
             throws JsonParseException, JsonMappingException, IOException {
-        
+
         log.debug("readSingle({})", reprType);
-        
-        if(reprType.isValue() 
+
+        if(reprType.isValue()
                 || isValueType(entityType)) {
             val mapper = new ObjectMapper();
             val jsonInput = response.readEntity(String.class);
@@ -246,25 +245,25 @@ public class ResponseDigest<T> {
         }
         return response.<T>readEntity(entityType);
     }
-    
-    private List<T> readList(final RepresentationTypeSimplifiedV2 reprType) 
+
+    private List<T> readList(final RepresentationTypeSimplifiedV2 reprType)
             throws JsonParseException, JsonMappingException, IOException {
-        
+
         log.debug("readList({})", reprType);
-        
-        if(reprType.isValues() 
+
+        if(reprType.isValues()
                 || isValueType(entityType)) {
             val mapper = new ObjectMapper();
             val jsonInput = response.readEntity(String.class);
-            final List<ScalarValueDtoV2> scalarValueDtoList = 
+            final List<ScalarValueDtoV2> scalarValueDtoList =
                     mapper.readValue(
-                            jsonInput, 
+                            jsonInput,
                             mapper.getTypeFactory().constructCollectionType(List.class, ScalarValueDtoV2.class));
-            
+
             final List<T> resultList = new ArrayList<>(scalarValueDtoList.size());
             for(val valueBody : scalarValueDtoList) {
                 // explicit loop, for simpler exception propagation
-                resultList.add(extractValue(valueBody)); 
+                resultList.add(extractValue(valueBody));
             }
             return resultList;
 
@@ -286,15 +285,15 @@ public class ResponseDigest<T> {
             return this;
         }
 
-        failureCause = new RestfulClientException("Async JAX-RS request failed " 
+        failureCause = new RestfulClientException("Async JAX-RS request failed "
                 + defaultFailureMessage(response), failure);
         return this;
 
     }
 
     private String defaultFailureMessage(Response response) {
-        String failureMessage = "non-successful JAX-RS response: " + 
-                String.format("%s (Http-Status-Code: %d)", 
+        String failureMessage = "non-successful JAX-RS response: " +
+                String.format("%s (Http-Status-Code: %d)",
                         response.getStatusInfo().getReasonPhrase(),
                         response.getStatus());
 
@@ -315,8 +314,8 @@ public class ResponseDigest<T> {
     private boolean isValueType(Class<T> entityType) {
         return CommonDtoUtils.isValueType(entityType);
     }
-    
-    private T extractValue(ScalarValueDtoV2 scalarValueDto) 
+
+    private T extractValue(ScalarValueDtoV2 scalarValueDto)
             throws JsonParseException, JsonMappingException, IOException {
         return _Casts.uncheckedCast(scalarValueDto.getValue());
     }
diff --git a/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/RestfulClient.java b/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/RestfulClient.java
index 0b48ba1..4db0af5 100644
--- a/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/RestfulClient.java
+++ b/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/RestfulClient.java
@@ -56,12 +56,12 @@ clientConfig.setUseRequestDebugLogging(true); // default = false
 
 RestfulClient client = RestfulClient.ofConfig(clientConfig);
  * </pre></blockquote>
- * 
+ *
  * Synchronous example:
  * <blockquote><pre>{@code
 
 Builder request = client.request(
-                "services/myService/actions/lookupMyObjectById/invoke", 
+                "services/myService/actions/lookupMyObjectById/invoke",
                 SuppressionType.RO);
 
 Entity<String> args = client.arguments()
@@ -80,9 +80,9 @@ if(digest.isSuccess()) {
 }
  * </pre></blockquote>
  * Asynchronous example:
- * <blockquote><pre>{@code 
+ * <blockquote><pre>{@code
 Builder request = client.request(
-                "services/myService/actions/lookupMyObjectById/invoke", 
+                "services/myService/actions/lookupMyObjectById/invoke",
                 SuppressionType.RO);
 
 Entity<String> args = client.arguments()
@@ -93,7 +93,7 @@ Future<Response> asyncResponse = request
         .async()
         .post(args);
 
-CompletableFuture<ResponseDigest<MyObject>> digestFuture = 
+CompletableFuture<ResponseDigest<MyObject>> digestFuture =
                 client.digest(asyncResponse, MyObject.class);
 
 ResponseDigest<MyObject> digest = digestFuture.get(); // blocking
@@ -105,7 +105,7 @@ if(digest.isSuccess()) {
     digest.getFailureCause().printStackTrace();
 }
  * </pre></blockquote>
- * 
+ *
  * Maven Setup:
  * <blockquote><pre>{@code
 <dependency>
@@ -129,8 +129,8 @@ if(digest.isSuccess()) {
     <version>2.7.5</version>
 </dependency>
  * }</pre></blockquote>
- * 
- * @since 2.0
+ *
+ * @since 2.0 {@index}
  */
 @Log4j2
 public class RestfulClient {
@@ -191,11 +191,11 @@ public class RestfulClient {
     public <T> ResponseDigest<T> digestList(Response response, Class<T> entityType, GenericType<List<T>> genericType) {
         return ResponseDigest.ofList(response, entityType, genericType);
     }
-    
+
     // -- RESPONSE PROCESSING (ASYNC)
 
     public <T> CompletableFuture<ResponseDigest<T>> digest(
-            final Future<Response> asyncResponse, 
+            final Future<Response> asyncResponse,
             final Class<T> entityType) {
 
         final CompletableFuture<ResponseDigest<T>> completableFuture = CompletableFuture.supplyAsync(()->{
@@ -212,9 +212,9 @@ public class RestfulClient {
 
         return completableFuture;
     }
-    
+
     public <T> CompletableFuture<ResponseDigest<T>> digestList(
-            final Future<Response> asyncResponse, 
+            final Future<Response> asyncResponse,
             final Class<T> entityType,
             GenericType<List<T>> genericType) {
 
@@ -226,9 +226,9 @@ public class RestfulClient {
                 return digest;
 
             } catch (Exception e) {
-                
+
                 return ResponseDigest.ofAsyncFailure(asyncResponse, entityType, e);
-                
+
             }
         });
 
@@ -251,7 +251,7 @@ public class RestfulClient {
     private void registerBasicAuthFilter() {
         if(clientConfig.isUseBasicAuth()){
             final Credentials credentials = Credentials.of(
-                    clientConfig.getRestfulAuthUser(), 
+                    clientConfig.getRestfulAuthUser(),
                     clientConfig.getRestfulAuthPassword());
             client.register(BasicAuthFilter.of(credentials));
         }
@@ -287,6 +287,6 @@ public class RestfulClient {
 
         return "";
     }
-    
+
 
 }
diff --git a/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/RestfulClientConfig.java b/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/RestfulClientConfig.java
index 0e10351..93bca84 100644
--- a/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/RestfulClientConfig.java
+++ b/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/RestfulClientConfig.java
@@ -32,18 +32,17 @@ import org.apache.isis.extensions.restclient.log.ClientConversationFilter;
 import lombok.Data;
 
 /**
- * 
- * @since 2.0
+ * @since 2.0 {@index}
  */
 @XmlRootElement(name="restful-client-config")
 @XmlAccessorType(XmlAccessType.FIELD)
 @Data
 public class RestfulClientConfig {
 
-    @XmlElement(name="restfulBase") 
+    @XmlElement(name="restfulBase")
     private String restfulBase;
 
-    @XmlElement(name="useBasicAuth") 
+    @XmlElement(name="useBasicAuth")
     private boolean useBasicAuth;
 
     @XmlElement(name="restfulAuthUser")
@@ -52,9 +51,9 @@ public class RestfulClientConfig {
     @XmlElement(name="restfulAuthPassword")
     private String restfulAuthPassword;
 
-    @XmlElement(name="useRequestDebugLogging") 
+    @XmlElement(name="useRequestDebugLogging")
     private boolean useRequestDebugLogging;
-    
+
     @XmlTransient
     private List<ClientConversationFilter> clientConversationFilters = new ArrayList<>();
 
diff --git a/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/RestfulClientException.java b/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/RestfulClientException.java
index 1d3f3c2..bd1c31f 100644
--- a/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/RestfulClientException.java
+++ b/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/RestfulClientException.java
@@ -18,6 +18,9 @@
  */
 package org.apache.isis.extensions.restclient;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class RestfulClientException extends RuntimeException {
 
     private static final long serialVersionUID = 1L;
diff --git a/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/auth/BasicAuthFilter.java b/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/auth/BasicAuthFilter.java
index c0dff13..54ca4d8 100644
--- a/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/auth/BasicAuthFilter.java
+++ b/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/auth/BasicAuthFilter.java
@@ -31,14 +31,13 @@ import org.apache.isis.commons.internal.base._Strings;
 import static org.apache.isis.commons.internal.base._With.requires;
 
 /**
- * 
- * @since 2.0
+ * @since 2.0 {@index}
  */
 @Priority(100)
 public class BasicAuthFilter implements ClientRequestFilter {
 
     /**
-     * 
+     *
      * @since 2.0
      */
     public static class Credentials {
@@ -94,4 +93,4 @@ public class BasicAuthFilter implements ClientRequestFilter {
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/log/ClientConversationFilter.java b/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/log/ClientConversationFilter.java
index 59c0a80..8ed653d 100644
--- a/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/log/ClientConversationFilter.java
+++ b/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/log/ClientConversationFilter.java
@@ -33,16 +33,19 @@ import org.apache.isis.commons.internal.base._Bytes;
 
 import lombok.val;
 
-public interface ClientConversationFilter 
+/**
+ * @since 2.0 {@index}
+ */
+public interface ClientConversationFilter
 extends ClientRequestFilter, ClientResponseFilter {
-    
+
     void onRequest(
             String endpoint,
             String method,
             String acceptHeaderParsing,
-            Map<String, List<String>> headers, 
+            Map<String, List<String>> headers,
             String body);
-    
+
     void onResponse(int httpReturnCode, Map<String, List<String>> headers, String body);
 
     @Override
@@ -66,10 +69,10 @@ extends ClientRequestFilter, ClientResponseFilter {
 
         onRequest(
                 endpoint, method, acceptHeaderParsing,
-                requestContext.getStringHeaders(), 
+                requestContext.getStringHeaders(),
                 requestBody);
     }
-    
+
     @Override
     default void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
 
@@ -85,6 +88,6 @@ extends ClientRequestFilter, ClientResponseFilter {
 
         onResponse(responseContext.getStatusInfo().getStatusCode(), responseContext.getHeaders(), responseBody);
     }
-  
-    
+
+
 }
diff --git a/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/log/ClientConversationLogger.java b/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/log/ClientConversationLogger.java
index 0679688..fc2695f 100644
--- a/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/log/ClientConversationLogger.java
+++ b/mappings/restclient/applib/src/main/java/org/apache/isis/extensions/restclient/log/ClientConversationLogger.java
@@ -28,16 +28,15 @@ import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
 /**
- * 
- * @since 2.0
+ * @since 2.0 {@index}
  */
 @Log4j2
 public class ClientConversationLogger implements ClientConversationFilter {
-    
+
     @Override
     public void onRequest(String endpoint, String method, String acceptHeaderParsing,
             Map<String, List<String>> headers, String body) {
-        
+
         val headersAsText = headers.entrySet().stream()
                 .map(this::toKeyValueString)
                 .map(this::obscureAuthHeader)
@@ -63,7 +62,7 @@ public class ClientConversationLogger implements ClientConversationFilter {
                 .map(this::toKeyValueString)
                 .map(this::obscureAuthHeader)
                 .collect(Collectors.joining(",\n\t"));
-        
+
         val sb = new StringBuilder();
         sb.append("\n")
         .append("---------- JAX-RS RESPONSE -------------\n")
@@ -78,12 +77,12 @@ public class ClientConversationLogger implements ClientConversationFilter {
 
     // -- HELPER
 
-    private final String basicAuthMagic = "Authorization: [Basic "; 
+    private final String basicAuthMagic = "Authorization: [Basic ";
 
     private String toKeyValueString(Map.Entry<?, ?> entry) {
         return "" + entry.getKey() + ": " + entry.getValue();
     }
-    
+
     private String obscureAuthHeader(String keyValueLiteral) {
         if(_Strings.isEmpty(keyValueLiteral)) {
             return keyValueLiteral;
@@ -100,4 +99,4 @@ public class ClientConversationLogger implements ClientConversationFilter {
 
 
 
-}
\ No newline at end of file
+}
diff --git a/persistence/jdo/applib/src/main/java/org/apache/isis/persistence/jdo/applib/IsisModulePersistenceJdoApplib.java b/persistence/jdo/applib/src/main/java/org/apache/isis/persistence/jdo/applib/IsisModulePersistenceJdoApplib.java
index bad4667..a7ae218 100644
--- a/persistence/jdo/applib/src/main/java/org/apache/isis/persistence/jdo/applib/IsisModulePersistenceJdoApplib.java
+++ b/persistence/jdo/applib/src/main/java/org/apache/isis/persistence/jdo/applib/IsisModulePersistenceJdoApplib.java
@@ -20,6 +20,9 @@ package org.apache.isis.persistence.jdo.applib;
 
 import org.springframework.context.annotation.Configuration;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 public class IsisModulePersistenceJdoApplib {
 }
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/IsisModuleJdoDatanucleus.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/IsisModuleJdoDatanucleus.java
index 23afaec..aed2213 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/IsisModuleJdoDatanucleus.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/IsisModuleJdoDatanucleus.java
@@ -52,6 +52,9 @@ import org.apache.isis.persistence.jdo.spring.integration.TransactionAwarePersis
 
 import lombok.val;
 
+/**
+ * @since 1.x {@index}
+ */
 @Configuration
 @Import({
     // modules
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/changetracking/JdoLifecycleListener.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/changetracking/JdoLifecycleListener.java
index 9ef64bc..1231a56 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/changetracking/JdoLifecycleListener.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/changetracking/JdoLifecycleListener.java
@@ -53,6 +53,8 @@ import lombok.extern.log4j.Log4j2;
  * <li>recognizePersisting <-> preStore (when NEW)</li>
  * <li>recognizeUpdating <-> postStore (when NOT NEW)</li>
  * </ul>
+ *
+ * @since 2.0 {@index}
  */
 @Vetoed // managed by isis
 @RequiredArgsConstructor
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/mixins/Persistable_datanucleusIdLong.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/mixins/Persistable_datanucleusIdLong.java
index aee7b43..06ac469 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/mixins/Persistable_datanucleusIdLong.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/mixins/Persistable_datanucleusIdLong.java
@@ -31,6 +31,9 @@ import org.apache.isis.applib.mixins.MixinConstants;
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Property(
         domainEvent = Persistable_datanucleusIdLong.PropertyDomainEvent.class)
 @PropertyLayout(
@@ -42,7 +45,7 @@ public class Persistable_datanucleusIdLong {
 
     private final Persistable persistable;
 
-    public static class PropertyDomainEvent 
+    public static class PropertyDomainEvent
     extends org.apache.isis.applib.IsisModuleApplib.PropertyDomainEvent
     <Persistable_datanucleusIdLong, Long> {}
 
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/mixins/Persistable_datanucleusVersionLong.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/mixins/Persistable_datanucleusVersionLong.java
index b922be4..d49a3f6 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/mixins/Persistable_datanucleusVersionLong.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/mixins/Persistable_datanucleusVersionLong.java
@@ -30,6 +30,9 @@ import org.apache.isis.applib.mixins.MixinConstants;
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Property(
         domainEvent = Persistable_datanucleusVersionLong.PropertyDomainEvent.class)
 @PropertyLayout(
@@ -41,7 +44,7 @@ public class Persistable_datanucleusVersionLong {
 
     private final Persistable persistable;
 
-    public static class PropertyDomainEvent 
+    public static class PropertyDomainEvent
     extends org.apache.isis.applib.IsisModuleApplib.PropertyDomainEvent
     <Persistable_datanucleusVersionLong, Long> {}
 
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/mixins/Persistable_datanucleusVersionTimestamp.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/mixins/Persistable_datanucleusVersionTimestamp.java
index ae156eb..e5ff509 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/mixins/Persistable_datanucleusVersionTimestamp.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/mixins/Persistable_datanucleusVersionTimestamp.java
@@ -30,6 +30,9 @@ import org.apache.isis.applib.mixins.MixinConstants;
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Property(
         domainEvent = Persistable_datanucleusVersionTimestamp.PropertyDomainEvent.class)
 @PropertyLayout(
@@ -41,7 +44,7 @@ public class Persistable_datanucleusVersionTimestamp {
 
     private final Persistable persistable;
 
-    public static class PropertyDomainEvent 
+    public static class PropertyDomainEvent
     extends org.apache.isis.applib.IsisModuleApplib.PropertyDomainEvent
     <Persistable_datanucleusVersionTimestamp, java.sql.Timestamp> {}
 
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/mixins/Persistable_downloadJdoMetadata.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/mixins/Persistable_downloadJdoMetadata.java
index e7e15a2..823b92a 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/mixins/Persistable_downloadJdoMetadata.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/mixins/Persistable_downloadJdoMetadata.java
@@ -40,6 +40,9 @@ import org.apache.isis.persistence.jdo.applib.integration.JdoSupportService;
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = Persistable_downloadJdoMetadata.ActionDomainEvent.class,
         semantics = SemanticsOf.SAFE,
@@ -53,7 +56,7 @@ import lombok.RequiredArgsConstructor;
 public class Persistable_downloadJdoMetadata {
 
     @Inject JdoSupportService jdoSupport;
-    
+
     private final Persistable persistable;
 
     public static class ActionDomainEvent extends org.apache.isis.applib.IsisModuleApplib.ActionDomainEvent<Persistable_downloadJdoMetadata> {}
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/applib/IsisBookmarkConverter.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/applib/IsisBookmarkConverter.java
index 4e919d2..b9ac392 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/applib/IsisBookmarkConverter.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/applib/IsisBookmarkConverter.java
@@ -22,6 +22,9 @@ import org.datanucleus.store.types.converters.TypeConverter;
 
 import org.apache.isis.applib.services.bookmark.Bookmark;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class IsisBookmarkConverter implements TypeConverter<Bookmark, String>{
 
     private static final long serialVersionUID = 1L;
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/applib/IsisLocalResourcePathConverter.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/applib/IsisLocalResourcePathConverter.java
index 0e41080..8e661a4 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/applib/IsisLocalResourcePathConverter.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/applib/IsisLocalResourcePathConverter.java
@@ -22,6 +22,9 @@ import org.datanucleus.store.types.converters.TypeConverter;
 
 import org.apache.isis.applib.value.LocalResourcePath;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class IsisLocalResourcePathConverter implements TypeConverter<LocalResourcePath, String>{
 
     private static final long serialVersionUID = 1L;
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/applib/IsisMarkupConverter.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/applib/IsisMarkupConverter.java
index b84cbfa..744171f 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/applib/IsisMarkupConverter.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/applib/IsisMarkupConverter.java
@@ -22,6 +22,9 @@ import org.datanucleus.store.types.converters.TypeConverter;
 
 import org.apache.isis.applib.value.Markup;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class IsisMarkupConverter implements TypeConverter<Markup, String>{
 
     private static final long serialVersionUID = 1L;
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/applib/IsisPasswordConverter.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/applib/IsisPasswordConverter.java
index 3275251..3a87876 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/applib/IsisPasswordConverter.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/applib/IsisPasswordConverter.java
@@ -22,6 +22,9 @@ import org.datanucleus.store.types.converters.TypeConverter;
 
 import org.apache.isis.applib.value.Password;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class IsisPasswordConverter implements TypeConverter<Password, String>{
 
     private static final long serialVersionUID = 1L;
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/image/JavaAwtBufferedImageByteArrayConverter.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/image/JavaAwtBufferedImageByteArrayConverter.java
index 1ba371e..2a10001 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/image/JavaAwtBufferedImageByteArrayConverter.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/image/JavaAwtBufferedImageByteArrayConverter.java
@@ -26,9 +26,12 @@ import org.datanucleus.store.types.converters.TypeConverter;
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.image._Images;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class JavaAwtBufferedImageByteArrayConverter implements TypeConverter<BufferedImage, byte[]> {
 
-    // generated 
+    // generated
     private static final long serialVersionUID = 5481131533536472276L;
 
     @Override
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisChangesDtoConverter.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisChangesDtoConverter.java
index 7cdbcdc..0c6d836 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisChangesDtoConverter.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisChangesDtoConverter.java
@@ -23,6 +23,9 @@ import org.datanucleus.store.types.converters.TypeConverter;
 import org.apache.isis.applib.util.schema.ChangesDtoUtils;
 import org.apache.isis.schema.chg.v2.ChangesDto;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class IsisChangesDtoConverter implements TypeConverter<ChangesDto, String>{
 
     private static final long serialVersionUID = 1L;
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisCommandDtoConverter.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisCommandDtoConverter.java
index b24f503..c2e997c 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisCommandDtoConverter.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisCommandDtoConverter.java
@@ -23,6 +23,9 @@ import org.datanucleus.store.types.converters.TypeConverter;
 import org.apache.isis.applib.util.schema.CommandDtoUtils;
 import org.apache.isis.schema.cmd.v2.CommandDto;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class IsisCommandDtoConverter implements TypeConverter<CommandDto, String>{
 
     private static final long serialVersionUID = 1L;
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisInteractionDtoConverter.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisInteractionDtoConverter.java
index 12f28ad..818db97 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisInteractionDtoConverter.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisInteractionDtoConverter.java
@@ -23,6 +23,9 @@ import org.datanucleus.store.types.converters.TypeConverter;
 import org.apache.isis.applib.util.schema.InteractionDtoUtils;
 import org.apache.isis.schema.ixn.v2.InteractionDto;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class IsisInteractionDtoConverter implements TypeConverter<InteractionDto, String>{
 
     private static final long serialVersionUID = 1L;
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisOidDtoConverter.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisOidDtoConverter.java
index c3a77cf..fa11f3c 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisOidDtoConverter.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/schema/v2/IsisOidDtoConverter.java
@@ -23,6 +23,9 @@ import org.datanucleus.store.types.converters.TypeConverter;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.schema.common.v2.OidDto;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class IsisOidDtoConverter implements TypeConverter<OidDto, String>{
 
     private static final long serialVersionUID = 1L;
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/time/IsoOffsetTimeConverter.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/time/IsoOffsetTimeConverter.java
index 7b667f7..6c4a1bf 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/time/IsoOffsetTimeConverter.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/time/IsoOffsetTimeConverter.java
@@ -23,10 +23,13 @@ import java.time.format.DateTimeFormatter;
 
 import org.datanucleus.store.types.converters.TypeConverter;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class IsoOffsetTimeConverter implements TypeConverter<OffsetTime, String>{
 
     private static final long serialVersionUID = 1L;
-    
+
     @Override
     public String toDatastoreType(final OffsetTime offsetTime) {
         return offsetTime != null
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/time/IsoZonedDateTimeConverter.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/time/IsoZonedDateTimeConverter.java
index c92f7f8..7dd3070 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/time/IsoZonedDateTimeConverter.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/typeconverters/time/IsoZonedDateTimeConverter.java
@@ -23,10 +23,13 @@ import java.time.format.DateTimeFormatter;
 
 import org.datanucleus.store.types.converters.TypeConverter;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class IsoZonedDateTimeConverter implements TypeConverter<ZonedDateTime, String>{
 
     private static final long serialVersionUID = 1L;
-    
+
     @Override
     public String toDatastoreType(final ZonedDateTime offsetTime) {
         return offsetTime != null
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuemappings/applib/ByteArrayBlobRdbmsMapping.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuemappings/applib/ByteArrayBlobRdbmsMapping.java
index 5375612..279a601 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuemappings/applib/ByteArrayBlobRdbmsMapping.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuemappings/applib/ByteArrayBlobRdbmsMapping.java
@@ -23,6 +23,9 @@ import org.datanucleus.store.rdbms.mapping.column.BlobColumnMapping;
 import org.datanucleus.store.rdbms.mapping.java.JavaTypeMapping;
 import org.datanucleus.store.rdbms.table.Column;
 
+/**
+ * @since 1.x {@index}
+ */
 public class ByteArrayBlobRdbmsMapping extends BlobColumnMapping {
 
     public ByteArrayBlobRdbmsMapping(JavaTypeMapping mapping, RDBMSStoreManager storeMgr, Column col) {
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/applib/IsisBlobMapping.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/applib/IsisBlobMapping.java
index b39f17a..5a889c1 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/applib/IsisBlobMapping.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/applib/IsisBlobMapping.java
@@ -33,6 +33,9 @@ import org.datanucleus.store.rdbms.table.Table;
 
 import org.apache.isis.applib.value.Blob;
 
+/**
+ * @since 1.x {@index}
+ */
 public class IsisBlobMapping extends SingleFieldMultiMapping {
 
     public IsisBlobMapping() {
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/applib/IsisClobMapping.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/applib/IsisClobMapping.java
index 9550dfa..d56a221 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/applib/IsisClobMapping.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/applib/IsisClobMapping.java
@@ -32,6 +32,9 @@ import org.datanucleus.store.rdbms.table.Table;
 
 import org.apache.isis.applib.value.Clob;
 
+/**
+ * @since 1.x {@index}
+ */
 public class IsisClobMapping extends SingleFieldMultiMapping {
 
     public IsisClobMapping() {
diff --git a/persistence/jpa/applib/src/main/java/org/apache/isis/persistence/jpa/applib/integration/JpaEntityInjectionPointResolver.java b/persistence/jpa/applib/src/main/java/org/apache/isis/persistence/jpa/applib/integration/JpaEntityInjectionPointResolver.java
index 5bbc698..6908348 100644
--- a/persistence/jpa/applib/src/main/java/org/apache/isis/persistence/jpa/applib/integration/JpaEntityInjectionPointResolver.java
+++ b/persistence/jpa/applib/src/main/java/org/apache/isis/persistence/jpa/applib/integration/JpaEntityInjectionPointResolver.java
@@ -35,19 +35,19 @@ import lombok.extern.log4j.Log4j2;
  * EntityListener class for listing with the {@link javax.persistence.EntityListeners} annotation, to
  * support injection point resolving for entities.
  * <p>
- * Instances of this class are not managed by Spring, but by the persistence layer. 
+ * Instances of this class are not managed by Spring, but by the persistence layer.
  * <p>
- * The particular persistence layer implementation in use needs to be configured, 
- * with a BeanManager, that is able to resolve injection points for this EntityListener.   
- *  
- * @since 2.0
+ * The particular persistence layer implementation in use needs to be configured,
+ * with a BeanManager, that is able to resolve injection points for this EntityListener.
+ *
+ * @since 2.0 {@index}
  */
 @Log4j2
 public class JpaEntityInjectionPointResolver {
 
     @Inject // not managed by Spring (directly)
     private ServiceInjector serviceInjector;
-    
+
     @PrePersist
     @PreUpdate
     @PreRemove
@@ -55,7 +55,7 @@ public class JpaEntityInjectionPointResolver {
         log.debug("beforeAnyUpdate: {}", entityPojo);
         serviceInjector.injectServicesInto(entityPojo);
     }
-    
+
     @PostPersist
     @PostUpdate
     @PostRemove
@@ -63,11 +63,11 @@ public class JpaEntityInjectionPointResolver {
         log.debug("afterAnyUpdate: {}" + entityPojo);
         //serviceInjector.injectServicesInto(entityPojo);
     }
-    
+
     @PostLoad
     private void afterLoad(Object entityPojo) {
         log.debug("afterLoad: {}" + entityPojo);
         serviceInjector.injectServicesInto(entityPojo);
     }
-    
+
 }
diff --git a/persistence/jpa/eclipselink/src/main/java/org/apache/isis/persistence/jpa/eclipselink/IsisModuleJpaEclipselink.java b/persistence/jpa/eclipselink/src/main/java/org/apache/isis/persistence/jpa/eclipselink/IsisModuleJpaEclipselink.java
index 615e65e..1389825 100644
--- a/persistence/jpa/eclipselink/src/main/java/org/apache/isis/persistence/jpa/eclipselink/IsisModuleJpaEclipselink.java
+++ b/persistence/jpa/eclipselink/src/main/java/org/apache/isis/persistence/jpa/eclipselink/IsisModuleJpaEclipselink.java
@@ -48,47 +48,49 @@ import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
 /**
- * EclipseLink integration. 
+ * EclipseLink integration.
  * <p>
  * Sets up EclipseLink as the implementation provider for Spring Data JPA.
- * 
+ *
  * @implNote does not (yet) support weaving, explicitly disables it
  * @see <a href="https://www.baeldung.com/spring-eclipselink">baeldung.com</a>
+ *
+ * @since 2.0 {@index}
  */
-@Configuration 
+@Configuration
 @Import({
     IsisModuleJpaIntegration.class
 })
 @Log4j2
-public class IsisModuleJpaEclipselink extends JpaBaseConfiguration { 
+public class IsisModuleJpaEclipselink extends JpaBaseConfiguration {
 
     @Inject private Provider<ServiceInjector> serviceInjectorProvider;
-    
+
     @Bean
     public EclipseLinkJpaDialect eclipselinkJpaDialect() {
         return new EclipseLinkJpaDialect();
     }
-    
+
     @Bean
     public PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor(){
         return new PersistenceExceptionTranslationPostProcessor();
     }
-    
+
     protected IsisModuleJpaEclipselink(
             IsisConfiguration isisConfiguration,
-            DataSource dataSource, 
+            DataSource dataSource,
             JpaProperties properties,
             ObjectProvider<JtaTransactionManager> jtaTransactionManager) {
-        
+
         super(
-                autoCreateSchemas(dataSource, isisConfiguration), 
-                addAdditionalOrmFiles(properties, isisConfiguration), 
+                autoCreateSchemas(dataSource, isisConfiguration),
+                addAdditionalOrmFiles(properties, isisConfiguration),
                 jtaTransactionManager);
     }
 
-    @Override 
-    protected AbstractJpaVendorAdapter createJpaVendorAdapter() { 
-        return new EclipseLinkJpaVendorAdapter(); 
+    @Override
+    protected AbstractJpaVendorAdapter createJpaVendorAdapter() {
+        return new EclipseLinkJpaVendorAdapter();
     }
 
     @Override
@@ -108,27 +110,27 @@ public class IsisModuleJpaEclipselink extends JpaBaseConfiguration {
     protected static DataSource autoCreateSchemas(
             final DataSource dataSource,
             final IsisConfiguration isisConfiguration) {
-        
+
         val persistenceSchemaConf = isisConfiguration.getPersistence().getJpa();
-        
+
         if(!persistenceSchemaConf.getAutoCreateSchemas().isEmpty()) {
-            
+
             log.info("about to create db schema(s) {}", persistenceSchemaConf.getAutoCreateSchemas());
-            
+
             try(val con = dataSource.getConnection()){
-                
+
                 val s = con.createStatement();
-                
+
                 for(val schema : persistenceSchemaConf.getAutoCreateSchemas()) {
                     s.execute(String.format(persistenceSchemaConf.getCreateSchemaSqlTemplate(), schema));
                 }
-                
+
             }
         }
 
         return dataSource;
     }
-    
+
     /**
      * integrates with settings from isis.persistence.jpa.*
      */
@@ -137,16 +139,16 @@ public class IsisModuleJpaEclipselink extends JpaBaseConfiguration {
             IsisConfiguration isisConfiguration) {
 
         val persistenceSchemaConf = isisConfiguration.getPersistence().getJpa();
-        
+
         persistenceSchemaConf.getAdditionalOrmFiles()
         .forEach(schema->properties.getMappingResources()
                 .add(String.format("META-INF/orm-%s.xml", schema)));
-        
+
         if(!properties.getMappingResources().isEmpty()) {
             log.info("using mapping-resources {}", properties.getMappingResources());
         }
-        
+
         return properties;
     }
-    
-}
\ No newline at end of file
+
+}
diff --git a/security/bypass/src/main/java/org/apache/isis/security/bypass/IsisModuleSecurityBypass.java b/security/bypass/src/main/java/org/apache/isis/security/bypass/IsisModuleSecurityBypass.java
index 710a0e7..e8e4a1e 100644
--- a/security/bypass/src/main/java/org/apache/isis/security/bypass/IsisModuleSecurityBypass.java
+++ b/security/bypass/src/main/java/org/apache/isis/security/bypass/IsisModuleSecurityBypass.java
@@ -27,8 +27,8 @@ import org.apache.isis.security.bypass.authorization.AuthorizorBypass;
 
 /**
  * Auth/bypass for eg. Integration Testing
- *  
- * @since 2.0
+ *
+ * @since 1.x {@index}
  */
 @Configuration
 @Import({
diff --git a/security/bypass/src/main/java/org/apache/isis/security/bypass/authentication/AuthenticatorBypass.java b/security/bypass/src/main/java/org/apache/isis/security/bypass/authentication/AuthenticatorBypass.java
index bc18ea2..9f46619 100644
--- a/security/bypass/src/main/java/org/apache/isis/security/bypass/authentication/AuthenticatorBypass.java
+++ b/security/bypass/src/main/java/org/apache/isis/security/bypass/authentication/AuthenticatorBypass.java
@@ -31,6 +31,8 @@ import org.apache.isis.core.security.authentication.standard.AuthenticatorAbstra
 
 /**
  * Implementation that bypasses authentication.
+ *
+ * @since 1.x {@index}
  */
 @Service
 @Named("isis.security.AuthenticatorBypass")
diff --git a/security/bypass/src/main/java/org/apache/isis/security/bypass/authorization/AuthorizorBypass.java b/security/bypass/src/main/java/org/apache/isis/security/bypass/authorization/AuthorizorBypass.java
index ad6cd1c..c6458b0 100644
--- a/security/bypass/src/main/java/org/apache/isis/security/bypass/authorization/AuthorizorBypass.java
+++ b/security/bypass/src/main/java/org/apache/isis/security/bypass/authorization/AuthorizorBypass.java
@@ -29,6 +29,9 @@ import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.OrderPrecedence;
 import org.apache.isis.core.security.authorization.standard.Authorizor;
 
+/**
+ * @since 1.x {@index}
+ */
 @Service
 @Named("isis.security.AuthorizorBypass")
 @Order(OrderPrecedence.LATE)
diff --git a/security/keycloak/src/main/java/org/apache/isis/security/keycloak/IsisModuleSecurityKeycloak.java b/security/keycloak/src/main/java/org/apache/isis/security/keycloak/IsisModuleSecurityKeycloak.java
index a1710cb..9bb35c9 100644
--- a/security/keycloak/src/main/java/org/apache/isis/security/keycloak/IsisModuleSecurityKeycloak.java
+++ b/security/keycloak/src/main/java/org/apache/isis/security/keycloak/IsisModuleSecurityKeycloak.java
@@ -29,8 +29,8 @@ import org.apache.isis.core.webapp.IsisModuleCoreWebapp;
 
 /**
  * Configuration Bean to support Isis Security using Shiro.
- *  
- * @since 2.0
+ *
+ * @since 2.0 {@index}
  */
 @Configuration
 @Import({
diff --git a/security/keycloak/src/main/java/org/apache/isis/security/keycloak/authentication/AuthenticatorKeycloak.java b/security/keycloak/src/main/java/org/apache/isis/security/keycloak/authentication/AuthenticatorKeycloak.java
index fcf152e..f9d72f5 100644
--- a/security/keycloak/src/main/java/org/apache/isis/security/keycloak/authentication/AuthenticatorKeycloak.java
+++ b/security/keycloak/src/main/java/org/apache/isis/security/keycloak/authentication/AuthenticatorKeycloak.java
@@ -32,13 +32,16 @@ import org.apache.isis.core.security.authentication.Authentication;
 import org.apache.isis.core.security.authentication.AuthenticationContext;
 import org.apache.isis.core.security.authentication.standard.Authenticator;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isis.security.AuthenticatorKeycloak")
 @Order(OrderPrecedence.EARLY)
 @Qualifier("Keycloak")
 @Singleton
 public class AuthenticatorKeycloak implements Authenticator {
-    
+
     @Inject private AuthenticationContext authenticationTracker;
 
     @Override
@@ -48,7 +51,7 @@ public class AuthenticatorKeycloak implements Authenticator {
 
     @Override
     public Authentication authenticate(final AuthenticationRequest request, final String code) {
-        // HTTP request filters should already have taken care of Authentication creation    
+        // HTTP request filters should already have taken care of Authentication creation
         return authenticationTracker.currentAuthentication().orElse(null);
     }
 
diff --git a/security/keycloak/src/main/java/org/apache/isis/security/keycloak/authorization/AuthorizorKeycloak.java b/security/keycloak/src/main/java/org/apache/isis/security/keycloak/authorization/AuthorizorKeycloak.java
index 19b8f06..5202277 100644
--- a/security/keycloak/src/main/java/org/apache/isis/security/keycloak/authorization/AuthorizorKeycloak.java
+++ b/security/keycloak/src/main/java/org/apache/isis/security/keycloak/authorization/AuthorizorKeycloak.java
@@ -29,6 +29,9 @@ import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.OrderPrecedence;
 import org.apache.isis.core.security.authorization.standard.Authorizor;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isis.security.AuthorizorKeycloak")
 @Order(OrderPrecedence.EARLY)
diff --git a/security/keycloak/src/main/java/org/apache/isis/security/keycloak/webmodule/KeycloakFilter.java b/security/keycloak/src/main/java/org/apache/isis/security/keycloak/webmodule/KeycloakFilter.java
index 8853bbd..b74de88 100644
--- a/security/keycloak/src/main/java/org/apache/isis/security/keycloak/webmodule/KeycloakFilter.java
+++ b/security/keycloak/src/main/java/org/apache/isis/security/keycloak/webmodule/KeycloakFilter.java
@@ -41,8 +41,11 @@ import org.apache.isis.core.security.authentication.standard.SimpleAuthenticatio
 
 import lombok.val;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class KeycloakFilter implements Filter {
-    
+
     @Autowired private InteractionFactory isisInteractionFactory;
 
     @Override
@@ -61,11 +64,11 @@ public class KeycloakFilter implements Filter {
             return;
         }
         final List<String> roles = toClaims(rolesHeader);
-        
+
         val user = UserMemento.ofNameAndRoleNames(userid, roles.stream());
         val authentication = SimpleAuthentication.of(user, subjectHeader);
         authentication.setType(Authentication.Type.EXTERNAL);
-        
+
         isisInteractionFactory.runAuthenticated(
                 authentication,
                 ()->{
diff --git a/security/keycloak/src/main/java/org/apache/isis/security/keycloak/webmodule/WebModuleKeycloak.java b/security/keycloak/src/main/java/org/apache/isis/security/keycloak/webmodule/WebModuleKeycloak.java
index 75c2b2c..2fe1cb7 100644
--- a/security/keycloak/src/main/java/org/apache/isis/security/keycloak/webmodule/WebModuleKeycloak.java
+++ b/security/keycloak/src/main/java/org/apache/isis/security/keycloak/webmodule/WebModuleKeycloak.java
@@ -37,6 +37,8 @@ import lombok.Getter;
 
 /**
  * WebModule to enable support for Keycloak.
+ *
+ * @since 2.0 {@index}
  */
 @Service
 @Named("isis.security.WebModuleKeycloak")
diff --git a/security/shiro/src/main/java/org/apache/isis/security/shiro/IsisModuleSecurityShiro.java b/security/shiro/src/main/java/org/apache/isis/security/shiro/IsisModuleSecurityShiro.java
index 6cacb7f..e424b36 100644
--- a/security/shiro/src/main/java/org/apache/isis/security/shiro/IsisModuleSecurityShiro.java
+++ b/security/shiro/src/main/java/org/apache/isis/security/shiro/IsisModuleSecurityShiro.java
@@ -28,8 +28,8 @@ import org.apache.isis.security.shiro.webmodule.WebModuleShiro;
 
 /**
  * Configuration Bean to support Isis Security using Shiro.
- *  
- * @since 2.0
+ *
+ * @since 1.x {@index}
  */
 @Configuration
 @Import({
diff --git a/security/shiro/src/main/java/org/apache/isis/security/shiro/authentication/AuthenticatorShiro.java b/security/shiro/src/main/java/org/apache/isis/security/shiro/authentication/AuthenticatorShiro.java
index 4eb0695..8439a9c 100644
--- a/security/shiro/src/main/java/org/apache/isis/security/shiro/authentication/AuthenticatorShiro.java
+++ b/security/shiro/src/main/java/org/apache/isis/security/shiro/authentication/AuthenticatorShiro.java
@@ -69,6 +69,8 @@ import lombok.extern.log4j.Log4j2;
  * However, although there are two objects, they are set up to share the same {@link SecurityManager Shiro SecurityManager}
  * (bound to a thread-local).
  * </p>
+ *
+ * @since 1.x {@index}
  */
 @Service
 @Named("isis.security.AuthenticatorShiro")
@@ -103,7 +105,7 @@ public class AuthenticatorShiro implements Authenticator {
         if(securityManager == null) {
             return null;
         }
-        
+
         final AuthenticationToken token = asAuthenticationToken(request);
 
         final Subject currentSubject = SecurityUtils.getSubject();
@@ -158,9 +160,9 @@ public class AuthenticatorShiro implements Authenticator {
     }
 
     Authentication authenticationFor(
-            AuthenticationRequest request, 
-            String validationCode, 
-            AuthenticationToken token, 
+            AuthenticationRequest request,
+            String validationCode,
+            AuthenticationToken token,
             Subject currentSubject) {
 
         final Stream<String> roles = Stream.concat(
@@ -169,8 +171,8 @@ public class AuthenticatorShiro implements Authenticator {
                 // copy over any roles passed in
                 // (this is used by the Wicket viewer, for example).
                 request.streamRoles());
-        
-        val user = UserMemento.ofNameAndRoleNames(request.getName(), roles); 
+
+        val user = UserMemento.ofNameAndRoleNames(request.getName(), roles);
         return SimpleAuthentication.of(user, validationCode);
     }
 
diff --git a/security/shiro/src/main/java/org/apache/isis/security/shiro/authorization/AuthorizorShiro.java b/security/shiro/src/main/java/org/apache/isis/security/shiro/authorization/AuthorizorShiro.java
index 8045e7c..636e2b5 100644
--- a/security/shiro/src/main/java/org/apache/isis/security/shiro/authorization/AuthorizorShiro.java
+++ b/security/shiro/src/main/java/org/apache/isis/security/shiro/authorization/AuthorizorShiro.java
@@ -52,13 +52,15 @@ import lombok.val;
  * However, although there are two objects, they are set up to share the same {@link SecurityManager Shiro SecurityManager}
  * (bound to a thread-local).
  * </p>
+ *
+ * @since 1.x {@index}
  */
 @Service
 @Named("isis.security.AuthorizorShiro")
 @Order(OrderPrecedence.EARLY)
 @Qualifier("Shiro")
 public class AuthorizorShiro implements Authorizor {
-    
+
     @Inject private SpecificationLoader specificationLoader;
 
     @Override
@@ -125,7 +127,7 @@ public class AuthorizorShiro implements Authorizor {
     }
 
     // -- DEPS
-    
+
     /**
      * The {@link SecurityManager} is shared between both the {@link Authenticator} and the {@link Authorizor}
      * (if shiro is configured for both components).
@@ -133,12 +135,12 @@ public class AuthorizorShiro implements Authorizor {
     protected RealmSecurityManager getSecurityManager() {
         return ShiroSecurityContext.getSecurityManager();
     }
-    
+
     // -- HELPER
-    
+
     /**
      * @deprecated while this is technically correct, we should not need to call the SpecificationLoader
-     * on every permission check 
+     * on every permission check
      */
     private String asFeatureFqns(Identifier identifier) {
         val className = identifier.getClassName();
@@ -146,7 +148,7 @@ public class AuthorizorShiro implements Authorizor {
                 .<String>mapSuccess(this::asFeatureFqns)
                 .orElse(className);
     }
-    
+
     private String asFeatureFqns(Class<?> cls) {
         return Optional.ofNullable(specificationLoader.loadSpecification(cls))
                 .map(ObjectSpecification::getSpecId)
diff --git a/security/shiro/src/main/java/org/apache/isis/security/shiro/authorization/IsisPermission.java b/security/shiro/src/main/java/org/apache/isis/security/shiro/authorization/IsisPermission.java
index ea16d31..3877e72 100644
--- a/security/shiro/src/main/java/org/apache/isis/security/shiro/authorization/IsisPermission.java
+++ b/security/shiro/src/main/java/org/apache/isis/security/shiro/authorization/IsisPermission.java
@@ -29,6 +29,9 @@ import org.apache.isis.commons.internal.collections._Multimaps.ListMultimap;
 
 import lombok.val;
 
+/**
+ * @since 1.x {@index}
+ */
 public class IsisPermission extends WildcardPermission {
 
     private static final long serialVersionUID = 1L;
@@ -89,10 +92,10 @@ public class IsisPermission extends WildcardPermission {
     public String toString() {
         return (isVetoed?"!":"") + (permissionGroup != null? permissionGroup + "/": "") + super.toString();
     }
-    
+
     // -- HELPER
-    
-    private static final ThreadLocal<ListMultimap<String, IsisPermission>> VETOING_PERMISSIONS = 
+
+    private static final ThreadLocal<ListMultimap<String, IsisPermission>> VETOING_PERMISSIONS =
             ThreadLocal.withInitial(_Multimaps::newListMultimap);
 
     public static void resetVetoedPermissions() {
@@ -114,7 +117,7 @@ public class IsisPermission extends WildcardPermission {
         val vetoMultimap = IsisPermission.VETOING_PERMISSIONS.get();
         vetoMultimap.putElement(permissionGroup, vetoingPermission);
     }
-    
+
     private boolean impliesWithoutVeto(Permission p) {
         return super.implies(p);
     }
diff --git a/security/shiro/src/main/java/org/apache/isis/security/shiro/authorization/IsisPermissionResolver.java b/security/shiro/src/main/java/org/apache/isis/security/shiro/authorization/IsisPermissionResolver.java
index e9ec4e9..99862a2 100644
--- a/security/shiro/src/main/java/org/apache/isis/security/shiro/authorization/IsisPermissionResolver.java
+++ b/security/shiro/src/main/java/org/apache/isis/security/shiro/authorization/IsisPermissionResolver.java
@@ -21,6 +21,9 @@ package org.apache.isis.security.shiro.authorization;
 import org.apache.shiro.authz.Permission;
 import org.apache.shiro.authz.permission.PermissionResolver;
 
+/**
+ * @since 1.x {@index}
+ */
 public class IsisPermissionResolver implements PermissionResolver {
 
     public IsisPermissionResolver(){
diff --git a/security/shiro/src/main/java/org/apache/isis/security/shiro/webmodule/WebModuleShiro.java b/security/shiro/src/main/java/org/apache/isis/security/shiro/webmodule/WebModuleShiro.java
index 12b50c0..ebcc42a 100644
--- a/security/shiro/src/main/java/org/apache/isis/security/shiro/webmodule/WebModuleShiro.java
+++ b/security/shiro/src/main/java/org/apache/isis/security/shiro/webmodule/WebModuleShiro.java
@@ -61,7 +61,8 @@ import lombok.extern.log4j.Log4j2;
  * WebModule to enable support for Shiro.
  * <p>
  * Can be customized via static {@link WebModuleShiro#setShiroEnvironmentClass(Class)}
- * @since 2.0
+ *
+ * @since 2.0 {@index}
  */
 @Service
 @Named("isis.security.WebModuleShiro")
@@ -69,7 +70,7 @@ import lombok.extern.log4j.Log4j2;
 @Qualifier("Shiro")
 @Log4j2
 public class WebModuleShiro extends WebModuleAbstract {
-    
+
 
     private static final String SHIRO_FILTER_NAME = "ShiroFilter";
 
@@ -84,7 +85,7 @@ public class WebModuleShiro extends WebModuleAbstract {
         if(shiroEnvironmentClass==null) {
             System.setProperty("shiroEnvironmentClass", null);
             return;
-        } 
+        }
         System.setProperty("shiroEnvironmentClass", shiroEnvironmentClass.getName());
     }
 
@@ -95,8 +96,8 @@ public class WebModuleShiro extends WebModuleAbstract {
             if(_Strings.isNotEmpty(customShiroIniResource)) {
                 val ini = new Ini();
                 ini.loadFromPath(customShiroIniResource);
-                return ini;	
-            } 
+                return ini;
+            }
             return null;
         }
         // see https://issues.apache.org/jira/browse/SHIRO-610
@@ -117,7 +118,7 @@ public class WebModuleShiro extends WebModuleAbstract {
         System.setProperty("shiroIniResource", resourcePath);
         setShiroEnvironmentClass(IniWebEnvironmentUsingSystemProperty.class);
     }
-    
+
     /**
      * Adds support for dependency injection into security realms
      * @since 2.0
@@ -137,16 +138,16 @@ public class WebModuleShiro extends WebModuleAbstract {
             super.contextInitialized(sce);
         }
 
-        @Override 
+        @Override
         protected WebEnvironment createEnvironment(ServletContext servletContext) {
             val shiroEnvironment = super.createEnvironment(servletContext);
             val securityManager = shiroEnvironment.getSecurityManager();
 
             injectServicesIntoRealms(securityManager);
-            
+
             return shiroEnvironment;
         }
-        
+
         @SuppressWarnings("unchecked")
         @SneakyThrows
         public void injectServicesIntoRealms(
@@ -160,16 +161,16 @@ public class WebModuleShiro extends WebModuleAbstract {
                         + "As a consequence cannot enumerate realms.");
                 return;
             }
-            
+
             val realms = (Collection<Realm>) realmsGetter
                     .invoke(securityManager, _Constants.emptyObjects);
 
             realms.stream().forEach(serviceInjector::injectServicesInto);
         }
-        
+
     }
 
-    // -- 
+    // --
 
     @Getter
     private final String name = "Shiro";
@@ -189,7 +190,7 @@ public class WebModuleShiro extends WebModuleAbstract {
         registerFilter(ctx, SHIRO_FILTER_NAME, ShiroFilter.class)
             .ifPresent(filterReg -> {
                 filterReg.addMappingForUrlPatterns(
-                        EnumSet.of(DispatcherType.REQUEST, DispatcherType.ASYNC), 
+                        EnumSet.of(DispatcherType.REQUEST, DispatcherType.ASYNC),
                         false, // filter is forced first
                         "/*");
             });
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/Chained.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/Chained.java
index b936e8e..5893a74 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/Chained.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/Chained.java
@@ -25,30 +25,33 @@ import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.subdomains.base.applib.with.WithInterval;
 import org.apache.isis.subdomains.base.applib.with.WithIntervalContiguous;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface Chained<T extends Chained<T>> {
 
-    
+
     /**
      * The object (usually an {@link WithInterval}, but not necessarily) that precedes this one, if any (not
      * necessarily contiguously)..
-     * 
+     *
      * <p>
-     * Implementations where successive intervals are contiguous should instead implement 
+     * Implementations where successive intervals are contiguous should instead implement
      * {@link WithIntervalContiguous}.
      */
     @Property(editing = Editing.DISABLED, hidden=Where.ALL_TABLES, optionality = Optionality.OPTIONAL)
     public T getPrevious();
 
     /**
-     * The object (usually an {@link WithInterval}, but not necessarily) that succeeds this one, if any (not 
+     * The object (usually an {@link WithInterval}, but not necessarily) that succeeds this one, if any (not
      * necessarily contiguously).
-     * 
+     *
      * <p>
-     * Implementations where successive intervals are contiguous should instead implement 
+     * Implementations where successive intervals are contiguous should instead implement
      * {@link WithIntervalContiguous}.
      */
     @Property(editing = Editing.DISABLED, hidden=Where.ALL_TABLES, optionality = Optionality.OPTIONAL)
     public T getNext();
-    
-    
+
+
 }
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/Dflt.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/Dflt.java
index 71f59da..d4f1ac9 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/Dflt.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/Dflt.java
@@ -22,6 +22,9 @@ import java.util.Collection;
 
 import org.apache.isis.applib.annotation.Programmatic;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class Dflt {
 
     private Dflt(){}
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/IsisModuleSubdomainsBaseApplib.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/IsisModuleSubdomainsBaseApplib.java
index ce171d5..252db1e 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/IsisModuleSubdomainsBaseApplib.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/IsisModuleSubdomainsBaseApplib.java
@@ -20,6 +20,9 @@ package org.apache.isis.subdomains.base.applib;
 
 import org.springframework.context.annotation.Configuration;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 public class IsisModuleSubdomainsBaseApplib {
 }
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/PowerType.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/PowerType.java
index 75daaad..420cb89 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/PowerType.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/PowerType.java
@@ -23,6 +23,8 @@ import org.apache.isis.applib.services.factory.FactoryService;
 /**
  * For <tt>enum</tt>s that act as powertypes, in other words acting as a factory
  * for subtypes of some inheritance hierarchy.
+ *
+ * @since 2.0 {@index}
  */
 public interface PowerType<T> {
 
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/Titled.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/Titled.java
index 7556838..c49a2f1 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/Titled.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/Titled.java
@@ -18,8 +18,9 @@
  */
 package org.apache.isis.subdomains.base.applib;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface Titled {
-    
     String title();
-
 }
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/TitledEnum.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/TitledEnum.java
index ef8b209..6eb5d66 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/TitledEnum.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/TitledEnum.java
@@ -23,7 +23,9 @@ import org.apache.isis.subdomains.base.applib.utils.StringUtils;
 /**
  * An enum that implements {@link Titled} and moreover its {@link #title()}
  * is derived according to the {@link StringUtils#enumTitle(String)} algorithm.
+ *
+ * @since 2.0 {@index}
  */
 public interface TitledEnum extends Titled {
-    
+
 }
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/services/BaseServicesModule.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/services/BaseServicesModule.java
index bd0065c..e0804ac 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/services/BaseServicesModule.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/services/BaseServicesModule.java
@@ -21,6 +21,9 @@ package org.apache.isis.subdomains.base.applib.services;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @ComponentScan
 public class BaseServicesModule {
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/services/calendar/CalendarService.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/services/calendar/CalendarService.java
index 6a4198d..48a2455 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/services/calendar/CalendarService.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/services/calendar/CalendarService.java
@@ -32,6 +32,9 @@ import org.springframework.stereotype.Service;
 import org.apache.isis.applib.annotation.OrderPrecedence;
 import org.apache.isis.applib.services.clock.ClockService;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isis.sub.base.CalendarService")
 @Order(OrderPrecedence.MIDPOINT)
@@ -40,9 +43,9 @@ import org.apache.isis.applib.services.clock.ClockService;
 public class CalendarService {
 
     private static final int MONTHS_IN_QUARTER = 3;
-    
+
     private ClockService clockService;
-    
+
     @Inject
     public CalendarService(ClockService clockService) {
         this.clockService = clockService;
@@ -64,7 +67,7 @@ public class CalendarService {
     public LocalDate beginningOfNextQuarter() {
         return beginningOfQuarter(nowAsLocalDate().plusMonths(3));
     }
-    
+
     static LocalDate beginningOfQuarter(final LocalDate date) {
         final LocalDate beginningOfMonth = beginningOfMonth(date);
         final int monthOfYear = beginningOfMonth.getMonthValue();
@@ -77,7 +80,7 @@ public class CalendarService {
     private LocalDate nowAsLocalDate() {
         return clockService.getClock().localDate(ZoneId.systemDefault());
     }
-    
+
     /**
      * @deprecated - use {@link ClockService#getClock()}.getEpochMillis()
      */
@@ -86,5 +89,5 @@ public class CalendarService {
         return clockService.getClock().getEpochMillis();
     }
 
-    
+
 }
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/DescriptionType.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/DescriptionType.java
index b553516..2c08e75 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/DescriptionType.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/DescriptionType.java
@@ -20,6 +20,9 @@ package org.apache.isis.subdomains.base.applib.types;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public class DescriptionType {
 
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/FqcnType.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/FqcnType.java
index 33f19aa..f91a4ea 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/FqcnType.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/FqcnType.java
@@ -20,6 +20,9 @@ package org.apache.isis.subdomains.base.applib.types;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public class FqcnType {
 
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/MoneyType.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/MoneyType.java
index 217545a..42e2490 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/MoneyType.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/MoneyType.java
@@ -20,6 +20,9 @@ package org.apache.isis.subdomains.base.applib.types;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public class MoneyType {
 
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/NameType.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/NameType.java
index db835d0..bdea9bf 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/NameType.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/NameType.java
@@ -20,6 +20,9 @@ package org.apache.isis.subdomains.base.applib.types;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public class NameType {
 
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/NotesType.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/NotesType.java
index 15c8c25..db77526 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/NotesType.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/NotesType.java
@@ -20,6 +20,9 @@ package org.apache.isis.subdomains.base.applib.types;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public class NotesType {
 
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/ObjectIdentifierType.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/ObjectIdentifierType.java
index 0dc1e3b..4abf1e1 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/ObjectIdentifierType.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/ObjectIdentifierType.java
@@ -20,6 +20,9 @@ package org.apache.isis.subdomains.base.applib.types;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public class ObjectIdentifierType {
 
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/PercentageType.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/PercentageType.java
index 46002dc..5280f44 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/PercentageType.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/PercentageType.java
@@ -20,6 +20,9 @@ package org.apache.isis.subdomains.base.applib.types;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public class PercentageType {
 
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/ProperNameType.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/ProperNameType.java
index 374965f..08ef75b 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/ProperNameType.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/ProperNameType.java
@@ -20,6 +20,9 @@ package org.apache.isis.subdomains.base.applib.types;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public class ProperNameType {
 
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/ReferenceType.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/ReferenceType.java
index eb5e67d..25a0656 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/ReferenceType.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/ReferenceType.java
@@ -20,6 +20,9 @@ package org.apache.isis.subdomains.base.applib.types;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public class ReferenceType {
 
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/TitleType.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/TitleType.java
index 884e823..4e27d1b 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/TitleType.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/TitleType.java
@@ -20,6 +20,9 @@ package org.apache.isis.subdomains.base.applib.types;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public class TitleType {
 
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/UrlTemplateType.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/UrlTemplateType.java
index 390f7ef..f350eb9 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/UrlTemplateType.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/UrlTemplateType.java
@@ -20,6 +20,9 @@ package org.apache.isis.subdomains.base.applib.types;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public class UrlTemplateType {
 
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/UserNameType.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/UserNameType.java
index 3fadb11..c19b026 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/UserNameType.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/UserNameType.java
@@ -20,6 +20,9 @@ package org.apache.isis.subdomains.base.applib.types;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public class UserNameType {
 
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/XxxType.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/XxxType.java
index f05d812..c11108e 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/XxxType.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/types/XxxType.java
@@ -20,6 +20,9 @@ package org.apache.isis.subdomains.base.applib.types;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 @UtilityClass
 public class XxxType {
 
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/ClassUtils.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/ClassUtils.java
index 436009d..102926d 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/ClassUtils.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/ClassUtils.java
@@ -18,8 +18,11 @@
  */
 package org.apache.isis.subdomains.base.applib.utils;
 
+/**
+ * @since 2.0 {@index}
+ */
 public final class ClassUtils {
-    
+
     private ClassUtils(){}
 
     @SuppressWarnings("unchecked")
@@ -28,11 +31,11 @@ public final class ClassUtils {
         try {
             clsx = Thread.currentThread().getContextClassLoader().loadClass(clsName);
         } catch (ClassNotFoundException e) {
-            throw new IllegalArgumentException("Class '" + clsName + "' not found"); 
+            throw new IllegalArgumentException("Class '" + clsName + "' not found");
+        }
+        if (!cls.isAssignableFrom(clsx)) {
+            throw new IllegalArgumentException("Class '" + clsName + "' not a subclass of " + cls.getName());
         }
-        if (!cls.isAssignableFrom(clsx)) { 
-            throw new IllegalArgumentException("Class '" + clsName + "' not a subclass of " + cls.getName()); 
-        } 
         return (Class<? extends T>) clsx;
     }
 
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/JodaPeriodUtils.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/JodaPeriodUtils.java
index 7275d37..e3d426a 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/JodaPeriodUtils.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/JodaPeriodUtils.java
@@ -24,6 +24,8 @@ import org.joda.time.format.PeriodFormatterBuilder;
 
 /**
  * Utilities for manipulating parsing JODA {@link Period}s.
+ *
+ * @since 2.0 {@index}
  */
 public final class JodaPeriodUtils {
 
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/MathUtils.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/MathUtils.java
index c99e2c1..d307a32 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/MathUtils.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/MathUtils.java
@@ -23,11 +23,13 @@ import java.math.MathContext;
 
 /**
  * General-purpose math utilities.
+ *
+ * @since 2.0 {@index}
  */
 public final class MathUtils {
-    
+
     private MathUtils() {}
-    
+
     public static BigDecimal round(final BigDecimal input, final int precision) {
         final MathContext mc = new MathContext(precision+1);
         return input.round(mc);
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/MessageUtils.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/MessageUtils.java
index 74f88af..285d68b 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/MessageUtils.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/MessageUtils.java
@@ -23,6 +23,9 @@ import java.util.regex.Pattern;
 
 import org.apache.isis.commons.internal.base._Strings;
 
+/**
+ * @since 2.0 {@index}
+ */
 public final class MessageUtils {
 
     private MessageUtils(){}
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/StringUtils.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/StringUtils.java
index d8e35bb..5c9a402 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/StringUtils.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/StringUtils.java
@@ -23,6 +23,9 @@ import java.util.stream.Collectors;
 
 import org.apache.isis.commons.internal.base._Strings;
 
+/**
+ * @since 2.0 {@index}
+ */
 public final class StringUtils {
 
     private StringUtils() {
@@ -33,7 +36,7 @@ public final class StringUtils {
                 ? StringUtils.capitalize(input.toLowerCase())
                 : null;
     };
-    
+
     private static UnaryOperator<String> UPPER_CASE = (final String input) -> {
         return input != null
                 ? StringUtils.capitalize(input.toUpperCase())
@@ -45,7 +48,7 @@ public final class StringUtils {
         if(string == null) {
             return null;
         }
-        
+
         return _Strings.splitThenStream(string, "_")
         .map(LOWER_CASE_THEN_CAPITALIZE)
         .collect(Collectors.joining(" "));
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/TitleBuilder.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/TitleBuilder.java
index 0c5db71..d6f4ff4 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/TitleBuilder.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/utils/TitleBuilder.java
@@ -23,7 +23,11 @@ import java.lang.reflect.Method;
 
 import org.apache.isis.applib.util.TitleBufferException;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class TitleBuilder {
+
     private static final String SPACE = " ";
     private static final String DELIMITER = "[]";
     private static final String PARENT_SEPARATOR = " > ";
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/valuetypes/AbstractInterval.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/valuetypes/AbstractInterval.java
index 5a5c9c8..9374522 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/valuetypes/AbstractInterval.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/valuetypes/AbstractInterval.java
@@ -23,6 +23,9 @@ import org.joda.time.LocalDate;
 import org.joda.time.Period;
 import org.joda.time.PeriodType;
 
+/**
+ * @since 2.0 {@index}
+ */
 public abstract class AbstractInterval<T extends AbstractInterval<T>> {
 
     public enum IntervalEnding {
@@ -64,7 +67,7 @@ public abstract class AbstractInterval<T extends AbstractInterval<T>> {
 
     /**
      * Determines how end dates are shown in the ui and stored in the database:
-     * 
+     *
      * {@link IntervalEnding#EXCLUDING_END_DATE} uses the start date of the next interval as end date.
      * {@link IntervalEnding#INCLUDING_END_DATE} used the last day of the interval as the end date.
      */
@@ -99,7 +102,7 @@ public abstract class AbstractInterval<T extends AbstractInterval<T>> {
 
     /**
      * Does this date contain the specified time interval.
-     * 
+     *
      * @param date
      * @return
      */
@@ -121,7 +124,7 @@ public abstract class AbstractInterval<T extends AbstractInterval<T>> {
 
     /**
      * Does this time interval contain the specified time interval.
-     * 
+     *
      * @param localDateInterval
      * @return
      */
@@ -131,7 +134,7 @@ public abstract class AbstractInterval<T extends AbstractInterval<T>> {
 
     /**
      * The duration in days
-     * 
+     *
      * @return
      */
     public int days() {
@@ -179,10 +182,10 @@ public abstract class AbstractInterval<T extends AbstractInterval<T>> {
     protected String dateToString(LocalDate localDate, String format) {
         return localDate == null ? "----------" : localDate.toString(format);
     }
-    
+
     /**
      * Gets the overlap between this interval and another interval.
-     * 
+     *
      * @param otherInterval
      * @return
      */
@@ -215,7 +218,7 @@ public abstract class AbstractInterval<T extends AbstractInterval<T>> {
 
     /**
      * Does this time interval contain the specified time interval.
-     * 
+     *
      * @param interval
      * @return
      */
@@ -232,7 +235,7 @@ public abstract class AbstractInterval<T extends AbstractInterval<T>> {
 
     /**
      * Does this interval is within the specified interval
-     * 
+     *
      * @param interval
      * @return
      */
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/valuetypes/LocalDateInterval.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/valuetypes/LocalDateInterval.java
index 9df0e28..8a1c2fb 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/valuetypes/LocalDateInterval.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/valuetypes/LocalDateInterval.java
@@ -23,6 +23,9 @@ import java.util.Objects;
 import org.joda.time.Interval;
 import org.joda.time.LocalDate;
 
+/**
+ * @since 2.0 {@index}
+ */
 public class LocalDateInterval extends AbstractInterval<LocalDateInterval>{
 
     public static LocalDateInterval excluding(final LocalDate startDate, final LocalDate endDate) {
@@ -34,7 +37,7 @@ public class LocalDateInterval extends AbstractInterval<LocalDateInterval>{
     }
 
     // //////////////////////////////////////
-    
+
     public LocalDateInterval() {
     }
 
@@ -89,7 +92,7 @@ public class LocalDateInterval extends AbstractInterval<LocalDateInterval>{
                         .append(dateToString(endDateExcluding()));
         return builder.toString();
     }
-    
+
     public String toString(String format) {
         StringBuilder builder =
                 new StringBuilder(
@@ -100,12 +103,12 @@ public class LocalDateInterval extends AbstractInterval<LocalDateInterval>{
     }
 
     // //////////////////////////////////////
-    
+
     /**
      * Parse a string representation of a LocalDateInterval
-     * 
+     *
      * Since this method is only used for testing it's not heavily guarded against illegal arguments
-     * 
+     *
      * @param input  a string with format yyyy-mm-dd/yyyy-mm-dd, end date is excluding
      * @return
      */
@@ -120,7 +123,7 @@ public class LocalDateInterval extends AbstractInterval<LocalDateInterval>{
 
     /**
      * Parse a string to a LocalDate
-     * 
+     *
      * @param input  a string representing a parsable LocalDate, "*" or "----------" returns null
      * @return
      */
@@ -133,14 +136,14 @@ public class LocalDateInterval extends AbstractInterval<LocalDateInterval>{
 
 
     /**
-     * Returns an end date given the start date of the next adjoining interverval 
-     * 
+     * Returns an end date given the start date of the next adjoining interverval
+     *
      * @param date
      * @return
      */
     public static LocalDate endDateFromStartDate(LocalDate date) {
         return new LocalDateInterval(date, null).endDateFromStartDate();
-        
+
     }
-    
+
 }
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/valuetypes/VT.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/valuetypes/VT.java
index 14c6a5d..4d98741 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/valuetypes/VT.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/valuetypes/VT.java
@@ -26,12 +26,14 @@ import org.joda.time.LocalDate;
 
 /**
  * Factory methods for value types
+ *
+ * @since 2.0 {@index}
  */
 public final class VT {
 
     private VT(){}
 
-    // //////////////////////////////////////
+
 
     public static LocalDateInterval ldi(String intervalStr) {
         return intervalStr != null? LocalDateInterval.parseString(intervalStr) : null;
@@ -45,7 +47,7 @@ public final class VT {
         return ldi(st, endDate, AbstractInterval.IntervalEnding.EXCLUDING_END_DATE);
     }
 
-    // //////////////////////////////////////
+
 
     /**
      *
@@ -59,7 +61,8 @@ public final class VT {
         return new LocalDate(yyyy,mm,dd);
     }
 
-    // //////////////////////////////////////
+
+
 
     public static BigInteger bi(int val) {
         return BigInteger.valueOf(val);
@@ -68,7 +71,8 @@ public final class VT {
         return val != null ? bi(val): null;
     }
 
-    // //////////////////////////////////////
+
+
 
     public static BigDecimal bd(String str) {
         return new BigDecimal(str);
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithCodeComparable.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithCodeComparable.java
index a81fd8f..2faa51a 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithCodeComparable.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithCodeComparable.java
@@ -18,6 +18,9 @@
  */
 package org.apache.isis.subdomains.base.applib.with;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface WithCodeComparable<T extends WithCodeComparable<T>> extends Comparable<T>, WithCodeGetter {
     void setCode(String code);
-}
\ No newline at end of file
+}
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithCodeGetter.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithCodeGetter.java
index 0e84285..d0d884a 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithCodeGetter.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithCodeGetter.java
@@ -22,13 +22,15 @@ import org.apache.isis.applib.util.ObjectContracts.ToStringEvaluator;
 
 /**
  * Indicates that the implementing class has a {@link #getCode() code}.
+ *
+ * @since 2.0 {@index}
  */
 public interface WithCodeGetter {
 
     public String getCode();
-    
+
     /**
-     * Utility class for obtaining the string value of an object that implements {@link WithCodeGetter}. 
+     * Utility class for obtaining the string value of an object that implements {@link WithCodeGetter}.
      */
     public static final class ToString {
         private ToString() {}
@@ -38,7 +40,7 @@ public interface WithCodeGetter {
                 public boolean canEvaluate(final Object o) {
                     return o instanceof WithCodeGetter;
                 }
-                
+
                 @Override
                 public String evaluate(final Object o) {
                     return ((WithCodeGetter)o).getCode();
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithCodeUnique.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithCodeUnique.java
index 2e3c33a..c0da8f6 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithCodeUnique.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithCodeUnique.java
@@ -18,6 +18,9 @@
  */
 package org.apache.isis.subdomains.base.applib.with;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface WithCodeUnique extends WithCodeGetter {
 
 }
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithDescriptionComparable.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithDescriptionComparable.java
index a493f68..a50386b 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithDescriptionComparable.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithDescriptionComparable.java
@@ -18,7 +18,10 @@
  */
 package org.apache.isis.subdomains.base.applib.with;
 
-public interface WithDescriptionComparable<T extends WithDescriptionComparable<T>> 
+/**
+ * @since 2.0 {@index}
+ */
+public interface WithDescriptionComparable<T extends WithDescriptionComparable<T>>
         extends Comparable<T>, WithDescriptionGetter {
     void setDescription(String description);
-}
\ No newline at end of file
+}
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithDescriptionGetter.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithDescriptionGetter.java
index 384e0c7..fde15f2 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithDescriptionGetter.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithDescriptionGetter.java
@@ -22,13 +22,15 @@ import org.apache.isis.applib.util.ObjectContracts.ToStringEvaluator;
 
 /**
  * Indicates that the implementing class has a {@link #getDescription() description}.
+ *
+ * @since 2.0 {@index}
  */
 public interface WithDescriptionGetter {
 
     public String getDescription();
-    
+
     /**
-     * Utility class for obtaining the string value of an object that implements {@link WithDescriptionGetter}. 
+     * Utility class for obtaining the string value of an object that implements {@link WithDescriptionGetter}.
      */
     public static final class ToString {
         private ToString() {}
@@ -38,7 +40,7 @@ public interface WithDescriptionGetter {
                 public boolean canEvaluate(final Object o) {
                     return o instanceof WithDescriptionGetter;
                 }
-                
+
                 @Override
                 public String evaluate(final Object o) {
                     return ((WithDescriptionGetter)o).getDescription();
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithDescriptionUnique.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithDescriptionUnique.java
index 9524b00..dc89c46 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithDescriptionUnique.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithDescriptionUnique.java
@@ -18,6 +18,9 @@
  */
 package org.apache.isis.subdomains.base.applib.with;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface WithDescriptionUnique extends WithDescriptionGetter {
 
 }
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithInterval.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithInterval.java
index 662574e..501f4a5 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithInterval.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithInterval.java
@@ -32,11 +32,14 @@ import org.apache.isis.subdomains.base.applib.valuetypes.LocalDateInterval;
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface WithInterval<T extends WithInterval<T>> extends WithStartDate {
 
     /**
      * The start date of the interval.
-     * 
+     *
      * <p>
      * A value of <tt>null</tt> implies that the parent's start date should be used. If
      * that is <tt>null</tt>, then implies 'the beginning of time'.
@@ -48,7 +51,7 @@ public interface WithInterval<T extends WithInterval<T>> extends WithStartDate {
 
     /**
      * The end date of the interval.
-     * 
+     *
      * <p>
      * A value of <tt>null</tt> implies that the parent's end date should be used. If
      * that is <tt>null</tt>, then implies 'the end of time'.
@@ -125,7 +128,7 @@ public interface WithInterval<T extends WithInterval<T>> extends WithStartDate {
         // }
 
         public static <T extends WithInterval<T>> T firstElseNull(
-                final SortedSet<T> roles, 
+                final SortedSet<T> roles,
                 final Predicate<T> predicate) {
             return _NullSafe.stream(roles)
             .filter(predicate)
@@ -136,7 +139,7 @@ public interface WithInterval<T extends WithInterval<T>> extends WithStartDate {
 
     @UtilityClass
     public static final class Predicates {
-        
+
         /**
          * A {@link Predicate} that tests whether the role's {@link WithInterval#isCurrent() current}
          * status is the specified value.
@@ -148,5 +151,5 @@ public interface WithInterval<T extends WithInterval<T>> extends WithStartDate {
         }
 
     }
-    
+
 }
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithIntervalContiguous.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithIntervalContiguous.java
index a4f46db..940b074 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithIntervalContiguous.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithIntervalContiguous.java
@@ -34,17 +34,20 @@ import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.subdomains.base.applib.Chained;
 
-public interface WithIntervalContiguous<T extends WithIntervalContiguous<T>> 
+/**
+ * @since 2.0 {@index}
+ */
+public interface WithIntervalContiguous<T extends WithIntervalContiguous<T>>
         extends WithIntervalMutable<T>, Comparable<T> {
 
-    
+
     /**
      * The interval that immediately precedes this one, if any.
-     * 
+     *
      * <p>
      * The predecessor's {@link #getEndDate() end date} is the day before this interval's
      * {@link #getStartDate() start date}.
-     * 
+     *
      * <p>
      * Implementations where successive intervals are NOT contiguous should instead implement {@link Chained}.
      */
@@ -53,43 +56,43 @@ public interface WithIntervalContiguous<T extends WithIntervalContiguous<T>>
 
     /**
      * The interval that immediately succeeds this one, if any.
-     * 
+     *
      * <p>
      * The successor's {@link #getStartDate() start date} is the day after this interval's
      * {@link #getEndDate() end date}.
-     * 
+     *
      * <p>
      * Implementations where successive intervals are NOT contiguous should instead implement {@link Chained}.
      */
     @Property(editing = Editing.DISABLED, hidden=Where.ALL_TABLES, optionality = Optionality.OPTIONAL)
     public T getSuccessor();
-    
-    
+
+
 
     /**
      * Show this {@link WithIntervalContiguous} in context with its
      * predecessors and successors.
-     * 
+     *
      * <p>
      * This will typically (always) be a derived collection obtained
      * by filtering a collection of the "parent".
      */
     @Property(editing = Editing.DISABLED)
     public SortedSet<T> getTimeline();
-    
+
 
     // //////////////////////////////////////
 
-    
+
     public interface Factory<T extends WithIntervalContiguous<T>> {
         T newRole(LocalDate startDate, LocalDate endDate);
     }
-    
+
     /**
      * Helper class for implementations to delegate to.
      */
     public static class Helper<T extends WithIntervalContiguous<T>> {
-        
+
         private final T withInterval;
         public Helper(final T withInterval) {
             this.withInterval = withInterval;
@@ -98,7 +101,7 @@ public interface WithIntervalContiguous<T extends WithIntervalContiguous<T>>
         // //////////////////////////////////////
 
         public T succeededBy(
-                final LocalDate startDate, 
+                final LocalDate startDate,
                 final LocalDate endDate,
                 final WithIntervalContiguous.Factory<T> factory) {
             final WithInterval<?> successor = withInterval.getSuccessor();
@@ -114,7 +117,7 @@ public interface WithIntervalContiguous<T extends WithIntervalContiguous<T>>
         }
 
         public String validateSucceededBy(
-                final LocalDate startDate, 
+                final LocalDate startDate,
                 final LocalDate endDate) {
             if(startDate != null && endDate != null && startDate.isAfter(endDate)) {
                 return "End date cannot be earlier than start date";
@@ -133,15 +136,15 @@ public interface WithIntervalContiguous<T extends WithIntervalContiguous<T>>
             }
             return null;
         }
-        
+
         // //////////////////////////////////////
 
 
         public T precededBy(
-                final LocalDate startDate, 
+                final LocalDate startDate,
                 final LocalDate endDate,
                 final WithIntervalContiguous.Factory<T> factory) {
-            
+
             final WithInterval<?> predecessor = withInterval.getPredecessor();
             if(predecessor != null) {
                 predecessor.setEndDate(dayBeforeElseNull(startDate));
@@ -149,13 +152,13 @@ public interface WithIntervalContiguous<T extends WithIntervalContiguous<T>>
             withInterval.setStartDate(dayAfterElseNull(endDate));
             return factory.newRole(startDate, endDate);
         }
-         
+
         public LocalDate default2PrecededBy() {
             return dayBeforeElseNull(withInterval.getStartDate());
         }
 
         public String validatePrecededBy(
-                final LocalDate startDate, 
+                final LocalDate startDate,
                 final LocalDate endDate) {
             if(startDate != null && endDate != null && startDate.isAfter(endDate)) {
                 return "End date cannot be earlier than start date";
@@ -213,13 +216,13 @@ public interface WithIntervalContiguous<T extends WithIntervalContiguous<T>>
             .filter(filter)
             .collect(Collectors.toCollection(TreeSet::new));
         }
-        
+
         // //////////////////////////////////////
 
         public T changeDates(
-                final LocalDate startDate, 
+                final LocalDate startDate,
                 final LocalDate endDate) {
-            
+
             final T predecessor = withInterval.getPredecessor();
             if(predecessor != null) {
                 predecessor.setEndDate(dayBeforeElseNull(startDate));
@@ -236,13 +239,13 @@ public interface WithIntervalContiguous<T extends WithIntervalContiguous<T>>
         public LocalDate default0ChangeDates() {
             return withInterval.getEffectiveInterval().startDate();
         }
-        
+
         public LocalDate default1ChangeDates() {
             return withInterval.getEffectiveInterval().endDate();
         }
 
         public String validateChangeDates(
-                final LocalDate startDate, 
+                final LocalDate startDate,
                 final LocalDate endDate) {
 
             if(startDate != null && endDate != null && startDate.isAfter(endDate)) {
@@ -268,7 +271,7 @@ public interface WithIntervalContiguous<T extends WithIntervalContiguous<T>>
             }
             return null;
         }
-        
+
         // //////////////////////////////////////
 
         private static LocalDate dayBeforeElseNull(final LocalDate date) {
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithIntervalMutable.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithIntervalMutable.java
index 4d41952..723435a 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithIntervalMutable.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithIntervalMutable.java
@@ -26,6 +26,9 @@ import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.subdomains.base.applib.valuetypes.LocalDateInterval;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface WithIntervalMutable<T extends WithIntervalMutable<T>> extends WithInterval<T> {
 
     @Action(semantics = SemanticsOf.IDEMPOTENT)
@@ -43,7 +46,7 @@ public interface WithIntervalMutable<T extends WithIntervalMutable<T>> extends W
 
     /**
      * Helper class for implementations to delegate to.
-     * 
+     *
      * <p>
      * If the class implements {@link WithIntervalContiguous} then use
      * {@link WithIntervalContiguous.Helper} instead.
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithNameComparable.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithNameComparable.java
index d6c572b..914afb3 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithNameComparable.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithNameComparable.java
@@ -18,7 +18,9 @@
  */
 package org.apache.isis.subdomains.base.applib.with;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface WithNameComparable<T extends WithNameComparable<T>> extends Comparable<T>, WithNameGetter {
-    
     void setName(String name);
-}
\ No newline at end of file
+}
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithNameGetter.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithNameGetter.java
index 9dff134..b3bcbb9 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithNameGetter.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithNameGetter.java
@@ -22,13 +22,15 @@ import org.apache.isis.applib.util.ObjectContracts;
 
 /**
  * Indicates that the implementing class has a {@link #getName() name}.
+ *
+ * @since 2.0 {@index}
  */
 public interface WithNameGetter {
 
     public String getName();
-    
+
     /**
-     * Utility class for obtaining the string value of an object that implements {@link WithNameGetter}. 
+     * Utility class for obtaining the string value of an object that implements {@link WithNameGetter}.
      */
     public static final class ToString {
         private ToString() {}
@@ -38,7 +40,7 @@ public interface WithNameGetter {
                 public boolean canEvaluate(final Object o) {
                     return o instanceof WithNameGetter;
                 }
-                
+
                 @Override
                 public String evaluate(final Object o) {
                     return ((WithNameGetter)o).getName();
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithNameUnique.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithNameUnique.java
index c3ce237..3071569 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithNameUnique.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithNameUnique.java
@@ -18,6 +18,9 @@
  */
 package org.apache.isis.subdomains.base.applib.with;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface WithNameUnique extends WithNameGetter {
 
 }
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithReferenceComparable.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithReferenceComparable.java
index a323bd1..50e1a85 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithReferenceComparable.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithReferenceComparable.java
@@ -18,7 +18,10 @@
  */
 package org.apache.isis.subdomains.base.applib.with;
 
-public interface WithReferenceComparable<T extends WithReferenceComparable<T>> 
+/**
+ * @since 2.0 {@index}
+ */
+public interface WithReferenceComparable<T extends WithReferenceComparable<T>>
         extends Comparable<T>, WithReferenceGetter {
     void setReference(String reference);
-}
\ No newline at end of file
+}
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithReferenceGetter.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithReferenceGetter.java
index ba9f01e..c1e2781 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithReferenceGetter.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithReferenceGetter.java
@@ -22,13 +22,15 @@ import org.apache.isis.applib.util.ObjectContracts.ToStringEvaluator;
 
 /**
  * Indicates that the implementing class has a {@link #getReference() reference}.
+ *
+ * @since 2.0 {@index}
  */
 public interface WithReferenceGetter {
 
     public String getReference();
-    
+
     /**
-     * Utility class for obtaining the string value of an object that implements {@link WithReferenceGetter}. 
+     * Utility class for obtaining the string value of an object that implements {@link WithReferenceGetter}.
      */
     public static final class ToString {
         private ToString() {}
@@ -38,7 +40,7 @@ public interface WithReferenceGetter {
                 public boolean canEvaluate(final Object o) {
                     return o instanceof WithReferenceGetter;
                 }
-                
+
                 @Override
                 public String evaluate(final Object o) {
                     return ((WithReferenceGetter)o).getReference();
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithReferenceUnique.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithReferenceUnique.java
index 597ac74..6cfb5e1 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithReferenceUnique.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithReferenceUnique.java
@@ -18,6 +18,9 @@
  */
 package org.apache.isis.subdomains.base.applib.with;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface WithReferenceUnique extends WithReferenceGetter {
 
 }
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithSequence.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithSequence.java
index f85ec0c..760cb7e 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithSequence.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithSequence.java
@@ -20,8 +20,10 @@ package org.apache.isis.subdomains.base.applib.with;
 
 import java.math.BigInteger;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface WithSequence {
-
     public BigInteger getSequence();
     public void setSequence(BigInteger sequence);
 }
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithStartDate.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithStartDate.java
index 5ec6eba..95a5f8a 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithStartDate.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithStartDate.java
@@ -23,6 +23,9 @@ import org.joda.time.LocalDate;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Property;
 
+/**
+ * @since 2.0 {@index}
+ */
 public interface WithStartDate {
 
     @Property(editing = Editing.DISABLED)
diff --git a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithTitleComparable.java b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithTitleComparable.java
index d66a686..4bbea0f 100644
--- a/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithTitleComparable.java
+++ b/subdomains/base/applib/src/main/java/org/apache/isis/subdomains/base/applib/with/WithTitleComparable.java
@@ -18,6 +18,9 @@
  */
 package org.apache.isis.subdomains.base.applib.with;
... 4603 lines suppressed ...