You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/12/12 20:52:58 UTC

[isis] branch master updated: ISIS-2473: regen doc index: new format

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 7b0aa19  ISIS-2473: regen doc index: new format
7b0aa19 is described below

commit 7b0aa19c1b2ccb6981abd08c41e7c9b6ee3b7a24
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat Dec 12 21:52:42 2020 +0100

    ISIS-2473: regen doc index: new format
    
    - include java sources (including all public members no matter if
    java-doc is available)
    - generate footnotes, but with members not in java syntax format, but
    rather member name first, types later
    - only generate footnotes for members that do actually have associated
    java-doc
---
 .../generated/pages/index/AcceptHeaderService.adoc |   8 ++
 .../generated/pages/index/ActionArgumentEvent.adoc |  19 +++-
 .../pages/index/ActionInvocationEvent.adoc         |  17 +++-
 .../pages/index/ActionUsabilityEvent.adoc          |   9 ++
 .../pages/index/ActionVisibilityEvent.adoc         |   9 ++
 .../pages/index/ApplicationFeatureRepository.adoc  |  16 +++
 .../pages/index/ApplicationMemberType.adoc         |  14 +++
 .../generated/pages/index/AsyncControl.adoc        |  20 ++++
 .../modules/generated/pages/index/BeanSort.adoc    |  95 ++++++++++++++++--
 .../modules/generated/pages/index/Bookmark.adoc    |  25 ++++-
 .../generated/pages/index/BookmarkHolder.adoc      |   8 ++
 .../generated/pages/index/BookmarkService.adoc     |  35 +++++--
 .../generated/pages/index/BookmarkUiService.adoc   |   8 ++
 .../generated/pages/index/ClockService.adoc        |  11 +++
 .../pages/index/CollectionAccessEvent.adoc         |   9 ++
 .../pages/index/CollectionAddToEvent.adoc          |  13 ++-
 .../pages/index/CollectionMethodEvent.adoc         |  29 +++++-
 .../pages/index/CollectionRemoveFromEvent.adoc     |  11 +++
 .../pages/index/CollectionUsabilityEvent.adoc      |   9 ++
 .../modules/generated/pages/index/Command.adoc     |  27 ++++-
 .../generated/pages/index/CommandDtoProcessor.adoc |  11 ++-
 .../pages/index/CommandDtoProcessorService.adoc    |  13 ++-
 .../index/CommandDtoProcessorServiceIdentity.adoc  |   9 ++
 .../pages/index/CommandExecutorService.adoc        |  16 ++-
 .../generated/pages/index/CommandLogger.adoc       |  10 ++
 .../pages/index/CommandOutcomeHandler.adoc         |  40 ++++++++
 .../generated/pages/index/CommandSubscriber.adoc   |  11 ++-
 .../pages/index/ConfigurationProperty.adoc         |  10 ++
 .../pages/index/ConfigurationViewService.adoc      |  10 +-
 .../pages/index/ContentMappingService.adoc         |  10 +-
 .../index/ContentMappingServiceForCommandDto.adoc  |  16 +++
 .../index/ContentMappingServiceForCommandsDto.adoc |  15 ++-
 .../generated/pages/index/ControlAbstract.adoc     |  18 +++-
 .../generated/pages/index/DeepLinkService.adoc     |  11 ++-
 .../generated/pages/index/DisabledException.adoc   |  11 +++
 .../generated/pages/index/DomainChangeRecord.adoc  |  43 ++++++--
 .../generated/pages/index/DomainMember.adoc        |  34 +++++++
 .../modules/generated/pages/index/DomainModel.adoc |   8 ++
 .../pages/index/EmailNotificationService.adoc      |  15 ++-
 .../pages/index/EmailRegistrationEvent.adoc        |   9 ++
 .../generated/pages/index/EmailService.adoc        |  15 ++-
 .../generated/pages/index/EntityChanges.adoc       |  20 ++++
 .../generated/pages/index/EntityChangesLogger.adoc |  10 ++
 .../pages/index/EntityChangesSubscriber.adoc       |  11 ++-
 .../pages/index/EntityPropertyChange.adoc          |   9 ++
 .../pages/index/EntityPropertyChangeLogger.adoc    |  10 ++
 .../index/EntityPropertyChangeSubscriber.adoc      |  11 ++-
 .../modules/generated/pages/index/EntityState.adoc |  23 +++++
 .../generated/pages/index/ErrorDetails.adoc        |   7 ++
 .../pages/index/ErrorReportingService.adoc         |   9 ++
 .../generated/pages/index/EventBusService.adoc     |   9 ++
 .../generated/pages/index/ExceptionHandler.adoc    |  10 +-
 .../generated/pages/index/ExceptionRecognizer.adoc |  11 ++-
 .../pages/index/ExceptionRecognizerService.adoc    |  20 ++--
 .../generated/pages/index/ExecutionContext.adoc    |  11 ++-
 .../generated/pages/index/ExecutionLogger.adoc     |  10 ++
 .../generated/pages/index/ExecutionMode.adoc       |  24 ++++-
 .../generated/pages/index/ExecutionSubscriber.adoc |  11 ++-
 .../generated/pages/index/FactoryService.adoc      |  65 +++++++-----
 .../generated/pages/index/GridLoaderService.adoc   |  26 ++++-
 .../modules/generated/pages/index/GridService.adoc |  42 ++++++--
 .../generated/pages/index/GridSystemService.adoc   |  25 ++++-
 .../generated/pages/index/HasCommandDto.adoc       |   9 ++
 .../modules/generated/pages/index/Health.adoc      |  14 +++
 .../generated/pages/index/HealthCheckService.adoc  |   8 ++
 .../generated/pages/index/HiddenException.adoc     |  11 +++
 .../modules/generated/pages/index/HintStore.adoc   |  16 +++
 .../pages/index/HomePageResolverService.adoc       |   9 ++
 .../modules/generated/pages/index/Interaction.adoc |  21 +++-
 .../generated/pages/index/InteractionAdapter.adoc  |  39 ++++++++
 .../generated/pages/index/InteractionContext.adoc  |  13 ++-
 .../generated/pages/index/InteractionEvent.adoc    |  76 +++++++++-----
 .../generated/pages/index/InteractionListener.adoc |  70 ++++++++++---
 .../generated/pages/index/InvalidException.adoc    |  11 +++
 .../modules/generated/pages/index/JaxbService.adoc |  24 ++++-
 .../generated/pages/index/LayoutService.adoc       |  18 +++-
 .../generated/pages/index/LayoutServiceMenu.adoc   |  21 ++++
 .../generated/pages/index/LocaleProvider.adoc      |   8 ++
 .../pages/index/MenuBarsLoaderService.adoc         |  14 ++-
 .../generated/pages/index/MenuBarsService.adoc     |  12 ++-
 .../generated/pages/index/MessageService.adoc      |  42 ++++++--
 .../generated/pages/index/MetaModelService.adoc    |  29 +++++-
 .../pages/index/MetaModelServiceMenu.adoc          |  32 ++++++
 .../generated/pages/index/MethodReferences.adoc    |   6 ++
 .../generated/pages/index/MetricsService.adoc      |  14 ++-
 .../generated/pages/index/ObjectTitleEvent.adoc    |  11 +++
 .../generated/pages/index/ObjectValidityEvent.adoc |  11 +++
 .../pages/index/ObjectVisibilityEvent.adoc         |   9 ++
 .../generated/pages/index/ParseValueEvent.adoc     |  15 ++-
 .../generated/pages/index/PasswordResetEvent.adoc  |   9 ++
 .../generated/pages/index/PropertyAccessEvent.adoc |  11 +++
 .../generated/pages/index/PropertyModifyEvent.adoc |  13 ++-
 .../pages/index/PropertyUsabilityEvent.adoc        |   9 ++
 .../pages/index/PropertyVisibilityEvent.adoc       |   9 ++
 .../generated/pages/index/ProposedHolderEvent.adoc |  11 +++
 .../pages/index/QueryResultCacheControl.adoc       |   8 ++
 .../generated/pages/index/QueryResultsCache.adoc   |  25 ++++-
 .../generated/pages/index/RepositoryService.adoc   | 110 ++++++++++++++++-----
 .../RepresentsInteractionMemberExecution.adoc      |   9 ++
 .../modules/generated/pages/index/RoleMemento.adoc |  17 +++-
 .../generated/pages/index/RoutingService.adoc      |  11 +++
 .../modules/generated/pages/index/Scratchpad.adoc  |  15 ++-
 .../generated/pages/index/ServiceInjector.adoc     |  11 +++
 .../generated/pages/index/ServiceRegistry.adoc     |  38 +++++--
 .../pages/index/SessionLoggingService.adoc         |   9 ++
 .../pages/index/SessionLoggingServiceLogging.adoc  |   8 ++
 .../modules/generated/pages/index/SudoService.adoc |  22 ++++-
 .../generated/pages/index/SwaggerService.adoc      |   8 ++
 .../modules/generated/pages/index/SyncControl.adoc |  16 ++-
 .../pages/index/TableColumnOrderService.adoc       |  10 ++
 .../modules/generated/pages/index/Ticket.adoc      |  37 ++++---
 .../generated/pages/index/TitleService.adoc        |  14 ++-
 .../modules/generated/pages/index/Transaction.adoc |  15 ++-
 .../generated/pages/index/TransactionId.adoc       |   8 ++
 .../pages/index/TransactionScopeListener.adoc      |  13 ++-
 .../generated/pages/index/TransactionService.adoc  |  34 +++++--
 .../generated/pages/index/TransactionState.adoc    |  75 ++++++++++++--
 .../pages/index/TranslatableException.adoc         |  15 ++-
 .../generated/pages/index/TranslatableString.adoc  |  46 +++++++--
 .../generated/pages/index/TranslationService.adoc  |  18 +++-
 .../pages/index/TranslationsResolver.adoc          |   8 ++
 .../generated/pages/index/UrlEncodingService.adoc  |  14 +++
 .../generated/pages/index/UsabilityEvent.adoc      |   9 ++
 .../generated/pages/index/UserDataKeys.adoc        |  11 +++
 .../modules/generated/pages/index/UserDetails.adoc |   7 ++
 .../modules/generated/pages/index/UserMemento.adoc |  50 ++++++++--
 .../generated/pages/index/UserProfileService.adoc  |  11 ++-
 .../pages/index/UserRegistrationService.adoc       |  15 +++
 .../modules/generated/pages/index/UserService.adoc |  27 ++++-
 .../generated/pages/index/ValidityEvent.adoc       |  38 ++++---
 .../generated/pages/index/VisibilityEvent.adoc     |   9 ++
 .../generated/pages/index/WrapperFactory.adoc      |  93 +++++++++--------
 .../generated/pages/index/WrappingObject.adoc      |  19 +++-
 .../modules/generated/pages/index/XmlService.adoc  |  23 ++++-
 .../generated/pages/index/XmlServiceDefault.adoc   |  14 +++
 .../index/XmlSnapshotService.Snapshot.Builder.adoc |  18 +++-
 .../pages/index/XmlSnapshotService.Snapshot.adoc   |  14 ++-
 .../generated/pages/index/XmlSnapshotService.adoc  |  19 +++-
 .../pages/index/XmlSnapshotServiceDefault.adoc     |  19 +++-
 .../modules/generated/pages/system-overview.adoc   |  16 +--
 .../apache/isis/tooling/model4adoc/NodeWriter.java |   2 +-
 141 files changed, 2385 insertions(+), 369 deletions(-)

diff --git a/antora/components/system/modules/generated/pages/index/AcceptHeaderService.adoc b/antora/components/system/modules/generated/pages/index/AcceptHeaderService.adoc
index 66fed51..d269fac 100644
--- a/antora/components/system/modules/generated/pages/index/AcceptHeaderService.adoc
+++ b/antora/components/system/modules/generated/pages/index/AcceptHeaderService.adoc
@@ -1,4 +1,12 @@
 = AcceptHeaderService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface AcceptHeaderService {
+
+  List<MediaType> getAcceptableMediaTypes()
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/ActionArgumentEvent.adoc b/antora/components/system/modules/generated/pages/index/ActionArgumentEvent.adoc
index 26d72ac..02deb54 100644
--- a/antora/components/system/modules/generated/pages/index/ActionArgumentEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/ActionArgumentEvent.adoc
@@ -7,7 +7,24 @@ If _#getReason()_ is not `null` then provides the reason why the argument is inv
 
 Called once per argument, and before xref:system:generated:index/ActionInvocationEvent.adoc[ActionInvocationEvent] .
 
-* `[teal]#*getPosition*#()` : `int`
+.Java Sources
+[source,java]
+----
+class ActionArgumentEvent {
+
+  ActionArgumentEvent(final Object source, final Identifier actionIdentifier, final Object[] args, final int position)
+
+  Object[] getArgs()
+
+  int getPosition() // <.>
+
+  Object getProposed()
+
+  String getReasonMessage()
+}
+----
+
+<.> `[teal]#*getPosition*#()` : `int`
 +
 --
 The position (0-based) of the invalid argument.
diff --git a/antora/components/system/modules/generated/pages/index/ActionInvocationEvent.adoc b/antora/components/system/modules/generated/pages/index/ActionInvocationEvent.adoc
index 16cdbc6..1a2f4e8 100644
--- a/antora/components/system/modules/generated/pages/index/ActionInvocationEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/ActionInvocationEvent.adoc
@@ -7,7 +7,22 @@ If _#getReason()_ is not `null` then provides the reason why the set of argument
 
 Called after each of the xref:system:generated:index/ActionArgumentEvent.adoc[ActionArgumentEvent] s.
 
-* `[teal]#*getProposed*#()` : `Object`
+.Java Sources
+[source,java]
+----
+class ActionInvocationEvent {
+
+  ActionInvocationEvent(final Object source, final Identifier actionIdentifier, final Object[] args)
+
+  Object[] getArgs()
+
+  void setArgs(final Object[] args)
+
+  Object getProposed() // <.>
+}
+----
+
+<.> `[teal]#*getProposed*#()` : `Object`
 +
 --
 Does not apply
diff --git a/antora/components/system/modules/generated/pages/index/ActionUsabilityEvent.adoc b/antora/components/system/modules/generated/pages/index/ActionUsabilityEvent.adoc
index c08e60b..2fee941 100644
--- a/antora/components/system/modules/generated/pages/index/ActionUsabilityEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/ActionUsabilityEvent.adoc
@@ -5,3 +5,12 @@
 
 If _#getReason()_ is not `null` then provides the reason why the action is disabled; otherwise action is enabled.
 
+.Java Sources
+[source,java]
+----
+class ActionUsabilityEvent {
+
+  ActionUsabilityEvent(final Object source, final Identifier actionIdentifier)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/ActionVisibilityEvent.adoc b/antora/components/system/modules/generated/pages/index/ActionVisibilityEvent.adoc
index 1892f8d..e7edbaa 100644
--- a/antora/components/system/modules/generated/pages/index/ActionVisibilityEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/ActionVisibilityEvent.adoc
@@ -5,3 +5,12 @@
 
 If _#getReason()_ is not `null` then provides the reason why the action is invisible; otherwise action is visible.
 
+.Java Sources
+[source,java]
+----
+class ActionVisibilityEvent {
+
+  ActionVisibilityEvent(final Object source, final Identifier actionIdentifier)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/ApplicationFeatureRepository.adoc b/antora/components/system/modules/generated/pages/index/ApplicationFeatureRepository.adoc
index 092a6ef..55d3950 100644
--- a/antora/components/system/modules/generated/pages/index/ApplicationFeatureRepository.adoc
+++ b/antora/components/system/modules/generated/pages/index/ApplicationFeatureRepository.adoc
@@ -1,4 +1,20 @@
 = ApplicationFeatureRepository : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface ApplicationFeatureRepository {
+
+  SortedSet<String> packageNames()
+
+  SortedSet<String> packageNamesContainingClasses(ApplicationMemberType memberType)
+
+  SortedSet<String> classNamesContainedIn(String packageFqn, ApplicationMemberType memberType)
+
+  SortedSet<String> classNamesRecursivelyContainedIn(String packageFqn)
+
+  SortedSet<String> memberNamesOf(String packageFqn, String className, ApplicationMemberType memberType)
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/ApplicationMemberType.adoc b/antora/components/system/modules/generated/pages/index/ApplicationMemberType.adoc
index b95a56a..b931fae 100644
--- a/antora/components/system/modules/generated/pages/index/ApplicationMemberType.adoc
+++ b/antora/components/system/modules/generated/pages/index/ApplicationMemberType.adoc
@@ -1,4 +1,18 @@
 = ApplicationMemberType : _enum_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+enum ApplicationMemberType {
+
+  PROPERTY
+
+  COLLECTION
+
+  ACTION
+
+  String toString()
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/AsyncControl.adoc b/antora/components/system/modules/generated/pages/index/AsyncControl.adoc
index 3004793..f821332 100644
--- a/antora/components/system/modules/generated/pages/index/AsyncControl.adoc
+++ b/antora/components/system/modules/generated/pages/index/AsyncControl.adoc
@@ -1,4 +1,24 @@
 = AsyncControl : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+class AsyncControl {
+
+  AsyncControl<Void> returningVoid()
+
+  AsyncControl<X> returning(final Class<X> cls)
+
+  AsyncControl<R> with(ExecutorService executorService)
+
+  AsyncControl<R> withClock(final VirtualClock clock)
+
+  AsyncControl<R> withLocale(final Locale locale)
+
+  AsyncControl<R> withTimeZone(final TimeZone timeZone)
+
+  AsyncControl<R> withUser(final UserMemento user)
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/BeanSort.adoc b/antora/components/system/modules/generated/pages/index/BeanSort.adoc
index 548d0d5..627256b 100644
--- a/antora/components/system/modules/generated/pages/index/BeanSort.adoc
+++ b/antora/components/system/modules/generated/pages/index/BeanSort.adoc
@@ -3,7 +3,88 @@
 
 Top level object classification.
 
-* `[teal]#*_VIEW_MODEL_*#`
+.Java Sources
+[source,java]
+----
+enum BeanSort {
+
+  /**
+ * Stateful object, with a state that can be marshaled and unmarshaled.
+ * <p>
+ * Includes classes annotated with {@code @DomainObject}, when *not* associated
+ * with a persistence layer. <p>  see also {@link #ENTITY}
+ */
+VIEW_MODEL // <.>
+
+  /**
+ * Persistable object, associated with a persistence layer/context.
+ * <p>
+ * Includes classes annotated with {@code @DomainObject}, when associated
+ * with a persistence layer. <p>  see also {@link #VIEW_MODEL}
+ */
+ENTITY_JDO // <.>
+
+  ENTITY_JPA
+
+  /**
+ * Injectable object, associated with a lifecycle context
+ * (application-scoped, request-scoped, ...).
+ * <p>
+ * to be introspected: YES
+ */
+MANAGED_BEAN_CONTRIBUTING // <.>
+
+  /**
+ * Injectable object, associated with a lifecycle context
+ * (application-scoped, request-scoped, ...).
+ * <p>
+ * to be introspected: NO
+ */
+MANAGED_BEAN_NOT_CONTRIBUTING // <.>
+
+  /**
+ * Object associated with an 'entity' or 'bean' to act as contributer of
+ * domain actions or properties. Might also be stateful similar to VIEW_MODEL.
+ */
+MIXIN // <.>
+
+  /**
+ * Immutable, serializable object.
+ */
+VALUE // <.>
+
+  /**
+ * Container of objects.
+ */
+COLLECTION // <.>
+
+  UNKNOWN
+
+  boolean isManagedBean()
+
+  boolean isMixin()
+
+  boolean isViewModel()
+
+  boolean isValue()
+
+  boolean isCollection()
+
+  boolean isEntityJdo()
+
+  boolean isEntityJpa()
+
+  boolean isUnknown()
+
+  boolean isToBeIntrospected()
+
+  boolean isEntity()
+
+  boolean isWrappingSupported()
+}
+----
+
+<.> `[teal]#*_VIEW_MODEL_*#`
 +
 --
 Stateful object, with a state that can be marshaled and unmarshaled.
@@ -12,7 +93,7 @@ Includes classes annotated with _@DomainObject_ , when *not* associated with a p
 
 see also _#ENTITY_
 --
-* `[teal]#*_ENTITY_JDO_*#`
+<.> `[teal]#*_ENTITY_JDO_*#`
 +
 --
 Persistable object, associated with a persistence layer/context.
@@ -21,31 +102,31 @@ Includes classes annotated with _@DomainObject_ , when associated with a persist
 
 see also _#VIEW_MODEL_
 --
-* `[teal]#*_MANAGED_BEAN_CONTRIBUTING_*#`
+<.> `[teal]#*_MANAGED_BEAN_CONTRIBUTING_*#`
 +
 --
 Injectable object, associated with a lifecycle context (application-scoped, request-scoped, ...).
 
 to be introspected: YES
 --
-* `[teal]#*_MANAGED_BEAN_NOT_CONTRIBUTING_*#`
+<.> `[teal]#*_MANAGED_BEAN_NOT_CONTRIBUTING_*#`
 +
 --
 Injectable object, associated with a lifecycle context (application-scoped, request-scoped, ...).
 
 to be introspected: NO
 --
-* `[teal]#*_MIXIN_*#`
+<.> `[teal]#*_MIXIN_*#`
 +
 --
 Object associated with an 'entity' or 'bean' to act as contributer of domain actions or properties. Might also be stateful similar to VIEW_MODEL.
 --
-* `[teal]#*_VALUE_*#`
+<.> `[teal]#*_VALUE_*#`
 +
 --
 Immutable, serializable object.
 --
-* `[teal]#*_COLLECTION_*#`
+<.> `[teal]#*_COLLECTION_*#`
 +
 --
 Container of objects.
diff --git a/antora/components/system/modules/generated/pages/index/Bookmark.adoc b/antora/components/system/modules/generated/pages/index/Bookmark.adoc
index 6526e86..38c2322 100644
--- a/antora/components/system/modules/generated/pages/index/Bookmark.adoc
+++ b/antora/components/system/modules/generated/pages/index/Bookmark.adoc
@@ -5,12 +5,33 @@ String representation of any persistable or re-createable object managed by the
 
 Analogous to the `RootOid` .
 
-* `[teal]#*_parse_*#(String str)` : `Optional<xref:system:generated:index/Bookmark.adoc[Bookmark]>`
+.Java Sources
+[source,java]
+----
+class Bookmark {
+
+  Bookmark of(String objectType, String identifier)
+
+  Optional<Bookmark> parse(String str) // <.>
+
+  OidDto toOidDto()
+
+  Bookmark from(OidDto oidDto)
+
+  String toString() // <.>
+
+  Bookmark withHintId(String hintId)
+
+  String toStringUsingIdentifier(String id)
+}
+----
+
+<.> `[teal]#*_parse_*#(String str)` : `Optional<xref:system:generated:index/Bookmark.adoc[Bookmark]>`
 +
 --
 Round-trip with _#toString()_ representation.
 --
-* `[teal]#*toString*#()` : `String`
+<.> `[teal]#*toString*#()` : `String`
 +
 --
 The canonical form of the xref:system:generated:index/Bookmark.adoc[Bookmark] , that is " _#getObjectType() objectType_ _#SEPARATOR_ _#getIdentifier()_ ".
diff --git a/antora/components/system/modules/generated/pages/index/BookmarkHolder.adoc b/antora/components/system/modules/generated/pages/index/BookmarkHolder.adoc
index ad7a6aa..b2ac31d 100644
--- a/antora/components/system/modules/generated/pages/index/BookmarkHolder.adoc
+++ b/antora/components/system/modules/generated/pages/index/BookmarkHolder.adoc
@@ -1,4 +1,12 @@
 = BookmarkHolder : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface BookmarkHolder {
+
+  Bookmark bookmark()
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/BookmarkService.adoc b/antora/components/system/modules/generated/pages/index/BookmarkService.adoc
index 0abe2a9..e00c1b5 100644
--- a/antora/components/system/modules/generated/pages/index/BookmarkService.adoc
+++ b/antora/components/system/modules/generated/pages/index/BookmarkService.adoc
@@ -3,34 +3,49 @@
 
 This service enables a serializable 'bookmark' to be created for an entity.
 
-* `[teal]#*bookmarkFor*#(Object domainObject)` : `xref:system:generated:index/Bookmark.adoc[Bookmark]`
+.Java Sources
+[source,java]
+----
+interface BookmarkService {
+
+  Bookmark bookmarkFor(Object domainObject) // <.>
+
+  Bookmark bookmarkForElseThrow(Object domainObject) // <.>
+
+  Bookmark bookmarkFor(Class<?> cls, String identifier) // <.>
+
+  Object lookup(BookmarkHolder bookmarkHolder) // <.>
+
+  Object lookup(Bookmark bookmark) // <.>
+
+  T lookup(Bookmark bookmark, Class<T> cls) // <.>
+}
+----
+
+<.> `[teal]#*bookmarkFor*#(Object domainObject)` : `xref:system:generated:index/Bookmark.adoc[Bookmark]`
 +
 --
 Returns the xref:system:generated:index/Bookmark.adoc[Bookmark] for the given domain object.
 
  *Note* : Not every domain object is bookmark-able: only entities, view models and services (NOT values or collections)
 --
-* `[teal]#*bookmarkForElseThrow*#(Object domainObject)` : `xref:system:generated:index/Bookmark.adoc[Bookmark]`
+<.> `[teal]#*bookmarkForElseThrow*#(Object domainObject)` : `xref:system:generated:index/Bookmark.adoc[Bookmark]`
 +
 --
 As per _#bookmarkFor(Object)_ , but requires that a non-null xref:system:generated:index/Bookmark.adoc[Bookmark] is returned.
 --
-* `[teal]#*bookmarkFor*#(Class<?> cls, String identifier)` : `xref:system:generated:index/Bookmark.adoc[Bookmark]`
+<.> `[teal]#*bookmarkFor*#(Class<?> cls, String identifier)` : `xref:system:generated:index/Bookmark.adoc[Bookmark]`
 +
 --
 Utility method that creates a xref:system:generated:index/Bookmark.adoc[Bookmark] from the constituent parts.
 --
-* `[teal]#*lookup*#(xref:system:generated:index/BookmarkHolder.adoc[BookmarkHolder] bookmarkHolder)` : `Object`
-+
---
-
---
-* `[teal]#*lookup*#(xref:system:generated:index/Bookmark.adoc[Bookmark] bookmark)` : `Object`
+<.> `[teal]#*lookup*#(xref:system:generated:index/BookmarkHolder.adoc[BookmarkHolder] bookmarkHolder)` : `Object`
+<.> `[teal]#*lookup*#(xref:system:generated:index/Bookmark.adoc[Bookmark] bookmark)` : `Object`
 +
 --
 Reciprocal of _#bookmarkFor(Object)_
 --
-* `[teal]#*lookup*#<T>(xref:system:generated:index/Bookmark.adoc[Bookmark] bookmark, Class<T> cls)` : `T`
+<.> `[teal]#*lookup*#<T>(xref:system:generated:index/Bookmark.adoc[Bookmark] bookmark, Class<T> cls)` : `T`
 +
 --
 As _#lookup(Bookmark)_ , but down-casting to the specified type.
diff --git a/antora/components/system/modules/generated/pages/index/BookmarkUiService.adoc b/antora/components/system/modules/generated/pages/index/BookmarkUiService.adoc
index c59d8c4..a260c2b 100644
--- a/antora/components/system/modules/generated/pages/index/BookmarkUiService.adoc
+++ b/antora/components/system/modules/generated/pages/index/BookmarkUiService.adoc
@@ -1,4 +1,12 @@
 = BookmarkUiService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface BookmarkUiService {
+
+  void clear()
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/ClockService.adoc b/antora/components/system/modules/generated/pages/index/ClockService.adoc
index daf6060..97cd126 100644
--- a/antora/components/system/modules/generated/pages/index/ClockService.adoc
+++ b/antora/components/system/modules/generated/pages/index/ClockService.adoc
@@ -3,3 +3,14 @@
 
 This service allows an application to be decoupled from the system time. The most common use case is in support of testing scenarios, to "mock the clock". Use of this service also opens up the use of centralized co-ordinated time management through a centralized time service.
 
+.Java Sources
+[source,java]
+----
+interface ClockService {
+
+  VirtualClock getClock()
+
+  long getEpochMillis()
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/CollectionAccessEvent.adoc b/antora/components/system/modules/generated/pages/index/CollectionAccessEvent.adoc
index bee14b0..fe409a0 100644
--- a/antora/components/system/modules/generated/pages/index/CollectionAccessEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/CollectionAccessEvent.adoc
@@ -5,3 +5,12 @@
 
 Analogous to xref:system:generated:index/CollectionAddToEvent.adoc[CollectionAddToEvent] or xref:system:generated:index/CollectionRemoveFromEvent.adoc[CollectionRemoveFromEvent] , however the _#getReason()_ will always be `null` . (If access is not allowed then a vetoing _CollectionVisibilityEvent_ would have been fired).
 
+.Java Sources
+[source,java]
+----
+class CollectionAccessEvent {
+
+  CollectionAccessEvent(final Object source, final Identifier collectionIdentifier)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/CollectionAddToEvent.adoc b/antora/components/system/modules/generated/pages/index/CollectionAddToEvent.adoc
index f58aac3..fdff606 100644
--- a/antora/components/system/modules/generated/pages/index/CollectionAddToEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/CollectionAddToEvent.adoc
@@ -5,7 +5,18 @@
 
 If _#getReason()_ is not `null` then provides the reason why the object is invalid; otherwise the object is valid.
 
-* `[teal]#*getProposed*#()` : `Object`
+.Java Sources
+[source,java]
+----
+class CollectionAddToEvent {
+
+  CollectionAddToEvent(final Object source, final Identifier collectionIdentifier, final Object proposed)
+
+  Object getProposed() // <.>
+}
+----
+
+<.> `[teal]#*getProposed*#()` : `Object`
 +
 --
 The object that is being added.
diff --git a/antora/components/system/modules/generated/pages/index/CollectionMethodEvent.adoc b/antora/components/system/modules/generated/pages/index/CollectionMethodEvent.adoc
index a204c73..737b00d 100644
--- a/antora/components/system/modules/generated/pages/index/CollectionMethodEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/CollectionMethodEvent.adoc
@@ -3,29 +3,48 @@
 
  _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents an interaction with a collection object itself.
 
-* `[teal]#*getSource*#()` : `Object`
+.Java Sources
+[source,java]
+----
+class CollectionMethodEvent {
+
+  CollectionMethodEvent(final Object source, final Identifier collectionIdentifier, final Object domainObject, final String methodName, final Object[] args, final Object returnValue)
+
+  Object getSource() // <.>
+
+  Object getDomainObject() // <.>
+
+  String getMethodName() // <.>
+
+  Object[] getArgs() // <.>
+
+  Object getReturnValue() // <.>
+}
+----
+
+<.> `[teal]#*getSource*#()` : `Object`
 +
 --
 The collection object (an instance of a `List` or a `Set` etc) that is the originator of this event.
 
 The owning domain object is available using _#getDomainObject()_ .
 --
-* `[teal]#*getDomainObject*#()` : `Object`
+<.> `[teal]#*getDomainObject*#()` : `Object`
 +
 --
 The owner of the collection (an instance of `Customer/tt> or `Order` , say).` 
 --
-* `[teal]#*getMethodName*#()` : `String`
+<.> `[teal]#*getMethodName*#()` : `String`
 +
 --
 The name of the method invoked on this collection, for example `isEmpty` .
 --
-* `[teal]#*getArgs*#()` : `Object[]`
+<.> `[teal]#*getArgs*#()` : `Object[]`
 +
 --
 The arguments with which the collection's _#getMethodName() method_ was invoked.
 --
-* `[teal]#*getReturnValue*#()` : `Object`
+<.> `[teal]#*getReturnValue*#()` : `Object`
 +
 --
 The return value from the _#getMethodName() method_ invocation.
diff --git a/antora/components/system/modules/generated/pages/index/CollectionRemoveFromEvent.adoc b/antora/components/system/modules/generated/pages/index/CollectionRemoveFromEvent.adoc
index 04f119d..658f16c 100644
--- a/antora/components/system/modules/generated/pages/index/CollectionRemoveFromEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/CollectionRemoveFromEvent.adoc
@@ -5,3 +5,14 @@
 
 If _#getReason()_ is not `null` then provides the reason why the object is invalid; otherwise the object is valid.
 
+.Java Sources
+[source,java]
+----
+class CollectionRemoveFromEvent {
+
+  CollectionRemoveFromEvent(final Object source, final Identifier collectionIdentifier, final Object proposed)
+
+  Object getProposed()
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/CollectionUsabilityEvent.adoc b/antora/components/system/modules/generated/pages/index/CollectionUsabilityEvent.adoc
index 966a0bd..c447dc0 100644
--- a/antora/components/system/modules/generated/pages/index/CollectionUsabilityEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/CollectionUsabilityEvent.adoc
@@ -5,3 +5,12 @@
 
 If _#getReason()_ is not `null` then provides the reason why the collection is disabled; otherwise collection is enabled.
 
+.Java Sources
+[source,java]
+----
+class CollectionUsabilityEvent {
+
+  CollectionUsabilityEvent(final Object source, final Identifier identifier)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/Command.adoc b/antora/components/system/modules/generated/pages/index/Command.adoc
index 5d0e336..36de548 100644
--- a/antora/components/system/modules/generated/pages/index/Command.adoc
+++ b/antora/components/system/modules/generated/pages/index/Command.adoc
@@ -11,31 +11,48 @@ Note that when invoking an action, other actions may be invoked courtesy of the
 
 That said, if the sub-action is invoked asynchronously (using _WrapperFactory#asyncWrap(Object, AsyncControl)_ or _WrapperFactory#asyncWrapMixin(Class, Object, AsyncControl)_ ), then a separate xref:system:generated:index/Command.adoc[Command] object is created, and the originating xref:system:generated:index/Command.adoc[Command] is set to be its _Command#getParent() parent_ .
 
-* `[teal]#*getUsername*#()` : `String`
+.Java Sources
+[source,java]
+----
+class Command {
+
+  String getUsername() // <.>
+
+  Timestamp getTimestamp() // <.>
+
+  Bookmark getTarget() // <.>
+
+  String getLogicalMemberIdentifier() // <.>
+
+  Updater updater() // <.>
+}
+----
+
+<.> `[teal]#*getUsername*#()` : `String`
 +
 --
 The user that created the command.
 
 Derived from _#getCommandDto()_ 's _CommandDto#getUser()_
 --
-* `[teal]#*getTimestamp*#()` : `Timestamp`
+<.> `[teal]#*getTimestamp*#()` : `Timestamp`
 +
 --
 The date/time at which this command was created.
 
 Derived from _#getCommandDto()_ 's _CommandDto#getTimestamp()_ .
 --
-* `[teal]#*getTarget*#()` : `xref:system:generated:index/Bookmark.adoc[Bookmark]`
+<.> `[teal]#*getTarget*#()` : `xref:system:generated:index/Bookmark.adoc[Bookmark]`
 +
 --
 Derived from _#getCommandDto()_ , is the xref:system:generated:index/Bookmark.adoc[Bookmark] of the target object (entity or service) on which this action/edit was performed.
 --
-* `[teal]#*getLogicalMemberIdentifier*#()` : `String`
+<.> `[teal]#*getLogicalMemberIdentifier*#()` : `String`
 +
 --
 Derived from _#getCommandDto()_ , holds a string representation of the invoked action, or the edited property.
 --
-* `[teal]#*updater*#()` : `Updater`
+<.> `[teal]#*updater*#()` : `Updater`
 +
 --
  *NOT API* : intended to be called only by the framework.
diff --git a/antora/components/system/modules/generated/pages/index/CommandDtoProcessor.adoc b/antora/components/system/modules/generated/pages/index/CommandDtoProcessor.adoc
index 0deacd7..528d6f4 100644
--- a/antora/components/system/modules/generated/pages/index/CommandDtoProcessor.adoc
+++ b/antora/components/system/modules/generated/pages/index/CommandDtoProcessor.adoc
@@ -3,7 +3,16 @@
 
 Refine (or possibly ignore) a command when replicating from primary to secondary.
 
-* `[teal]#*process*#(CommandDto commandDto)` : `CommandDto`
+.Java Sources
+[source,java]
+----
+interface CommandDtoProcessor {
+
+  CommandDto process(CommandDto commandDto) // <.>
+}
+----
+
+<.> `[teal]#*process*#(CommandDto commandDto)` : `CommandDto`
 +
 --
 The implementation can if necessary refine or alter the _CommandDto_ to be replicated from primary to secondary.
diff --git a/antora/components/system/modules/generated/pages/index/CommandDtoProcessorService.adoc b/antora/components/system/modules/generated/pages/index/CommandDtoProcessorService.adoc
index 439f0f8..9e13288 100644
--- a/antora/components/system/modules/generated/pages/index/CommandDtoProcessorService.adoc
+++ b/antora/components/system/modules/generated/pages/index/CommandDtoProcessorService.adoc
@@ -3,9 +3,14 @@
 
 Optional SPI called by xref:system:generated:index/ContentMappingServiceForCommandDto.adoc[ContentMappingServiceForCommandDto] . Similar to xref:system:generated:index/CommandDtoProcessor.adoc[CommandDtoProcessor] , but applied to all _CommandDto_ s globally.
 
-* `[teal]#*process*#(Object domainObject, CommandDto commandDto)` : `CommandDto`
-+
---
+.Java Sources
+[source,java]
+----
+interface CommandDtoProcessorService {
 
---
+  CommandDto process(final Object domainObject, final CommandDto commandDto) // <.>
+}
+----
+
+<.> `[teal]#*process*#(Object domainObject, CommandDto commandDto)` : `CommandDto`
 
diff --git a/antora/components/system/modules/generated/pages/index/CommandDtoProcessorServiceIdentity.adoc b/antora/components/system/modules/generated/pages/index/CommandDtoProcessorServiceIdentity.adoc
index 9ccad68..fd5adf3 100644
--- a/antora/components/system/modules/generated/pages/index/CommandDtoProcessorServiceIdentity.adoc
+++ b/antora/components/system/modules/generated/pages/index/CommandDtoProcessorServiceIdentity.adoc
@@ -3,3 +3,12 @@
 
 At least one implementation is required.
 
+.Java Sources
+[source,java]
+----
+class CommandDtoProcessorServiceIdentity {
+
+  CommandDto process(final Object domainObject, final CommandDto commandDto)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/CommandExecutorService.adoc b/antora/components/system/modules/generated/pages/index/CommandExecutorService.adoc
index 1fd8137..2554069 100644
--- a/antora/components/system/modules/generated/pages/index/CommandExecutorService.adoc
+++ b/antora/components/system/modules/generated/pages/index/CommandExecutorService.adoc
@@ -1,8 +1,22 @@
 = CommandExecutorService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface CommandExecutorService {
 
-* `[teal]#*executeCommand*#(SudoPolicy sudoPolicy, xref:system:generated:index/Command.adoc[Command] command)` : `xref:system:generated:index/Bookmark.adoc[Bookmark]`
+  Bookmark executeCommand(SudoPolicy sudoPolicy, Command command) // <.>
+
+  Bookmark executeCommand(SudoPolicy sudoPolicy, CommandDto commandDto, CommandOutcomeHandler outcomeHandler)
+
+  Bookmark executeCommand(Command command)
+
+  Bookmark executeCommand(CommandDto commandDto, CommandOutcomeHandler outcomeHandler)
+}
+----
+
+<.> `[teal]#*executeCommand*#(SudoPolicy sudoPolicy, xref:system:generated:index/Command.adoc[Command] command)` : `xref:system:generated:index/Bookmark.adoc[Bookmark]`
 +
 --
 Executes the specified command.
diff --git a/antora/components/system/modules/generated/pages/index/CommandLogger.adoc b/antora/components/system/modules/generated/pages/index/CommandLogger.adoc
index e29b20a..7d2ad3f 100644
--- a/antora/components/system/modules/generated/pages/index/CommandLogger.adoc
+++ b/antora/components/system/modules/generated/pages/index/CommandLogger.adoc
@@ -1,4 +1,14 @@
 = CommandLogger : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+class CommandLogger {
+
+  boolean isEnabled()
+
+  void onCompleted(Command command)
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/CommandOutcomeHandler.adoc b/antora/components/system/modules/generated/pages/index/CommandOutcomeHandler.adoc
index 29e27bc..0c550dc 100644
--- a/antora/components/system/modules/generated/pages/index/CommandOutcomeHandler.adoc
+++ b/antora/components/system/modules/generated/pages/index/CommandOutcomeHandler.adoc
@@ -1,4 +1,44 @@
 = CommandOutcomeHandler : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface CommandOutcomeHandler {
+
+  CommandOutcomeHandler NULL = new CommandOutcomeHandler() {
+
+    @Override
+    public Timestamp getStartedAt() {
+        return null;
+    }
+
+    @Override
+    public void setStartedAt(Timestamp startedAt) {
+    }
+
+    @Override
+    public void setCompletedAt(Timestamp completedAt) {
+    }
+
+    @Override
+    public void setResult(Bookmark resultBookmark) {
+    }
+
+    @Override
+    public void setException(Throwable throwable) {
+    }
+};
+
+  Timestamp getStartedAt()
+
+  void setStartedAt(Timestamp startedAt)
+
+  void setCompletedAt(Timestamp completedAt)
+
+  void setResult(Bookmark resultBookmark)
+
+  void setException(Throwable throwable)
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/CommandSubscriber.adoc b/antora/components/system/modules/generated/pages/index/CommandSubscriber.adoc
index 31f0c00..489b762 100644
--- a/antora/components/system/modules/generated/pages/index/CommandSubscriber.adoc
+++ b/antora/components/system/modules/generated/pages/index/CommandSubscriber.adoc
@@ -3,7 +3,16 @@
 
 Part of the _Publishing SPI_ . A component to receive xref:system:generated:index/Command.adoc[Command] s (with publishing enabled) that just completed.
 
-* `[teal]#*onCompleted*#(xref:system:generated:index/Command.adoc[Command] command)` : `void`
+.Java Sources
+[source,java]
+----
+interface CommandSubscriber {
+
+  void onCompleted(Command command) // <.>
+}
+----
+
+<.> `[teal]#*onCompleted*#(xref:system:generated:index/Command.adoc[Command] command)` : `void`
 +
 --
 Notifies that the command has completed.
diff --git a/antora/components/system/modules/generated/pages/index/ConfigurationProperty.adoc b/antora/components/system/modules/generated/pages/index/ConfigurationProperty.adoc
index 263c8f6..39a830c 100644
--- a/antora/components/system/modules/generated/pages/index/ConfigurationProperty.adoc
+++ b/antora/components/system/modules/generated/pages/index/ConfigurationProperty.adoc
@@ -1,4 +1,14 @@
 = ConfigurationProperty : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+class ConfigurationProperty {
+
+  ConfigurationProperty(final String key, final String value)
+
+  int compareTo(final ConfigurationProperty other)
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/ConfigurationViewService.adoc b/antora/components/system/modules/generated/pages/index/ConfigurationViewService.adoc
index 70d1250..43935c4 100644
--- a/antora/components/system/modules/generated/pages/index/ConfigurationViewService.adoc
+++ b/antora/components/system/modules/generated/pages/index/ConfigurationViewService.adoc
@@ -1,8 +1,16 @@
 = ConfigurationViewService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface ConfigurationViewService {
 
-* `[teal]#*allProperties*#()` : `Set<xref:system:generated:index/ConfigurationProperty.adoc[ConfigurationProperty]>`
+  Set<ConfigurationProperty> allProperties() // <.>
+}
+----
+
+<.> `[teal]#*allProperties*#()` : `Set<xref:system:generated:index/ConfigurationProperty.adoc[ConfigurationProperty]>`
 +
 --
 Returns all properties, each as an instance of xref:system:generated:index/ConfigurationProperty.adoc[ConfigurationProperty] (a view model). Mask sensitive values if required.
diff --git a/antora/components/system/modules/generated/pages/index/ContentMappingService.adoc b/antora/components/system/modules/generated/pages/index/ContentMappingService.adoc
index e3eb362..36f9dc7 100644
--- a/antora/components/system/modules/generated/pages/index/ContentMappingService.adoc
+++ b/antora/components/system/modules/generated/pages/index/ContentMappingService.adoc
@@ -1,8 +1,16 @@
 = ContentMappingService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface ContentMappingService {
 
-* `[teal]#*map*#(Object object, List<MediaType> acceptableMediaTypes)` : `Object`
+  Object map(Object object, final List<MediaType> acceptableMediaTypes) // <.>
+}
+----
+
+<.> `[teal]#*map*#(Object object, List<MediaType> acceptableMediaTypes)` : `Object`
 +
 --
 Typically for mapping from a domain object to a DTO.
diff --git a/antora/components/system/modules/generated/pages/index/ContentMappingServiceForCommandDto.adoc b/antora/components/system/modules/generated/pages/index/ContentMappingServiceForCommandDto.adoc
index 535b489..2a06715 100644
--- a/antora/components/system/modules/generated/pages/index/ContentMappingServiceForCommandDto.adoc
+++ b/antora/components/system/modules/generated/pages/index/ContentMappingServiceForCommandDto.adoc
@@ -1,4 +1,20 @@
 = ContentMappingServiceForCommandDto : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+class ContentMappingServiceForCommandDto {
+
+  @Inject
+MetaModelService metaModelService;
+
+  @Inject
+List<CommandDtoProcessorService> commandDtoProcessorServices;
+
+  Object map(final Object object, final List<MediaType> acceptableMediaTypes)
+
+  CommandDto asProcessedDto(final Object object)
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/ContentMappingServiceForCommandsDto.adoc b/antora/components/system/modules/generated/pages/index/ContentMappingServiceForCommandsDto.adoc
index 21f7e04..f320545 100644
--- a/antora/components/system/modules/generated/pages/index/ContentMappingServiceForCommandsDto.adoc
+++ b/antora/components/system/modules/generated/pages/index/ContentMappingServiceForCommandsDto.adoc
@@ -1,8 +1,21 @@
 = ContentMappingServiceForCommandsDto : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+class ContentMappingServiceForCommandsDto {
 
-* `[teal]#*map*#(Object object)` : `CommandsDto`
+  @Inject
+ContentMappingServiceForCommandDto contentMappingServiceForCommandDto;
+
+  Object map(Object object, final List<MediaType> acceptableMediaTypes)
+
+  CommandsDto map(final Object object) // <.>
+}
+----
+
+<.> `[teal]#*map*#(Object object)` : `CommandsDto`
 +
 --
 Not part of the xref:system:generated:index/ContentMappingService.adoc[ContentMappingService] API.
diff --git a/antora/components/system/modules/generated/pages/index/ControlAbstract.adoc b/antora/components/system/modules/generated/pages/index/ControlAbstract.adoc
index 6a0c26f..816b4b2 100644
--- a/antora/components/system/modules/generated/pages/index/ControlAbstract.adoc
+++ b/antora/components/system/modules/generated/pages/index/ControlAbstract.adoc
@@ -1,8 +1,24 @@
 = ControlAbstract : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+class ControlAbstract {
 
-* `[teal]#*getExecutionModes*#()` : `ImmutableEnumSet<xref:system:generated:index/ExecutionMode.adoc[ExecutionMode]>`
+  T withCheckRules()
+
+  T withSkipRules()
+
+  Optional<ExceptionHandler> getExceptionHandler()
+
+  T with(ExceptionHandler exceptionHandler)
+
+  ImmutableEnumSet<ExecutionMode> getExecutionModes() // <.>
+}
+----
+
+<.> `[teal]#*getExecutionModes*#()` : `ImmutableEnumSet<xref:system:generated:index/ExecutionMode.adoc[ExecutionMode]>`
 +
 --
 Not API.
diff --git a/antora/components/system/modules/generated/pages/index/DeepLinkService.adoc b/antora/components/system/modules/generated/pages/index/DeepLinkService.adoc
index 4b3f194..792cbad 100644
--- a/antora/components/system/modules/generated/pages/index/DeepLinkService.adoc
+++ b/antora/components/system/modules/generated/pages/index/DeepLinkService.adoc
@@ -5,7 +5,16 @@ A service that creates a web link to any domain object in one of the Isis viewer
 
 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.
 
-* `[teal]#*deepLinkFor*#(Object domainObject)` : `URI`
+.Java Sources
+[source,java]
+----
+interface DeepLinkService {
+
+  URI deepLinkFor(Object domainObject) // <.>
+}
+----
+
+<.> `[teal]#*deepLinkFor*#(Object domainObject)` : `URI`
 +
 --
 Creates a URI that can be used to obtain a representation of the provided domain object in one of the Isis viewers.
diff --git a/antora/components/system/modules/generated/pages/index/DisabledException.adoc b/antora/components/system/modules/generated/pages/index/DisabledException.adoc
index 7d1c878..0272fba 100644
--- a/antora/components/system/modules/generated/pages/index/DisabledException.adoc
+++ b/antora/components/system/modules/generated/pages/index/DisabledException.adoc
@@ -3,3 +3,14 @@
 
 Superclass of exceptions which indicate an attempt to interact with a class member that is disabled.
 
+.Java Sources
+[source,java]
+----
+class DisabledException {
+
+  DisabledException(final InteractionEvent interactionEvent)
+
+  UsabilityEvent getInteractionEvent()
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/DomainChangeRecord.adoc b/antora/components/system/modules/generated/pages/index/DomainChangeRecord.adoc
index 6909311..5069f62 100644
--- a/antora/components/system/modules/generated/pages/index/DomainChangeRecord.adoc
+++ b/antora/components/system/modules/generated/pages/index/DomainChangeRecord.adoc
@@ -3,51 +3,76 @@
 
 An abstraction of some sort of recorded change to a domain object: commands, audit entries or published events.
 
-* `[teal]#*getType*#()` : `ChangeType`
+.Java Sources
+[source,java]
+----
+interface DomainChangeRecord {
+
+  ChangeType getType() // <.>
+
+  UUID getUniqueId() // <.>
+
+  String getUsername() // <.>
+
+  Timestamp getTimestamp() // <.>
+
+  String getTargetObjectType() // <.>
+
+  Bookmark getTarget() // <.>
+
+  String getTargetMember() // <.>
+
+  String getPreValue() // <.>
+
+  String getPostValue() // <.>
+}
+----
+
+<.> `[teal]#*getType*#()` : `ChangeType`
 +
 --
 Distinguishes commands from audit entries from published events/interactions (when these are shown mixed together in a (standalone) table).
 --
-* `[teal]#*getUniqueId*#()` : `UUID`
+<.> `[teal]#*getUniqueId*#()` : `UUID`
 +
 --
 The unique identifier (a GUID) of the transaction in which this change occurred.
 --
-* `[teal]#*getUsername*#()` : `String`
+<.> `[teal]#*getUsername*#()` : `String`
 +
 --
 The user that caused the change.
 --
-* `[teal]#*getTimestamp*#()` : `Timestamp`
+<.> `[teal]#*getTimestamp*#()` : `Timestamp`
 +
 --
 The time that the change occurred.
 --
-* `[teal]#*getTargetObjectType*#()` : `String`
+<.> `[teal]#*getTargetObjectType*#()` : `String`
 +
 --
 The object type of the domain object being changed.
 --
-* `[teal]#*getTarget*#()` : `xref:system:generated:index/Bookmark.adoc[Bookmark]`
+<.> `[teal]#*getTarget*#()` : `xref:system:generated:index/Bookmark.adoc[Bookmark]`
 +
 --
 The xref:system:generated:index/Bookmark.adoc[Bookmark] identifying the domain object that has changed.
 --
-* `[teal]#*getTargetMember*#()` : `String`
+<.> `[teal]#*getTargetMember*#()` : `String`
 +
 --
 The member interaction (ie action invocation or property edit) which caused the domain object to be changed.
 
 Populated for commands and for published events that represent action invocations or property edits.
 --
-* `[teal]#*getPreValue*#()` : `String`
+<.> `[teal]#*getPreValue*#()` : `String`
 +
 --
 The value of the property prior to it being changed.
 
 Populated only for audit entries.
 --
-* `[teal]#*getPostValue*#()` : `String`
+<.> `[teal]#*getPostValue*#()` : `String`
 +
 --
 The value of the property after it has changed.
diff --git a/antora/components/system/modules/generated/pages/index/DomainMember.adoc b/antora/components/system/modules/generated/pages/index/DomainMember.adoc
index cb050d6..e28015f 100644
--- a/antora/components/system/modules/generated/pages/index/DomainMember.adoc
+++ b/antora/components/system/modules/generated/pages/index/DomainMember.adoc
@@ -1,4 +1,38 @@
 = DomainMember : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface DomainMember {
+
+  String getClassType()
+
+  String getClassName()
+
+  String getPackageName()
+
+  String getType()
+
+  String getMemberName()
+
+  String getNumParams()
+
+  boolean isMixedIn()
+
+  String getMixin()
+
+  String getHidden()
+
+  String getDisabled()
+
+  String getValidate()
+
+  String getChoices()
+
+  String getAutoComplete()
+
+  String getDefault()
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/DomainModel.adoc b/antora/components/system/modules/generated/pages/index/DomainModel.adoc
index f29a444..41feffb 100644
--- a/antora/components/system/modules/generated/pages/index/DomainModel.adoc
+++ b/antora/components/system/modules/generated/pages/index/DomainModel.adoc
@@ -1,4 +1,12 @@
 = DomainModel : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface DomainModel {
+
+  List<DomainMember> getDomainMembers()
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/EmailNotificationService.adoc b/antora/components/system/modules/generated/pages/index/EmailNotificationService.adoc
index 5c416ac..ef770b1 100644
--- a/antora/components/system/modules/generated/pages/index/EmailNotificationService.adoc
+++ b/antora/components/system/modules/generated/pages/index/EmailNotificationService.adoc
@@ -5,7 +5,20 @@ Supporting service for the user-registration functionality.
 
 The framework provides a default implementation which in turn uses the _org.apache.isis.applib.services.email.EmailService_ , namelyEmailServiceDefault.
 
-* `[teal]#*isConfigured*#()` : `boolean`
+.Java Sources
+[source,java]
+----
+interface EmailNotificationService {
+
+  boolean send(EmailRegistrationEvent ev)
+
+  boolean send(PasswordResetEvent ev)
+
+  boolean isConfigured() // <.>
+}
+----
+
+<.> `[teal]#*isConfigured*#()` : `boolean`
 +
 --
 Whether this service has been configured and thus available for use.
diff --git a/antora/components/system/modules/generated/pages/index/EmailRegistrationEvent.adoc b/antora/components/system/modules/generated/pages/index/EmailRegistrationEvent.adoc
index 7cb28c6..e3bcdb3 100644
--- a/antora/components/system/modules/generated/pages/index/EmailRegistrationEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/EmailRegistrationEvent.adoc
@@ -3,3 +3,12 @@
 
 An event send to all services interested in user registration
 
+.Java Sources
+[source,java]
+----
+class EmailRegistrationEvent {
+
+  EmailRegistrationEvent(final String email, final String confirmationUrl, final String applicationName)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/EmailService.adoc b/antora/components/system/modules/generated/pages/index/EmailService.adoc
index 70f8918..faf3e52 100644
--- a/antora/components/system/modules/generated/pages/index/EmailService.adoc
+++ b/antora/components/system/modules/generated/pages/index/EmailService.adoc
@@ -5,7 +5,20 @@ Provides the ability to send emails to one or more recipients.
 
 The core framework also provides a default implementation `EmailServiceDefault` that sends email as an HTML message, using an external SMTP provider. See the Isis website for further details.
 
-* `[teal]#*isConfigured*#()` : `boolean`
+.Java Sources
+[source,java]
+----
+interface EmailService {
+
+  void init()
+
+  boolean send(List<String> to, List<String> cc, List<String> bcc, String subject, String body, DataSource... attachments)
+
+  boolean isConfigured() // <.>
+}
+----
+
+<.> `[teal]#*isConfigured*#()` : `boolean`
 +
 --
 Whether this service has been configured and thus available for use.
diff --git a/antora/components/system/modules/generated/pages/index/EntityChanges.adoc b/antora/components/system/modules/generated/pages/index/EntityChanges.adoc
index 8cba2bf..724cf98 100644
--- a/antora/components/system/modules/generated/pages/index/EntityChanges.adoc
+++ b/antora/components/system/modules/generated/pages/index/EntityChanges.adoc
@@ -1,4 +1,24 @@
 = EntityChanges : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface EntityChanges {
+
+  Timestamp getCompletedAt()
+
+  int getNumberLoaded()
+
+  int getNumberCreated()
+
+  int getNumberUpdated()
+
+  int getNumberDeleted()
+
+  int getNumberPropertiesModified()
+
+  ChangesDto getDto()
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/EntityChangesLogger.adoc b/antora/components/system/modules/generated/pages/index/EntityChangesLogger.adoc
index 04ad8e1..655560b 100644
--- a/antora/components/system/modules/generated/pages/index/EntityChangesLogger.adoc
+++ b/antora/components/system/modules/generated/pages/index/EntityChangesLogger.adoc
@@ -1,4 +1,14 @@
 = EntityChangesLogger : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+class EntityChangesLogger {
+
+  boolean isEnabled()
+
+  void onChanging(final EntityChanges changingEntities)
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/EntityChangesSubscriber.adoc b/antora/components/system/modules/generated/pages/index/EntityChangesSubscriber.adoc
index fd633c6..fa4102f 100644
--- a/antora/components/system/modules/generated/pages/index/EntityChangesSubscriber.adoc
+++ b/antora/components/system/modules/generated/pages/index/EntityChangesSubscriber.adoc
@@ -3,7 +3,16 @@
 
 Part of the _Publishing SPI_ . A component to receive the entire set of entities (with publishing enabled) that are about to change, serializable as ChangesDto.
 
-* `[teal]#*onChanging*#(xref:system:generated:index/EntityChanges.adoc[EntityChanges] entityChanges)` : `void`
+.Java Sources
+[source,java]
+----
+interface EntityChangesSubscriber {
+
+  void onChanging(EntityChanges entityChanges) // <.>
+}
+----
+
+<.> `[teal]#*onChanging*#(xref:system:generated:index/EntityChanges.adoc[EntityChanges] entityChanges)` : `void`
 +
 --
 Receives all changing entities (with publishing enabled) at then end of the a transaction during the pre-commit phase.
diff --git a/antora/components/system/modules/generated/pages/index/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/EntityPropertyChange.adoc
index 17a53e9..f72cf48 100644
--- a/antora/components/system/modules/generated/pages/index/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/EntityPropertyChange.adoc
@@ -3,3 +3,12 @@
 
 Immutable data record for xref:system:generated:index/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
 
+.Java Sources
+[source,java]
+----
+class EntityPropertyChange {
+
+  String toString()
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/EntityPropertyChangeLogger.adoc b/antora/components/system/modules/generated/pages/index/EntityPropertyChangeLogger.adoc
index 8c38183..6f29861 100644
--- a/antora/components/system/modules/generated/pages/index/EntityPropertyChangeLogger.adoc
+++ b/antora/components/system/modules/generated/pages/index/EntityPropertyChangeLogger.adoc
@@ -1,4 +1,14 @@
 = EntityPropertyChangeLogger : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+class EntityPropertyChangeLogger {
+
+  boolean isEnabled()
+
+  void onChanging(final EntityPropertyChange entityPropertyChange)
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/EntityPropertyChangeSubscriber.adoc b/antora/components/system/modules/generated/pages/index/EntityPropertyChangeSubscriber.adoc
index 1176f54..4db83cf 100644
--- a/antora/components/system/modules/generated/pages/index/EntityPropertyChangeSubscriber.adoc
+++ b/antora/components/system/modules/generated/pages/index/EntityPropertyChangeSubscriber.adoc
@@ -3,7 +3,16 @@
 
 Part of the _Publishing SPI_ . A component to receive pre-post property values for each changed entity (with publishing enabled).
 
-* `[teal]#*onChanging*#(xref:system:generated:index/EntityPropertyChange.adoc[EntityPropertyChange] entityPropertyChange)` : `void`
+.Java Sources
+[source,java]
+----
+interface EntityPropertyChangeSubscriber {
+
+  void onChanging(EntityPropertyChange entityPropertyChange) // <.>
+}
+----
+
+<.> `[teal]#*onChanging*#(xref:system:generated:index/EntityPropertyChange.adoc[EntityPropertyChange] entityPropertyChange)` : `void`
 +
 --
 Receives all pre-post property values for entities (with publishing enabled) at then end of the transaction during the pre-commit phase.
diff --git a/antora/components/system/modules/generated/pages/index/EntityState.adoc b/antora/components/system/modules/generated/pages/index/EntityState.adoc
index 57ecd61..dcdaf9a 100644
--- a/antora/components/system/modules/generated/pages/index/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/EntityState.adoc
@@ -3,3 +3,26 @@
 
 TODO lower case enums not up to standard, is this an issue?
 
+.Java Sources
+[source,java]
+----
+enum EntityState {
+
+  NOT_PERSISTABLE
+
+  PERSISTABLE_ATTACHED
+
+  PERSISTABLE_DETACHED
+
+  PERSISTABLE_DESTROYED
+
+  boolean isPersistable()
+
+  boolean isAttached()
+
+  boolean isDetached()
+
+  boolean isDestroyed()
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/ErrorDetails.adoc b/antora/components/system/modules/generated/pages/index/ErrorDetails.adoc
index c6ca88d..d12bdb4 100644
--- a/antora/components/system/modules/generated/pages/index/ErrorDetails.adoc
+++ b/antora/components/system/modules/generated/pages/index/ErrorDetails.adoc
@@ -5,3 +5,10 @@ Details of the error (obtained from the thrown exception), passed as part of the
 
 Implementation note: a class has been used here so that additional fields might be added in the future.
 
+.Java Sources
+[source,java]
+----
+class ErrorDetails {
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/ErrorReportingService.adoc b/antora/components/system/modules/generated/pages/index/ErrorReportingService.adoc
index 1f90179..fb0c5d6 100644
--- a/antora/components/system/modules/generated/pages/index/ErrorReportingService.adoc
+++ b/antora/components/system/modules/generated/pages/index/ErrorReportingService.adoc
@@ -3,3 +3,12 @@
 
 Optional SPI service providing the ability to record errors occurring in the application into an external incident recording system (such as JIRA) and to provide a user-friendly (jargon-free) error message to the end-user, along with incident reference.
 
+.Java Sources
+[source,java]
+----
+interface ErrorReportingService {
+
+  Ticket reportError(final ErrorDetails errorDetails)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/EventBusService.adoc b/antora/components/system/modules/generated/pages/index/EventBusService.adoc
index 3f7d60f..09e2a44 100644
--- a/antora/components/system/modules/generated/pages/index/EventBusService.adoc
+++ b/antora/components/system/modules/generated/pages/index/EventBusService.adoc
@@ -3,3 +3,12 @@
 
 A service implementing an Event Bus, allowing arbitrary events to be posted.
 
+.Java Sources
+[source,java]
+----
+interface EventBusService {
+
+  void post(Object event)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/ExceptionHandler.adoc b/antora/components/system/modules/generated/pages/index/ExceptionHandler.adoc
index 3a4061d..a2dbfdd 100644
--- a/antora/components/system/modules/generated/pages/index/ExceptionHandler.adoc
+++ b/antora/components/system/modules/generated/pages/index/ExceptionHandler.adoc
@@ -1,8 +1,16 @@
 = ExceptionHandler : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface ExceptionHandler {
 
-* `[teal]#*handle*#(Exception ex)` : `Object`
+  Object handle(Exception ex) // <.>
+}
+----
+
+<.> `[teal]#*handle*#(Exception ex)` : `Object`
 +
 --
 Handle the exception in some way. Typically this will log and rethrow the exception. If necessary though it can return some other value instead (must be compatible with the expected return value of the interaction, that is, the action invocation or property edit).
diff --git a/antora/components/system/modules/generated/pages/index/ExceptionRecognizer.adoc b/antora/components/system/modules/generated/pages/index/ExceptionRecognizer.adoc
index ff766f5..580a01f 100644
--- a/antora/components/system/modules/generated/pages/index/ExceptionRecognizer.adoc
+++ b/antora/components/system/modules/generated/pages/index/ExceptionRecognizer.adoc
@@ -11,7 +11,16 @@ The Isis framework also provides a default implementation of this service that r
 
 Initially introduced for the Wicket viewer; check the documentation of other viewers to determine whether they also support this service.
 
-* `[teal]#*recognize*#(Throwable ex)` : `Optional<Recognition>`
+.Java Sources
+[source,java]
+----
+interface ExceptionRecognizer {
+
+  Optional<Recognition> recognize(Throwable ex) // <.>
+}
+----
+
+<.> `[teal]#*recognize*#(Throwable ex)` : `Optional<Recognition>`
 +
 --
 (Attempt to) recognize the exception and return a user-friendly message to render instead.
diff --git a/antora/components/system/modules/generated/pages/index/ExceptionRecognizerService.adoc b/antora/components/system/modules/generated/pages/index/ExceptionRecognizerService.adoc
index fd75640..2526f19 100644
--- a/antora/components/system/modules/generated/pages/index/ExceptionRecognizerService.adoc
+++ b/antora/components/system/modules/generated/pages/index/ExceptionRecognizerService.adoc
@@ -1,18 +1,26 @@
 = ExceptionRecognizerService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface ExceptionRecognizerService {
 
-* `[teal]#*getExceptionRecognizers*#()` : `Can<xref:system:generated:index/ExceptionRecognizer.adoc[ExceptionRecognizer]>`
-+
---
+  Can<ExceptionRecognizer> getExceptionRecognizers() // <.>
 
---
-* `[teal]#*recognize*#(Exception ex)` : `Optional<Recognition>`
+  Optional<Recognition> recognize(Exception ex) // <.>
+
+  Optional<Recognition> recognizeFromSelected(Can<ExceptionRecognizer> recognizers, Exception ex) // <.>
+}
+----
+
+<.> `[teal]#*getExceptionRecognizers*#()` : `Can<xref:system:generated:index/ExceptionRecognizer.adoc[ExceptionRecognizer]>`
+<.> `[teal]#*recognize*#(Exception ex)` : `Optional<Recognition>`
 +
 --
 Takes into consideration ExceptionRecognizers as given by _#getExceptionRecognizers()_ .
 --
-* `[teal]#*recognizeFromSelected*#(Can<xref:system:generated:index/ExceptionRecognizer.adoc[ExceptionRecognizer]> recognizers, Exception ex)` : `Optional<Recognition>`
+<.> `[teal]#*recognizeFromSelected*#(Can<xref:system:generated:index/ExceptionRecognizer.adoc[ExceptionRecognizer]> recognizers, Exception ex)` : `Optional<Recognition>`
 +
 --
 Takes into consideration ExceptionRecognizers as given by _recognizers_ .
diff --git a/antora/components/system/modules/generated/pages/index/ExecutionContext.adoc b/antora/components/system/modules/generated/pages/index/ExecutionContext.adoc
index 665de5d..3c5c5b8 100644
--- a/antora/components/system/modules/generated/pages/index/ExecutionContext.adoc
+++ b/antora/components/system/modules/generated/pages/index/ExecutionContext.adoc
@@ -3,7 +3,16 @@
 
 Provides the user and scenario specific environment for an _Interaction.Execution_
 
-* `[teal]#*_ofUserWithSystemDefaults_*#(xref:system:generated:index/UserMemento.adoc[UserMemento] user)` : `xref:system:generated:index/ExecutionContext.adoc[ExecutionContext]`
+.Java Sources
+[source,java]
+----
+class ExecutionContext {
+
+  ExecutionContext ofUserWithSystemDefaults(final UserMemento user) // <.>
+}
+----
+
+<.> `[teal]#*_ofUserWithSystemDefaults_*#(xref:system:generated:index/UserMemento.adoc[UserMemento] user)` : `xref:system:generated:index/ExecutionContext.adoc[ExecutionContext]`
 +
 --
 Creates a new xref:system:generated:index/ExecutionContext.adoc[ExecutionContext] with the specified user and system defaults for clock, locale and time-zone.
diff --git a/antora/components/system/modules/generated/pages/index/ExecutionLogger.adoc b/antora/components/system/modules/generated/pages/index/ExecutionLogger.adoc
index 87b5d47..60608d7 100644
--- a/antora/components/system/modules/generated/pages/index/ExecutionLogger.adoc
+++ b/antora/components/system/modules/generated/pages/index/ExecutionLogger.adoc
@@ -1,4 +1,14 @@
 = ExecutionLogger : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+class ExecutionLogger {
+
+  boolean isEnabled()
+
+  void onExecution(final Interaction.Execution<?, ?> execution)
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/ExecutionMode.adoc b/antora/components/system/modules/generated/pages/index/ExecutionMode.adoc
index 52332fc..f9eaf00 100644
--- a/antora/components/system/modules/generated/pages/index/ExecutionMode.adoc
+++ b/antora/components/system/modules/generated/pages/index/ExecutionMode.adoc
@@ -3,12 +3,32 @@
 
 Whether interactions with the wrapper are actually passed onto the underlying domain object.
 
-* `[teal]#*_SKIP_RULE_VALIDATION_*#`
+.Java Sources
+[source,java]
+----
+enum ExecutionMode {
+
+  /**
+ * Skip all business rules.
+ */
+SKIP_RULE_VALIDATION // <.>
+
+  /**
+ * Skip actual execution.
+ *
+ * <p>
+ * This is not supported for {@link WrapperFactory#asyncWrap(Object, AsyncControl)}; instead just invoke {@link WrapperFactory#wrap(Object, ImmutableEnumSet)}.
+ */
+SKIP_EXECUTION // <.>
+}
+----
+
+<.> `[teal]#*_SKIP_RULE_VALIDATION_*#`
 +
 --
 Skip all business rules.
 --
-* `[teal]#*_SKIP_EXECUTION_*#`
+<.> `[teal]#*_SKIP_EXECUTION_*#`
 +
 --
 Skip actual execution.
diff --git a/antora/components/system/modules/generated/pages/index/ExecutionSubscriber.adoc b/antora/components/system/modules/generated/pages/index/ExecutionSubscriber.adoc
index 325896e..8c385c9 100644
--- a/antora/components/system/modules/generated/pages/index/ExecutionSubscriber.adoc
+++ b/antora/components/system/modules/generated/pages/index/ExecutionSubscriber.adoc
@@ -3,7 +3,16 @@
 
 SPI that allows individual interactions (action invocations or property edits) to be _#publish(Interaction.Execution) published_ . Note that re-publishing is not part of this SPI.
 
-* `[teal]#*onExecution*#(Execution<?, ?> execution)` : `void`
+.Java Sources
+[source,java]
+----
+interface ExecutionSubscriber {
+
+  void onExecution(Interaction.Execution<?, ?> execution) // <.>
+}
+----
+
+<.> `[teal]#*onExecution*#(Execution<?, ?> execution)` : `void`
 +
 --
 Publish each _Interaction.Execution_ immediately after it completes.
diff --git a/antora/components/system/modules/generated/pages/index/FactoryService.adoc b/antora/components/system/modules/generated/pages/index/FactoryService.adoc
index f44b470..76eea7d 100644
--- a/antora/components/system/modules/generated/pages/index/FactoryService.adoc
+++ b/antora/components/system/modules/generated/pages/index/FactoryService.adoc
@@ -1,78 +1,97 @@
 = FactoryService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface FactoryService {
 
-* `[teal]#*getOrCreate*#<T>(Class<T> requiredType)` : `T`
+  T getOrCreate(Class<T> requiredType) // <.>
+
+  T get(Class<T> requiredType) // <.>
+
+  T detachedEntity(Class<T> domainClass) // <.>
+
+  T detachedEntity(T entity) // <.>
+
+  T mixin(Class<T> mixinClass, Object mixedIn) // <.>
+
+  T viewModel(Class<T> viewModelClass, String mementoStr) // <.>
+
+  T viewModel(Class<T> viewModelClass) // <.>
+
+  T viewModel(T viewModel) // <.>
+
+  T create(Class<T> domainClass) // <.>
+
+  T instantiate(Class<T> domainClass) // <.>
+}
+----
+
+<.> `[teal]#*getOrCreate*#<T>(Class<T> requiredType)` : `T`
 +
 --
 General purpose factory method, to automatically get or create an instance of _requiredType_ .
 
 Maps onto one of the specialized factory methods _#get(Class)_ or _#create(Class)_ based on the type's meta-data.
 --
-* `[teal]#*get*#<T>(Class<T> requiredType)` : `T`
+<.> `[teal]#*get*#<T>(Class<T> requiredType)` : `T`
 +
 --
 Gets an instance (possibly shared or independent) of the specified _requiredType_ , with injection points resolved and any life-cycle callback processed.
 --
-* `[teal]#*detachedEntity*#<T>(Class<T> domainClass)` : `T`
+<.> `[teal]#*detachedEntity*#<T>(Class<T> domainClass)` : `T`
 +
 --
 Creates a new detached entity instance, with injection points resolved and defaults applied.
 --
-* `[teal]#*detachedEntity*#<T>(T entity)` : `T`
+<.> `[teal]#*detachedEntity*#<T>(T entity)` : `T`
 +
 --
 Creates a new detached entity instance, with injection points resolved.
 --
-* `[teal]#*mixin*#<T>(Class<T> mixinClass, Object mixedIn)` : `T`
+<.> `[teal]#*mixin*#<T>(Class<T> mixinClass, Object mixedIn)` : `T`
 +
 --
 Creates a new Mixin instance, with injection points resolved.
 --
-* `[teal]#*viewModel*#<T>(Class<T> viewModelClass, String mementoStr)` : `T`
+<.> `[teal]#*viewModel*#<T>(Class<T> viewModelClass, String mementoStr)` : `T`
 +
 --
 Creates a new ViewModel instance, with injection points resolved, and initialized according to the given _mementoStr_
 --
-* `[teal]#*viewModel*#<T>(Class<T> viewModelClass)` : `T`
+<.> `[teal]#*viewModel*#<T>(Class<T> viewModelClass)` : `T`
 +
 --
 Creates a new ViewModel instance, with injection points resolved and defaults applied.
 --
-* `[teal]#*viewModel*#<T>(T viewModel)` : `T`
+<.> `[teal]#*viewModel*#<T>(T viewModel)` : `T`
 +
 --
 Resolves injection points for given ViewModel instance.
 --
-* `[teal]#*create*#<T>(Class<T> domainClass)` : `T`
+<.> `[teal]#*create*#<T>(Class<T> domainClass)` : `T`
 +
 --
 Creates a new instance of the specified class, with injection points resolved and defaults applied.
 --
-* `[line-through gray]#*instantiate*#<T>(Class<T> domainClass)` : `T`
+<.> `[line-through gray]#*instantiate*#<T>(Class<T> domainClass)` : `T`
 +
 --
-+
+[WARNING]
+====
 [red]#_deprecated:_#
 
 with semantic changes since 2.0 previous behavior is no longer guaranteed, instead consider use of @ _#detachedEntity(Class)_ or _#getOrCreate(Class)_ if applicable
+====
 
 Creates a new instance of the specified class, but does not persist it.
 
 It is recommended that the object be initially instantiated using this method, though the framework will also handle the case when the object is simply _new()_ ed up. The benefits of using _#instantiate(Class)_ are:
 
-+
---
-any services will be injected into the object immediately (otherwise they will not be injected until the framework becomes aware of the object, typically when it is _RepositoryService#persist(Object) persist_ ed
---
-+
---
-the default value for any properties (usually as specified by `default _Xxx_ ()` supporting methods) will (since 2.0) be used
---
-+
---
-the `created()` callback will not be called.
---
+* any services will be injected into the object immediately (otherwise they will not be injected until the framework becomes aware of the object, typically when it is _RepositoryService#persist(Object) persist_ ed
+* the default value for any properties (usually as specified by `default _Xxx_ ()` supporting methods) will (since 2.0) be used
+* the `created()` callback will not be called.
 
 The corollary is: if your code never uses `default _Xxx_ ()` supporting methods or the `created()` callback, then you can alternatively just _new()_ up the object rather than call this method.
 --
diff --git a/antora/components/system/modules/generated/pages/index/GridLoaderService.adoc b/antora/components/system/modules/generated/pages/index/GridLoaderService.adoc
index a02b412..66e314b 100644
--- a/antora/components/system/modules/generated/pages/index/GridLoaderService.adoc
+++ b/antora/components/system/modules/generated/pages/index/GridLoaderService.adoc
@@ -1,28 +1,44 @@
 = GridLoaderService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface GridLoaderService {
 
-* `[teal]#*supportsReloading*#()` : `boolean`
+  boolean supportsReloading() // <.>
+
+  void remove(Class<?> domainClass) // <.>
+
+  boolean existsFor(Class<?> domainClass) // <.>
+
+  Grid load(final Class<?> domainClass) // <.>
+
+  Grid load(final Class<?> domainClass, String layout) // <.>
+}
+----
+
+<.> `[teal]#*supportsReloading*#()` : `boolean`
 +
 --
 Whether dynamic reloading of layouts is enabled.
 --
-* `[teal]#*remove*#(Class<?> domainClass)` : `void`
+<.> `[teal]#*remove*#(Class<?> domainClass)` : `void`
 +
 --
 To support metamodel invalidation/rebuilding of spec.
 --
-* `[teal]#*existsFor*#(Class<?> domainClass)` : `boolean`
+<.> `[teal]#*existsFor*#(Class<?> domainClass)` : `boolean`
 +
 --
 Whether any persisted layout metadata (eg a.layout.xmlfile) exists for this domain class.
 --
-* `[teal]#*load*#(Class<?> domainClass)` : `Grid`
+<.> `[teal]#*load*#(Class<?> domainClass)` : `Grid`
 +
 --
 Returns a new instance of a _Grid_ for the specified domain class, eg from alayout.xmlfile, elsenull.
 --
-* `[teal]#*load*#(Class<?> domainClass, String layout)` : `Grid`
+<.> `[teal]#*load*#(Class<?> domainClass, String layout)` : `Grid`
 +
 --
 Returns a new instance of a _Grid_ for the specified domain class, eg from alayout.xmlfile, elsenull.
diff --git a/antora/components/system/modules/generated/pages/index/GridService.adoc b/antora/components/system/modules/generated/pages/index/GridService.adoc
index bf5b8f3..1992705 100644
--- a/antora/components/system/modules/generated/pages/index/GridService.adoc
+++ b/antora/components/system/modules/generated/pages/index/GridService.adoc
@@ -1,52 +1,76 @@
 = GridService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface GridService {
 
-* `[teal]#*supportsReloading*#()` : `boolean`
+  boolean supportsReloading() // <.>
+
+  void remove(Class<?> domainClass) // <.>
+
+  boolean existsFor(Class<?> domainClass) // <.>
+
+  Grid load(final Class<?> domainClass) // <.>
+
+  Grid load(Class<?> domainClass, String layout) // <.>
+
+  Grid defaultGridFor(Class<?> domainClass) // <.>
+
+  Grid normalize(final Grid grid) // <.>
+
+  Grid complete(Grid grid) // <.>
+
+  Grid minimal(Grid grid) // <.>
+}
+----
+
+<.> `[teal]#*supportsReloading*#()` : `boolean`
 +
 --
 Whether dynamic reloading of layouts is enabled.
 --
-* `[teal]#*remove*#(Class<?> domainClass)` : `void`
+<.> `[teal]#*remove*#(Class<?> domainClass)` : `void`
 +
 --
 To support metamodel invalidation/rebuilding of spec.
 --
-* `[teal]#*existsFor*#(Class<?> domainClass)` : `boolean`
+<.> `[teal]#*existsFor*#(Class<?> domainClass)` : `boolean`
 +
 --
 Whether any persisted layout metadata (eg a.layout.xmlfile) exists for this domain class.
 --
-* `[teal]#*load*#(Class<?> domainClass)` : `Grid`
+<.> `[teal]#*load*#(Class<?> domainClass)` : `Grid`
 +
 --
 Returns a new instance of a _Grid_ for the specified domain class, eg from alayout.xmlfile, elsenull.
 --
-* `[teal]#*load*#(Class<?> domainClass, String layout)` : `Grid`
+<.> `[teal]#*load*#(Class<?> domainClass, String layout)` : `Grid`
 +
 --
 Returns a new instance of a _Grid_ for the specified domain class, eg from a[domainClass].layout.[layout].xmlfile, elsenull.
 --
-* `[teal]#*defaultGridFor*#(Class<?> domainClass)` : `Grid`
+<.> `[teal]#*defaultGridFor*#(Class<?> domainClass)` : `Grid`
 +
 --
 Returns a default grid; eg where none can be loaded using _#load(Class)_ .
 --
-* `[teal]#*normalize*#(Grid grid)` : `Grid`
+<.> `[teal]#*normalize*#(Grid grid)` : `Grid`
 +
 --
 Returns a normalized grid for the domain class obtained previously using _#load(Class)_ .
 
 If a "normalized" grid is persisted as thelayout.xml, then the expectation is that the _MemberOrder_ annotation can be removed from the domain class because the binding of properties/collections/actions will be within the XML. However, the layout annotations ( _DomainObjectLayout_ , _ActionLayout_ , _PropertyLayout_ and _CollectionLayout_ ) (if present) will continue to be used to provide additional layout metadata. Of course, there is nothing to prevent the developer from extending the  [...]
 --
-* `[teal]#*complete*#(Grid grid)` : `Grid`
+<.> `[teal]#*complete*#(Grid grid)` : `Grid`
 +
 --
 Modifies the provided _Grid_ with additional metadata, broadly speaking corresponding to the _DomainObjectLayout_ , _ActionLayout_ , _PropertyLayout_ and _CollectionLayout_ .
 
 If a "completed" grid is persisted as thelayout.xml, then there should be no need for any of the layout annotations, nor the _MemberOrder_ annotations, to be required in the domain class itself.
 --
-* `[teal]#*minimal*#(Grid grid)` : `Grid`
+<.> `[teal]#*minimal*#(Grid grid)` : `Grid`
 +
 --
 Modifies the provided _Grid_ , removing all metadata except the basic grid structure.
diff --git a/antora/components/system/modules/generated/pages/index/GridSystemService.adoc b/antora/components/system/modules/generated/pages/index/GridSystemService.adoc
index f592b54..f147e5c 100644
--- a/antora/components/system/modules/generated/pages/index/GridSystemService.adoc
+++ b/antora/components/system/modules/generated/pages/index/GridSystemService.adoc
@@ -3,12 +3,33 @@
 
 Provides an implementation of _Grid_ .
 
-* `[teal]#*gridImplementation*#()` : `Class<G>`
+.Java Sources
+[source,java]
+----
+interface GridSystemService {
+
+  Class<G> gridImplementation() // <.>
+
+  String tns()
+
+  String schemaLocation()
+
+  G defaultGrid(Class<?> domainClass)
+
+  void normalize(G grid, Class<?> domainClass) // <.>
+
+  void complete(G grid, Class<?> domainClass)
+
+  void minimal(G grid, Class<?> domainClass)
+}
+----
+
+<.> `[teal]#*gridImplementation*#()` : `Class<G>`
 +
 --
 Which grid (implementation) is defined by this service.
 --
-* `[teal]#*normalize*#(G grid, Class<?> domainClass)` : `void`
+<.> `[teal]#*normalize*#(G grid, Class<?> domainClass)` : `void`
 +
 --
 Validate the grid, derive any missing object members, and overwrite any facets in the metamodel based on the layout.
diff --git a/antora/components/system/modules/generated/pages/index/HasCommandDto.adoc b/antora/components/system/modules/generated/pages/index/HasCommandDto.adoc
index 4d4e93e..afbff80 100644
--- a/antora/components/system/modules/generated/pages/index/HasCommandDto.adoc
+++ b/antora/components/system/modules/generated/pages/index/HasCommandDto.adoc
@@ -3,3 +3,12 @@
 
 Objects implementing this interface will be processed automatically by _org.apache.isis.applib.services.commanddto.conmap.ContentMappingServiceForCommandDto_ .
 
+.Java Sources
+[source,java]
+----
+interface HasCommandDto {
+
+  CommandDto getCommandDto()
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/Health.adoc b/antora/components/system/modules/generated/pages/index/Health.adoc
index 2f2c3a2..750fabe 100644
--- a/antora/components/system/modules/generated/pages/index/Health.adoc
+++ b/antora/components/system/modules/generated/pages/index/Health.adoc
@@ -1,4 +1,18 @@
 = Health : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+class Health {
+
+  Health ok()
+
+  Health error(final Throwable throwable)
+
+  Health error(String message)
+
+  boolean getResult()
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/HealthCheckService.adoc b/antora/components/system/modules/generated/pages/index/HealthCheckService.adoc
index e983e4c..0c7b3df 100644
--- a/antora/components/system/modules/generated/pages/index/HealthCheckService.adoc
+++ b/antora/components/system/modules/generated/pages/index/HealthCheckService.adoc
@@ -1,4 +1,12 @@
 = HealthCheckService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface HealthCheckService {
+
+  Health check()
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/HiddenException.adoc b/antora/components/system/modules/generated/pages/index/HiddenException.adoc
index c543451..f6dc43d 100644
--- a/antora/components/system/modules/generated/pages/index/HiddenException.adoc
+++ b/antora/components/system/modules/generated/pages/index/HiddenException.adoc
@@ -3,3 +3,14 @@
 
 Superclass of exceptions which indicate an attempt to interact with a class member that is in some way hidden or invisible.
 
+.Java Sources
+[source,java]
+----
+class HiddenException {
+
+  HiddenException(final InteractionEvent interactionEvent)
+
+  VisibilityEvent getInteractionEvent()
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/HintStore.adoc b/antora/components/system/modules/generated/pages/index/HintStore.adoc
index b7c48a3..5d42a42 100644
--- a/antora/components/system/modules/generated/pages/index/HintStore.adoc
+++ b/antora/components/system/modules/generated/pages/index/HintStore.adoc
@@ -1,4 +1,20 @@
 = HintStore : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface HintStore {
+
+  String get(final Bookmark bookmark, String hintKey)
+
+  void set(final Bookmark bookmark, String hintKey, String value)
+
+  void remove(final Bookmark bookmark, String hintKey)
+
+  void removeAll(Bookmark bookmark)
+
+  Set<String> findHintKeys(Bookmark bookmark)
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/HomePageResolverService.adoc b/antora/components/system/modules/generated/pages/index/HomePageResolverService.adoc
index 0f57852..f820935 100644
--- a/antora/components/system/modules/generated/pages/index/HomePageResolverService.adoc
+++ b/antora/components/system/modules/generated/pages/index/HomePageResolverService.adoc
@@ -3,3 +3,12 @@
 
 Returns a view model annotated with _HomePage_ .
 
+.Java Sources
+[source,java]
+----
+interface HomePageResolverService {
+
+  Object getHomePage()
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/Interaction.adoc b/antora/components/system/modules/generated/pages/index/Interaction.adoc
index 9d899ba..cdf19c4 100644
--- a/antora/components/system/modules/generated/pages/index/Interaction.adoc
+++ b/antora/components/system/modules/generated/pages/index/Interaction.adoc
@@ -9,17 +9,32 @@ To confuse matters slightly, historically the xref:system:generated:index/Comman
 
 NOTE: you could also think of this interface as being analogous to the (database) transaction. The name "Transaction" has not been used for the interface not chosen however because there is also the system-level transaction that manages the persistence of the xref:system:generated:index/Command.adoc[Command] object itself.
 
-* `[teal]#*getCurrentExecution*#()` : `Execution<?, ?>`
+.Java Sources
+[source,java]
+----
+interface Interaction {
+
+  Command getCommand()
+
+  Execution<?, ?> getCurrentExecution() // <.>
+
+  Execution<?, ?> getPriorExecution() // <.>
+
+  int next(final String sequenceId) // <.>
+}
+----
+
+<.> `[teal]#*getCurrentExecution*#()` : `Execution<?, ?>`
 +
 --
 The current (most recently pushed) _Execution_ .
 --
-* `[teal]#*getPriorExecution*#()` : `Execution<?, ?>`
+<.> `[teal]#*getPriorExecution*#()` : `Execution<?, ?>`
 +
 --
 The execution that preceded the current one.
 --
-* `[teal]#*next*#(String sequenceId)` : `int`
+<.> `[teal]#*next*#(String sequenceId)` : `int`
 +
 --
 Generates numbers in a named sequence. The name of the sequence can be arbitrary, though note that the framework also uses this capability to generate sequence numbers corresponding to the sequences enumerated by the _Sequence_ enum.
diff --git a/antora/components/system/modules/generated/pages/index/InteractionAdapter.adoc b/antora/components/system/modules/generated/pages/index/InteractionAdapter.adoc
index c743250..e97bdf3 100644
--- a/antora/components/system/modules/generated/pages/index/InteractionAdapter.adoc
+++ b/antora/components/system/modules/generated/pages/index/InteractionAdapter.adoc
@@ -3,3 +3,42 @@
 
 Provides no-op implementations of each of the methods within xref:system:generated:index/InteractionListener.adoc[InteractionListener] , to simplify the creation of new listeners.
 
+.Java Sources
+[source,java]
+----
+class InteractionAdapter {
+
+  void propertyVisible(final PropertyVisibilityEvent ev)
+
+  void propertyUsable(final PropertyUsabilityEvent ev)
+
+  void propertyAccessed(final PropertyAccessEvent ev)
+
+  void propertyModified(final PropertyModifyEvent ev)
+
+  void collectionVisible(final CollectionVisibilityEvent ev)
+
+  void collectionUsable(final CollectionUsabilityEvent ev)
+
+  void collectionAccessed(final CollectionAccessEvent ev)
+
+  void collectionAddedTo(final CollectionAddToEvent ev)
+
+  void collectionRemovedFrom(final CollectionRemoveFromEvent ev)
+
+  void collectionMethodInvoked(final CollectionMethodEvent interactionEvent)
+
+  void actionVisible(final ActionVisibilityEvent interactionEvent)
+
+  void actionUsable(final ActionUsabilityEvent ev)
+
+  void actionArgument(final ActionArgumentEvent ev)
+
+  void actionInvoked(final ActionInvocationEvent ev)
+
+  void objectPersisted(final ObjectValidityEvent ev)
+
+  void objectTitleRead(final ObjectTitleEvent ev)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/InteractionContext.adoc b/antora/components/system/modules/generated/pages/index/InteractionContext.adoc
index b7c385c..3cf723c 100644
--- a/antora/components/system/modules/generated/pages/index/InteractionContext.adoc
+++ b/antora/components/system/modules/generated/pages/index/InteractionContext.adoc
@@ -3,7 +3,18 @@
 
 Provides the current thread's xref:system:generated:index/Interaction.adoc[Interaction] .
 
-* `[teal]#*currentInteraction*#()` : `Optional<xref:system:generated:index/Interaction.adoc[Interaction]>`
+.Java Sources
+[source,java]
+----
+interface InteractionContext {
+
+  Optional<Interaction> currentInteraction() // <.>
+
+  Interaction currentInteractionElseFail()
+}
+----
+
+<.> `[teal]#*currentInteraction*#()` : `Optional<xref:system:generated:index/Interaction.adoc[Interaction]>`
 +
 --
 Optionally, the currently active xref:system:generated:index/Interaction.adoc[Interaction] for the calling thread.
diff --git a/antora/components/system/modules/generated/pages/index/InteractionEvent.adoc b/antora/components/system/modules/generated/pages/index/InteractionEvent.adoc
index 128a6de..fad44f6 100644
--- a/antora/components/system/modules/generated/pages/index/InteractionEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/InteractionEvent.adoc
@@ -5,90 +5,116 @@
 
 Many of the interactions are checks for _VisibilityEvent visibility_ , _UsabilityEvent usability_ and _ValidityEvent validity_ .
 
-* `[teal]#*getSource*#()` : `Object`
+.Java Sources
+[source,java]
+----
+class InteractionEvent {
+
+  InteractionEvent(final Object source, final Identifier identifier)
+
+  Object getSource() // <.>
+
+  Identifier getIdentifier() // <.>
+
+  String getClassName() // <.>
+
+  String getClassNaturalName() // <.>
+
+  String getMemberName() // <.>
+
+  String getMemberNaturalName() // <.>
+
+  List<String> getMemberParameterNames() // <.>
+
+  List<String> getMemberParameterNaturalNames() // <.>
+
+  String getReason() // <.>
+
+  String getReasonMessage() // <.>
+
+  Class<?> getAdvisorClass() // <.>
+
+  void advised(final String reason, final Class<?> advisorClass) // <.>
+
+  boolean isVeto() // <.>
+}
+----
+
+<.> `[teal]#*getSource*#()` : `Object`
 +
 --
 The domain object (pojo) against which the interaction occurred.
 --
-* `[teal]#*getIdentifier*#()` : `Identifier`
+<.> `[teal]#*getIdentifier*#()` : `Identifier`
 +
 --
 The _Identifier_ of the feature of the object being interacted with.
 
 Will be consistent with the subclass of xref:system:generated:index/InteractionEvent.adoc[InteractionEvent] . So for example a xref:system:generated:index/PropertyModifyEvent.adoc[PropertyModifyEvent] will have an _Identifier_ that identifies the property being modified.
 --
-* `[teal]#*getClassName*#()` : `String`
+<.> `[teal]#*getClassName*#()` : `String`
 +
 --
 As per _#getClassName()_ , but naturalized.
 --
-* `[teal]#*getClassNaturalName*#()` : `String`
+<.> `[teal]#*getClassNaturalName*#()` : `String`
 +
 --
 Convenience method that returns the _Identifier#getClassNaturalName() natural class name_ of the _#getIdentifier() identifier_ .
 --
-* `[teal]#*getMemberName*#()` : `String`
+<.> `[teal]#*getMemberName*#()` : `String`
 +
 --
 Convenience method that returns the _Identifier#getMemberName() member name_ of the _#getIdentifier() identifier_ .
 --
-* `[teal]#*getMemberNaturalName*#()` : `String`
+<.> `[teal]#*getMemberNaturalName*#()` : `String`
 +
 --
 As per _#getMemberName()_ , but naturalized.
 --
-* `[teal]#*getMemberParameterNames*#()` : `List<String>`
+<.> `[teal]#*getMemberParameterNames*#()` : `List<String>`
 +
 --
 Convenience method that returns the _Identifier#getClassName() class name_ of the _#getIdentifier() identifier_ .
 --
-* `[teal]#*getMemberParameterNaturalNames*#()` : `List<String>`
+<.> `[teal]#*getMemberParameterNaturalNames*#()` : `List<String>`
 +
 --
 As per _#getMemberParameterName()_ , but naturalized.
 --
-* `[teal]#*getReason*#()` : `String`
+<.> `[teal]#*getReason*#()` : `String`
 +
 --
 The reason, if any, that this interaction may have been vetoed or otherwise disallowed.
 
 Intended to be _#setExecuteIn(String) set_ as a result of consulting one of the facets.
 --
-* `[teal]#*getReasonMessage*#()` : `String`
+<.> `[teal]#*getReasonMessage*#()` : `String`
 +
 --
 The reason message, if any, that this interaction may have been vetoed or otherwise disallowed.
 
 This message should be overridden by subclasses for containing the Reason, the Identifier and any other relevant context information.
 --
-* `[teal]#*getAdvisorClass*#()` : `Class<?>`
+<.> `[teal]#*getAdvisorClass*#()` : `Class<?>`
 +
 --
 The class of the (first) advisor, if any, that provided the _#getReason() reason_ that this interaction is _#isVeto() vetoed_ .
 --
-* `[teal]#*advised*#(String reason, Class<?> advisorClass)` : `void`
+<.> `[teal]#*advised*#(String reason, Class<?> advisorClass)` : `void`
 +
 --
 Specify the _#getReason() reason_ that this interaction has been vetoed and the _#getAdvisorClass() class of the advisor_ that did the veto.
 --
-* `[teal]#*isVeto*#()` : `boolean`
+<.> `[teal]#*isVeto*#()` : `boolean`
 +
 --
 Whether this interaction has been vetoed (meaning that _#getReason()_ and _#getAdvisorClass()_ will both be non- `null` and the _#getReason() reason_ non-empty.)
 
 The interpretation of this depends on the subclass:
 
-+
---
-for xref:system:generated:index/VisibilityEvent.adoc[VisibilityEvent] , a veto means that the feature (property, collection, action) is hidden
---
-+
---
-for xref:system:generated:index/UsabilityEvent.adoc[UsabilityEvent] , a veto means that the feature is disabled
---
-+
---
-for xref:system:generated:index/ValidityEvent.adoc[ValidityEvent] , a veto means that the proposed modification (property value, object added/removed, action argument) is invalid
---
+* for xref:system:generated:index/VisibilityEvent.adoc[VisibilityEvent] , a veto means that the feature (property, collection, action) is hidden
+* for xref:system:generated:index/UsabilityEvent.adoc[UsabilityEvent] , a veto means that the feature is disabled
+* for xref:system:generated:index/ValidityEvent.adoc[ValidityEvent] , a veto means that the proposed modification (property value, object added/removed, action argument) is invalid
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/InteractionListener.adoc b/antora/components/system/modules/generated/pages/index/InteractionListener.adoc
index a1341ad..ca35e9b 100644
--- a/antora/components/system/modules/generated/pages/index/InteractionListener.adoc
+++ b/antora/components/system/modules/generated/pages/index/InteractionListener.adoc
@@ -1,101 +1,139 @@
 = InteractionListener : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface InteractionListener {
 
-* `[teal]#*objectTitleRead*#(xref:system:generated:index/ObjectTitleEvent.adoc[ObjectTitleEvent] ev)` : `void`
+  void objectTitleRead(ObjectTitleEvent ev) // <.>
+
+  void objectPersisted(ObjectValidityEvent ev) // <.>
+
+  void propertyVisible(PropertyVisibilityEvent ev) // <.>
+
+  void propertyUsable(PropertyUsabilityEvent ev) // <.>
+
+  void propertyAccessed(PropertyAccessEvent ev) // <.>
+
+  void propertyModified(PropertyModifyEvent ev) // <.>
+
+  void collectionVisible(CollectionVisibilityEvent ev) // <.>
+
+  void collectionUsable(CollectionUsabilityEvent ev) // <.>
+
+  void collectionAccessed(CollectionAccessEvent ev) // <.>
+
+  void collectionAddedTo(CollectionAddToEvent ev) // <.>
+
+  void collectionRemovedFrom(CollectionRemoveFromEvent ev) // <.>
+
+  void collectionMethodInvoked(CollectionMethodEvent interactionEvent) // <.>
+
+  void actionVisible(ActionVisibilityEvent interactionEvent) // <.>
+
+  void actionUsable(ActionUsabilityEvent ev) // <.>
+
+  void actionArgument(ActionArgumentEvent ev) // <.>
+
+  void actionInvoked(ActionInvocationEvent ev) // <.>
+}
+----
+
+<.> `[teal]#*objectTitleRead*#(xref:system:generated:index/ObjectTitleEvent.adoc[ObjectTitleEvent] ev)` : `void`
 +
 --
 The title was read.
 --
-* `[teal]#*objectPersisted*#(xref:system:generated:index/ObjectValidityEvent.adoc[ObjectValidityEvent] ev)` : `void`
+<.> `[teal]#*objectPersisted*#(xref:system:generated:index/ObjectValidityEvent.adoc[ObjectValidityEvent] ev)` : `void`
 +
 --
 The object was persisted (or an attempt to persist it was made).
 --
-* `[teal]#*propertyVisible*#(xref:system:generated:index/PropertyVisibilityEvent.adoc[PropertyVisibilityEvent] ev)` : `void`
+<.> `[teal]#*propertyVisible*#(xref:system:generated:index/PropertyVisibilityEvent.adoc[PropertyVisibilityEvent] ev)` : `void`
 +
 --
 A check was made to determine if a property was visible.
 --
-* `[teal]#*propertyUsable*#(xref:system:generated:index/PropertyUsabilityEvent.adoc[PropertyUsabilityEvent] ev)` : `void`
+<.> `[teal]#*propertyUsable*#(xref:system:generated:index/PropertyUsabilityEvent.adoc[PropertyUsabilityEvent] ev)` : `void`
 +
 --
 A check was made to determine if a property was usable.
 --
-* `[teal]#*propertyAccessed*#(xref:system:generated:index/PropertyAccessEvent.adoc[PropertyAccessEvent] ev)` : `void`
+<.> `[teal]#*propertyAccessed*#(xref:system:generated:index/PropertyAccessEvent.adoc[PropertyAccessEvent] ev)` : `void`
 +
 --
 A property was read.
 
 Unlike most other events, a xref:system:generated:index/PropertyAccessEvent.adoc[PropertyAccessEvent] will never have been vetoed (that is, _PropertyAccessEvent#isVeto()_ will always be `false` ).
 --
-* `[teal]#*propertyModified*#(xref:system:generated:index/PropertyModifyEvent.adoc[PropertyModifyEvent] ev)` : `void`
+<.> `[teal]#*propertyModified*#(xref:system:generated:index/PropertyModifyEvent.adoc[PropertyModifyEvent] ev)` : `void`
 +
 --
 A property was modified (or an attempt to modify it was made)
 
 Use _PropertyModifyEvent#getProposed()_ to determine whether the property was being set or cleared.
 --
-* `[teal]#*collectionVisible*#(CollectionVisibilityEvent ev)` : `void`
+<.> `[teal]#*collectionVisible*#(CollectionVisibilityEvent ev)` : `void`
 +
 --
 A check was made to determine if a collection was visible.
 
 Will be fired prior to _#collectionUsable(CollectionUsabilityEvent)_ .
 --
-* `[teal]#*collectionUsable*#(xref:system:generated:index/CollectionUsabilityEvent.adoc[CollectionUsabilityEvent] ev)` : `void`
+<.> `[teal]#*collectionUsable*#(xref:system:generated:index/CollectionUsabilityEvent.adoc[CollectionUsabilityEvent] ev)` : `void`
 +
 --
 A check was made to determine if a collection was usable.
 
 Will be fired prior to either _#collectionAccessed(CollectionAccessEvent)_ or _#collectionAddedTo(CollectionAddToEvent)_ or _#collectionRemovedFrom(CollectionRemoveFromEvent)_ .
 --
-* `[teal]#*collectionAccessed*#(xref:system:generated:index/CollectionAccessEvent.adoc[CollectionAccessEvent] ev)` : `void`
+<.> `[teal]#*collectionAccessed*#(xref:system:generated:index/CollectionAccessEvent.adoc[CollectionAccessEvent] ev)` : `void`
 +
 --
 A collection was read.
 
 Unlike most other events, a xref:system:generated:index/CollectionAccessEvent.adoc[CollectionAccessEvent] will never have been vetoed (that is, _CollectionAccessEvent#isVeto()_ will always be `false` ).
 --
-* `[teal]#*collectionAddedTo*#(xref:system:generated:index/CollectionAddToEvent.adoc[CollectionAddToEvent] ev)` : `void`
+<.> `[teal]#*collectionAddedTo*#(xref:system:generated:index/CollectionAddToEvent.adoc[CollectionAddToEvent] ev)` : `void`
 +
 --
 An object was added to the collection (or an attempt to add it was made).
 --
-* `[teal]#*collectionRemovedFrom*#(xref:system:generated:index/CollectionRemoveFromEvent.adoc[CollectionRemoveFromEvent] ev)` : `void`
+<.> `[teal]#*collectionRemovedFrom*#(xref:system:generated:index/CollectionRemoveFromEvent.adoc[CollectionRemoveFromEvent] ev)` : `void`
 +
 --
 An object was removed from the collection (or an attempt to remove it was made).
 --
-* `[teal]#*collectionMethodInvoked*#(xref:system:generated:index/CollectionMethodEvent.adoc[CollectionMethodEvent] interactionEvent)` : `void`
+<.> `[teal]#*collectionMethodInvoked*#(xref:system:generated:index/CollectionMethodEvent.adoc[CollectionMethodEvent] interactionEvent)` : `void`
 +
 --
 A method of a collection (such as `isEmpty()` or `size()` ) has been invoked.
 
 Unlike the other methods in this interface, the source of these events will be an instance of a Collection (such as `java.util.List` ) rather than the domain object. (The domain object is {@link CollectionMethodEvent#getDomainObject() still available, however).
 --
-* `[teal]#*actionVisible*#(xref:system:generated:index/ActionVisibilityEvent.adoc[ActionVisibilityEvent] interactionEvent)` : `void`
+<.> `[teal]#*actionVisible*#(xref:system:generated:index/ActionVisibilityEvent.adoc[ActionVisibilityEvent] interactionEvent)` : `void`
 +
 --
 A check was made to determine if an action was visible.
 
 Will be fired prior to _#actionUsable(ActionUsabilityEvent)_ .
 --
-* `[teal]#*actionUsable*#(xref:system:generated:index/ActionUsabilityEvent.adoc[ActionUsabilityEvent] ev)` : `void`
+<.> `[teal]#*actionUsable*#(xref:system:generated:index/ActionUsabilityEvent.adoc[ActionUsabilityEvent] ev)` : `void`
 +
 --
 A check was made to determine if an action was usable.
 
 Will be fired prior to _#actionArgument(ActionArgumentEvent)_ .
 --
-* `[teal]#*actionArgument*#(xref:system:generated:index/ActionArgumentEvent.adoc[ActionArgumentEvent] ev)` : `void`
+<.> `[teal]#*actionArgument*#(xref:system:generated:index/ActionArgumentEvent.adoc[ActionArgumentEvent] ev)` : `void`
 +
 --
 A check was made as to whether an argument proposed for an action was valid.
 
 Will be fired prior to _#actionInvoked(ActionInvocationEvent)_ .
 --
-* `[teal]#*actionInvoked*#(xref:system:generated:index/ActionInvocationEvent.adoc[ActionInvocationEvent] ev)` : `void`
+<.> `[teal]#*actionInvoked*#(xref:system:generated:index/ActionInvocationEvent.adoc[ActionInvocationEvent] ev)` : `void`
 +
 --
 An action was invoked (or an attempt to invoke it was made).
diff --git a/antora/components/system/modules/generated/pages/index/InvalidException.adoc b/antora/components/system/modules/generated/pages/index/InvalidException.adoc
index d2636b8..57b0b37 100644
--- a/antora/components/system/modules/generated/pages/index/InvalidException.adoc
+++ b/antora/components/system/modules/generated/pages/index/InvalidException.adoc
@@ -3,3 +3,14 @@
 
 Superclass of exceptions which indicate an attempt to interact with an object or member in a way that is invalid.
 
+.Java Sources
+[source,java]
+----
+class InvalidException {
+
+  InvalidException(final InteractionEvent interactionEvent)
+
+  ValidityEvent getInteractionEvent()
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/JaxbService.adoc b/antora/components/system/modules/generated/pages/index/JaxbService.adoc
index 4fdb2cd..97ef9fb 100644
--- a/antora/components/system/modules/generated/pages/index/JaxbService.adoc
+++ b/antora/components/system/modules/generated/pages/index/JaxbService.adoc
@@ -1,13 +1,33 @@
 = JaxbService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface JaxbService {
 
-* `[teal]#*fromXml*#<T>(Class<T> domainClass, String xml)` : `T`
+  Object fromXml(JAXBContext jaxbContext, String xml)
+
+  Object fromXml(JAXBContext jaxbContext, String xml, Map<String, Object> unmarshallerProperties)
+
+  T fromXml(Class<T> domainClass, String xml) // <.>
+
+  T fromXml(Class<T> domainClass, String xml, Map<String, Object> unmarshallerProperties) // <.>
+
+  String toXml(Object domainObject)
+
+  String toXml(Object domainObject, Map<String, Object> marshallerProperties)
+
+  Map<String, String> toXsd(Object domainObject, IsisSchemas isisSchemas)
+}
+----
+
+<.> `[teal]#*fromXml*#<T>(Class<T> domainClass, String xml)` : `T`
 +
 --
 As _#fromXml(JAXBContext, String)_ , but downcast to a specific type.
 --
-* `[teal]#*fromXml*#<T>(Class<T> domainClass, String xml, Map<String, Object> unmarshallerProperties)` : `T`
+<.> `[teal]#*fromXml*#<T>(Class<T> domainClass, String xml, Map<String, Object> unmarshallerProperties)` : `T`
 +
 --
 As _#fromXml(JAXBContext, String, Map)_ , but downcast to a specific type.
diff --git a/antora/components/system/modules/generated/pages/index/LayoutService.adoc b/antora/components/system/modules/generated/pages/index/LayoutService.adoc
index 796fb60..98778b2 100644
--- a/antora/components/system/modules/generated/pages/index/LayoutService.adoc
+++ b/antora/components/system/modules/generated/pages/index/LayoutService.adoc
@@ -1,18 +1,30 @@
 = LayoutService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface LayoutService {
 
-* `[teal]#*toXml*#(Class<?> domainClass, Style style)` : `String`
+  String toXml(Class<?> domainClass, Style style) // <.>
+
+  byte[] toZip(final Style style) // <.>
+
+  String toMenuBarsXml(final MenuBarsService.Type type) // <.>
+}
+----
+
+<.> `[teal]#*toXml*#(Class<?> domainClass, Style style)` : `String`
 +
 --
 Obtains the serialized XML form of the layout (grid) for the specified domain class.
 --
-* `[teal]#*toZip*#(Style style)` : `byte[]`
+<.> `[teal]#*toZip*#(Style style)` : `byte[]`
 +
 --
 Obtains a zip file of the serialized XML of the layouts (grids) of all domain entities and view models.
 --
-* `[teal]#*toMenuBarsXml*#(Type type)` : `String`
+<.> `[teal]#*toMenuBarsXml*#(Type type)` : `String`
 +
 --
 Obtains the serialized XML form of the menu bars layout ( xref:system:generated:index/MenuBarsService.adoc[MenuBarsService] ).
diff --git a/antora/components/system/modules/generated/pages/index/LayoutServiceMenu.adoc b/antora/components/system/modules/generated/pages/index/LayoutServiceMenu.adoc
index 48f71db..9872266 100644
--- a/antora/components/system/modules/generated/pages/index/LayoutServiceMenu.adoc
+++ b/antora/components/system/modules/generated/pages/index/LayoutServiceMenu.adoc
@@ -1,4 +1,25 @@
 = LayoutServiceMenu : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+class LayoutServiceMenu {
+
+  @Inject
+LayoutService layoutService;
+
+  LayoutServiceMenu()
+
+  Blob downloadLayouts(final LayoutService.Style style)
+
+  LayoutService.Style default0DownloadLayouts()
+
+  Clob downloadMenuBarsLayout(final String fileName, final MenuBarsService.Type type)
+
+  String default0DownloadMenuBarsLayout()
+
+  MenuBarsService.Type default1DownloadMenuBarsLayout()
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/LocaleProvider.adoc b/antora/components/system/modules/generated/pages/index/LocaleProvider.adoc
index cee7f75..afedcb3 100644
--- a/antora/components/system/modules/generated/pages/index/LocaleProvider.adoc
+++ b/antora/components/system/modules/generated/pages/index/LocaleProvider.adoc
@@ -1,4 +1,12 @@
 = LocaleProvider : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface LocaleProvider {
+
+  Locale getLocale()
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/MenuBarsLoaderService.adoc b/antora/components/system/modules/generated/pages/index/MenuBarsLoaderService.adoc
index a5374a2..505d2bc 100644
--- a/antora/components/system/modules/generated/pages/index/MenuBarsLoaderService.adoc
+++ b/antora/components/system/modules/generated/pages/index/MenuBarsLoaderService.adoc
@@ -1,13 +1,23 @@
 = MenuBarsLoaderService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface MenuBarsLoaderService {
 
-* `[teal]#*supportsReloading*#()` : `boolean`
+  boolean supportsReloading() // <.>
+
+  BS3MenuBars menuBars() // <.>
+}
+----
+
+<.> `[teal]#*supportsReloading*#()` : `boolean`
 +
 --
 Whether dynamic reloading of layouts is enabled.
 --
-* `[teal]#*menuBars*#()` : `BS3MenuBars`
+<.> `[teal]#*menuBars*#()` : `BS3MenuBars`
 +
 --
 Returns a new instance of a _BS3MenuBars_ , else `null` .
diff --git a/antora/components/system/modules/generated/pages/index/MenuBarsService.adoc b/antora/components/system/modules/generated/pages/index/MenuBarsService.adoc
index 638c2a3..ba495fc 100644
--- a/antora/components/system/modules/generated/pages/index/MenuBarsService.adoc
+++ b/antora/components/system/modules/generated/pages/index/MenuBarsService.adoc
@@ -1,8 +1,18 @@
 = MenuBarsService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface MenuBarsService {
 
-* `[teal]#*menuBars*#()` : `MenuBars`
+  MenuBars menuBars() // <.>
+
+  MenuBars menuBars(final Type type)
+}
+----
+
+<.> `[teal]#*menuBars*#()` : `MenuBars`
 +
 --
 Returns _#menuBars()_ with a type of _Type#DEFAULT_ .
diff --git a/antora/components/system/modules/generated/pages/index/MessageService.adoc b/antora/components/system/modules/generated/pages/index/MessageService.adoc
index 6a709cc..28552d9 100644
--- a/antora/components/system/modules/generated/pages/index/MessageService.adoc
+++ b/antora/components/system/modules/generated/pages/index/MessageService.adoc
@@ -1,54 +1,78 @@
 = MessageService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface MessageService {
 
-* `[teal]#*informUser*#(String message)` : `void`
+  void informUser(String message) // <.>
+
+  String informUser(TranslatableString message, final Class<?> contextClass, final String contextMethod) // <.>
+
+  String informUser(TranslatableString message, final String translationContext) // <.>
+
+  void warnUser(String message) // <.>
+
+  String warnUser(TranslatableString message, final Class<?> contextClass, final String contextMethod) // <.>
+
+  String warnUser(TranslatableString message, final String translationContext) // <.>
+
+  void raiseError(String message) // <.>
+
+  String raiseError(TranslatableString message, final Class<?> contextClass, final String contextMethod) // <.>
+
+  String raiseError(TranslatableString message, final String translationContext) // <.>
+}
+----
+
+<.> `[teal]#*informUser*#(String message)` : `void`
 +
 --
 Make the specified message available to the user. Note this will probably be displayed in transitory fashion, so is only suitable for useful but optional information.
 --
-* `[teal]#*informUser*#(xref:system:generated:index/TranslatableString.adoc[TranslatableString] message, Class<?> contextClass, String contextMethod)` : `String`
+<.> `[teal]#*informUser*#(xref:system:generated:index/TranslatableString.adoc[TranslatableString] message, Class<?> contextClass, String contextMethod)` : `String`
 +
 --
 Make the specified message available to the user, translated (if possible) to user's locale.
 
 More precisely, the locale is as provided by the configured _org.apache.isis.applib.services.i18n.LocaleProvider_ service. This will most commonly be the locale of the current request (ie the current user's locale).
 --
-* `[teal]#*informUser*#(xref:system:generated:index/TranslatableString.adoc[TranslatableString] message, String translationContext)` : `String`
+<.> `[teal]#*informUser*#(xref:system:generated:index/TranslatableString.adoc[TranslatableString] message, String translationContext)` : `String`
 +
 --
 Override of _MessageService#informUser(TranslatableString, Class, String)_ , but with last two parameters combined into a context string.
 --
-* `[teal]#*warnUser*#(String message)` : `void`
+<.> `[teal]#*warnUser*#(String message)` : `void`
 +
 --
 Warn the user about a situation with the specified message. The container should guarantee to display this warning to the user, and will typically require acknowledgement.
 --
-* `[teal]#*warnUser*#(xref:system:generated:index/TranslatableString.adoc[TranslatableString] message, Class<?> contextClass, String contextMethod)` : `String`
+<.> `[teal]#*warnUser*#(xref:system:generated:index/TranslatableString.adoc[TranslatableString] message, Class<?> contextClass, String contextMethod)` : `String`
 +
 --
 Warn the user about a situation with the specified message, translated (if possible) to user's locale.
 
 More precisely, the locale is as provided by the configured _org.apache.isis.applib.services.i18n.LocaleProvider_ service. This will most commonly be the locale of the current request (ie the current user's locale).
 --
-* `[teal]#*warnUser*#(xref:system:generated:index/TranslatableString.adoc[TranslatableString] message, String translationContext)` : `String`
+<.> `[teal]#*warnUser*#(xref:system:generated:index/TranslatableString.adoc[TranslatableString] message, String translationContext)` : `String`
 +
 --
 Override of _MessageService#warnUser(TranslatableString, Class, String)_ , but with last two parameters combined into a context string.
 --
-* `[teal]#*raiseError*#(String message)` : `void`
+<.> `[teal]#*raiseError*#(String message)` : `void`
 +
 --
 Notify the user of an application error with the specified message. Note this will probably be displayed in an alarming fashion, so is only suitable for errors. The user will typically be required to perform additional steps after the error (eg to inform the helpdesk).
 --
-* `[teal]#*raiseError*#(xref:system:generated:index/TranslatableString.adoc[TranslatableString] message, Class<?> contextClass, String contextMethod)` : `String`
+<.> `[teal]#*raiseError*#(xref:system:generated:index/TranslatableString.adoc[TranslatableString] message, Class<?> contextClass, String contextMethod)` : `String`
 +
 --
 Notify the user of an application error with the specified message, translated (if possible) to user's locale.
 
 More precisely, the locale is as provided by the configured _org.apache.isis.applib.services.i18n.LocaleProvider_ service. This will most commonly be the locale of the current request (ie the current user's locale).
 --
-* `[teal]#*raiseError*#(xref:system:generated:index/TranslatableString.adoc[TranslatableString] message, String translationContext)` : `String`
+<.> `[teal]#*raiseError*#(xref:system:generated:index/TranslatableString.adoc[TranslatableString] message, String translationContext)` : `String`
 +
 --
 Override of _MessageService#raiseError(TranslatableString, Class, String)_ , but with last two parameters combined into a context string.
diff --git a/antora/components/system/modules/generated/pages/index/MetaModelService.adoc b/antora/components/system/modules/generated/pages/index/MetaModelService.adoc
index cb317a1..f0b1947 100644
--- a/antora/components/system/modules/generated/pages/index/MetaModelService.adoc
+++ b/antora/components/system/modules/generated/pages/index/MetaModelService.adoc
@@ -5,17 +5,40 @@ This service provides a formal API into Isis' metamodel.
 
 This API is currently extremely limited, but the intention is to extend it gradually as use cases emerge.
 
-* `[teal]#*fromObjectType*#(String objectType)` : `Class<?>`
+.Java Sources
+[source,java]
+----
+interface MetaModelService {
+
+  Class<?> fromObjectType(final String objectType) // <.>
+
+  String toObjectType(final Class<?> domainType) // <.>
+
+  void rebuild(final Class<?> domainType)
+
+  DomainModel getDomainModel() // <.>
+
+  BeanSort sortOf(Class<?> domainType, Mode mode)
+
+  BeanSort sortOf(Bookmark bookmark, Mode mode)
+
+  CommandDtoProcessor commandDtoProcessorFor(String logicalMemberIdentifier)
+
+  MetamodelDto exportMetaModel(final Config config)
+}
+----
+
+<.> `[teal]#*fromObjectType*#(String objectType)` : `Class<?>`
 +
 --
 Provides a reverse lookup of a domain class' object type, as defined by _DomainObject#objectType()_ (or any other mechanism that corresponds to Isis'ObjectSpecIdFacet).
 --
-* `[teal]#*toObjectType*#(Class<?> domainType)` : `String`
+<.> `[teal]#*toObjectType*#(Class<?> domainType)` : `String`
 +
 --
 Provides a lookup of a domain class' object type, as defined by _DomainObject#objectType()_ (or any other mechanism that corresponds to Isis'ObjectSpecIdFacet).
 --
-* `[teal]#*getDomainModel*#()` : `xref:system:generated:index/DomainModel.adoc[DomainModel]`
+<.> `[teal]#*getDomainModel*#()` : `xref:system:generated:index/DomainModel.adoc[DomainModel]`
 +
 --
 Returns a list of representations of each of member of each domain class.
diff --git a/antora/components/system/modules/generated/pages/index/MetaModelServiceMenu.adoc b/antora/components/system/modules/generated/pages/index/MetaModelServiceMenu.adoc
index d613944..2162e61 100644
--- a/antora/components/system/modules/generated/pages/index/MetaModelServiceMenu.adoc
+++ b/antora/components/system/modules/generated/pages/index/MetaModelServiceMenu.adoc
@@ -1,4 +1,36 @@
 = MetaModelServiceMenu : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+class MetaModelServiceMenu {
+
+  final MimeType mimeTypeTextCsv;
+
+  final MimeType mimeTypeTextXml;
+
+  @Inject
+MetaModelService metaModelService;
+
+  @Inject
+JaxbService jaxbService;
+
+  MetaModelServiceMenu()
+
+  Clob downloadMetaModelCsv(final String csvFileName)
+
+  String default0DownloadMetaModelCsv()
+
+  Clob downloadMetaModelXml(final String fileName, final List<String> packages, final boolean ignoreInterfaces)
+
+  String validateDownloadMetaModelXml(final String fileName, final List<String> packagePrefixes, final boolean ignoreInterfaces)
+
+  String default0DownloadMetaModelXml()
+
+  List<String> choices1DownloadMetaModelXml()
+
+  boolean default2DownloadMetaModelXml()
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/MethodReferences.adoc b/antora/components/system/modules/generated/pages/index/MethodReferences.adoc
index 940b794..1e77920 100644
--- a/antora/components/system/modules/generated/pages/index/MethodReferences.adoc
+++ b/antora/components/system/modules/generated/pages/index/MethodReferences.adoc
@@ -1,4 +1,10 @@
 = MethodReferences : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+class MethodReferences {
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/MetricsService.adoc b/antora/components/system/modules/generated/pages/index/MetricsService.adoc
index 1bbe642..0066349 100644
--- a/antora/components/system/modules/generated/pages/index/MetricsService.adoc
+++ b/antora/components/system/modules/generated/pages/index/MetricsService.adoc
@@ -1,8 +1,18 @@
 = MetricsService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface MetricsService {
 
-* `[teal]#*numberEntitiesLoaded*#()` : `int`
+  int numberEntitiesLoaded() // <.>
+
+  int numberEntitiesDirtied() // <.>
+}
+----
+
+<.> `[teal]#*numberEntitiesLoaded*#()` : `int`
 +
 --
 The number of entities that have, so far in this request, been loaded from the database.
@@ -11,7 +21,7 @@ Corresponds to the number of times thatjavax.jdo.listener.LoadLifecycleListener#
 
 Is captured within _MemberExecutionDto#getMetrics()_ (accessible from _InteractionContext#currentInteraction()_ ).
 --
-* `[teal]#*numberEntitiesDirtied*#()` : `int`
+<.> `[teal]#*numberEntitiesDirtied*#()` : `int`
 +
 --
 The number of objects that have, so far in this request, been dirtied/will need updating in the database); a good measure of the footprint of the interaction.
diff --git a/antora/components/system/modules/generated/pages/index/ObjectTitleEvent.adoc b/antora/components/system/modules/generated/pages/index/ObjectTitleEvent.adoc
index 44d922e..9d17936 100644
--- a/antora/components/system/modules/generated/pages/index/ObjectTitleEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/ObjectTitleEvent.adoc
@@ -5,3 +5,14 @@
 
 The _#getReason()_ will always be `null` ; access is always allowed.
 
+.Java Sources
+[source,java]
+----
+class ObjectTitleEvent {
+
+  ObjectTitleEvent(final Object source, final Identifier classIdentifier, final String title)
+
+  String getTitle()
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/ObjectValidityEvent.adoc b/antora/components/system/modules/generated/pages/index/ObjectValidityEvent.adoc
index e69ac29..0088709 100644
--- a/antora/components/system/modules/generated/pages/index/ObjectValidityEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/ObjectValidityEvent.adoc
@@ -5,3 +5,14 @@
 
 If _#getReason()_ is not `null` then provides the reason why the object is invalid, otherwise ok.
 
+.Java Sources
+[source,java]
+----
+class ObjectValidityEvent {
+
+  ObjectValidityEvent(final Object source, final Identifier classIdentifier)
+
+  Object getProposed()
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/ObjectVisibilityEvent.adoc b/antora/components/system/modules/generated/pages/index/ObjectVisibilityEvent.adoc
index f0f56d3..0d4f5b7 100644
--- a/antora/components/system/modules/generated/pages/index/ObjectVisibilityEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/ObjectVisibilityEvent.adoc
@@ -5,3 +5,12 @@
 
 If _#getReason()_ is not `null` then provides the reason why the object is invisible; otherwise action is visible.
 
+.Java Sources
+[source,java]
+----
+class ObjectVisibilityEvent {
+
+  ObjectVisibilityEvent(final Object source, final Identifier classIdentifier)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/ParseValueEvent.adoc b/antora/components/system/modules/generated/pages/index/ParseValueEvent.adoc
index 0d15a33..27d4a08 100644
--- a/antora/components/system/modules/generated/pages/index/ParseValueEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/ParseValueEvent.adoc
@@ -5,7 +5,20 @@
 
 If _#getReason()_ is not `null` then provides the reason why the proposed value is invalid, otherwise the new value is acceptable.
 
-* `[teal]#*getSource*#()` : `Object`
+.Java Sources
+[source,java]
+----
+class ParseValueEvent {
+
+  ParseValueEvent(final Object source, final Identifier classIdentifier, final String proposed)
+
+  Object getSource() // <.>
+
+  String getProposed()
+}
+----
+
+<.> `[teal]#*getSource*#()` : `Object`
 +
 --
 Will be the source provided in the _#ParseValueEvent(Object, Identifier, String) constructor_ if not null, otherwise will fallback to the proposed value.
diff --git a/antora/components/system/modules/generated/pages/index/PasswordResetEvent.adoc b/antora/components/system/modules/generated/pages/index/PasswordResetEvent.adoc
index 9d50aa1..f578a8b 100644
--- a/antora/components/system/modules/generated/pages/index/PasswordResetEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/PasswordResetEvent.adoc
@@ -3,3 +3,12 @@
 
 An event send to all services interested in user password reset
 
+.Java Sources
+[source,java]
+----
+class PasswordResetEvent {
+
+  PasswordResetEvent(final String email, final String confirmationUrl, final String applicationName)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/PropertyAccessEvent.adoc b/antora/components/system/modules/generated/pages/index/PropertyAccessEvent.adoc
index ea4c65d..486bc75 100644
--- a/antora/components/system/modules/generated/pages/index/PropertyAccessEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/PropertyAccessEvent.adoc
@@ -5,3 +5,14 @@
 
 Analogous to xref:system:generated:index/PropertyModifyEvent.adoc[PropertyModifyEvent] , however the _#getReason()_ will always be `null` . (If access is not allowed then a xref:system:generated:index/PropertyVisibilityEvent.adoc[PropertyVisibilityEvent] would have been fired).
 
+.Java Sources
+[source,java]
+----
+class PropertyAccessEvent {
+
+  PropertyAccessEvent(final Object source, final Identifier propertyIdentifier, final Object value)
+
+  Object getValue()
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/PropertyModifyEvent.adoc b/antora/components/system/modules/generated/pages/index/PropertyModifyEvent.adoc
index 0393e99..bf51755 100644
--- a/antora/components/system/modules/generated/pages/index/PropertyModifyEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/PropertyModifyEvent.adoc
@@ -5,7 +5,18 @@
 
 If _#getReason()_ is not `null` then provides the reason why the value is invalid; otherwise the value is valid.
 
-* `[teal]#*getProposed*#()` : `Object`
+.Java Sources
+[source,java]
+----
+class PropertyModifyEvent {
+
+  PropertyModifyEvent(final Object source, final Identifier propertyIdentifier, final Object proposed)
+
+  Object getProposed() // <.>
+}
+----
+
+<.> `[teal]#*getProposed*#()` : `Object`
 +
 --
 If `null` , then the property was cleared.
diff --git a/antora/components/system/modules/generated/pages/index/PropertyUsabilityEvent.adoc b/antora/components/system/modules/generated/pages/index/PropertyUsabilityEvent.adoc
index 2cfcb6e..b5f2985 100644
--- a/antora/components/system/modules/generated/pages/index/PropertyUsabilityEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/PropertyUsabilityEvent.adoc
@@ -5,3 +5,12 @@
 
 If _#getReason()_ is not `null` then provides the reason why the property is disabled; otherwise property is enabled.
 
+.Java Sources
+[source,java]
+----
+class PropertyUsabilityEvent {
+
+  PropertyUsabilityEvent(final Object source, final Identifier propertyIdentifier)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/PropertyVisibilityEvent.adoc b/antora/components/system/modules/generated/pages/index/PropertyVisibilityEvent.adoc
index 66f5bb9..96bf0de 100644
--- a/antora/components/system/modules/generated/pages/index/PropertyVisibilityEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/PropertyVisibilityEvent.adoc
@@ -5,3 +5,12 @@
 
 If _#getReason()_ is not `null` then provides the reason why the property is invisible; otherwise property is visible.
 
+.Java Sources
+[source,java]
+----
+class PropertyVisibilityEvent {
+
+  PropertyVisibilityEvent(final Object source, final Identifier propertyIdentifier)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/ProposedHolderEvent.adoc b/antora/components/system/modules/generated/pages/index/ProposedHolderEvent.adoc
index 69ddc37..603b1d7 100644
--- a/antora/components/system/modules/generated/pages/index/ProposedHolderEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/ProposedHolderEvent.adoc
@@ -3,3 +3,14 @@
 
  _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ makes it easier to process different events that hold a single proposed argument (such as xref:system:generated:index/CollectionAddToEvent.adoc[CollectionAddToEvent] and xref:system:generated:index/PropertyModifyEvent.adoc[PropertyModifyEvent] ).
 
+.Java Sources
+[source,java]
+----
+interface ProposedHolderEvent {
+
+  Object getProposed()
+
+  String getMemberNaturalName()
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/QueryResultCacheControl.adoc b/antora/components/system/modules/generated/pages/index/QueryResultCacheControl.adoc
index 5595793..b2b1652 100644
--- a/antora/components/system/modules/generated/pages/index/QueryResultCacheControl.adoc
+++ b/antora/components/system/modules/generated/pages/index/QueryResultCacheControl.adoc
@@ -1,4 +1,12 @@
 = QueryResultCacheControl : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface QueryResultCacheControl {
+
+  boolean isIgnoreCache()
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/QueryResultsCache.adoc b/antora/components/system/modules/generated/pages/index/QueryResultsCache.adoc
index 42c58cb..f4234dd 100644
--- a/antora/components/system/modules/generated/pages/index/QueryResultsCache.adoc
+++ b/antora/components/system/modules/generated/pages/index/QueryResultsCache.adoc
@@ -5,7 +5,30 @@ This service (API and implementation) provides a mechanism by which idempotent q
 
 This implementation has no UI and there is only one implementation (this class) in applib, it is annotated with _org.apache.isis.applib.annotation.DomainService_ . This means that it is automatically registered and available for use; no further configuration is required.
 
-* `[teal]#*onTransactionEnded*#()` : `void`
+.Java Sources
+[source,java]
+----
+interface QueryResultsCache {
+
+  T execute(Callable<T> callable, Class<?> callingClass, String methodName, Object... keys)
+
+  void onTransactionEnded() // <.>
+
+  R execute(MethodReferences.Call0<? extends R> action, Class<?> callingClass, String methodName)
+
+  R execute(MethodReferences.Call1<? extends R, A0> action, Class<?> callingClass, String methodName, A0 arg0)
+
+  R execute(MethodReferences.Call2<? extends R, A0, A1> action, Class<?> callingClass, String methodName, A0 arg0, A1 arg1)
+
+  R execute(MethodReferences.Call3<? extends R, A0, A1, A2> action, Class<?> callingClass, String methodName, A0 arg0, A1 arg1, A2 arg2)
+
+  R execute(MethodReferences.Call4<? extends R, A0, A1, A2, A3> action, Class<?> callingClass, String methodName, A0 arg0, A1 arg1, A2 arg2, A3 arg3)
+
+  R execute(MethodReferences.Call5<? extends R, A0, A1, A2, A3, A4> action, Class<?> callingClass, String methodName, A0 arg0, A1 arg1, A2 arg2, A3 arg3, A4 arg4)
+}
+----
+
+<.> `[teal]#*onTransactionEnded*#()` : `void`
 +
 --
 Not API, for framework use only.
diff --git a/antora/components/system/modules/generated/pages/index/RepositoryService.adoc b/antora/components/system/modules/generated/pages/index/RepositoryService.adoc
index 7b4fb3a..7032b9b 100644
--- a/antora/components/system/modules/generated/pages/index/RepositoryService.adoc
+++ b/antora/components/system/modules/generated/pages/index/RepositoryService.adoc
@@ -1,50 +1,100 @@
 = RepositoryService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface RepositoryService {
 
-* `[teal]#*getEntityState*#(Object object)` : `xref:system:generated:index/EntityState.adoc[EntityState]`
+  EntityState getEntityState(Object object) // <.>
+
+  T detachedEntity(T entity) // <.>
+
+  T persist(T domainObject) // <.>
+
+  T persistAndFlush(T domainObject) // <.>
+
+  void remove(Object domainObject) // <.>
+
+  void removeAndFlush(Object domainObject) // <.>
+
+  void removeAll(Class<T> cls) // <.>
+
+  List<T> allInstances(Class<T> ofType) // <.>
+
+  List<T> allInstances(Class<T> ofType, long start, long count) // <.>
+
+  List<T> allMatches(Class<T> ofType, Predicate<? super T> predicate) // <.>
+
+  List<T> allMatches(Class<T> ofType, Predicate<? super T> predicate, long start, long count) // <.>
+
+  List<T> allMatches(Query<T> query) // <.>
+
+  Optional<T> uniqueMatch(Class<T> ofType, Predicate<T> predicate) // <.>
+
+  Optional<T> uniqueMatch(Query<T> query) // <.>
+
+  Optional<T> firstMatch(Class<T> ofType, Predicate<T> predicate) // <.>
+
+  Optional<T> firstMatch(Query<T> query) // <.>
+
+  T refresh(T pojo) // <.>
+
+  T detach(T entity) // <.>
+
+  T detachedEntity(Class<T> ofType) // <.>
+
+  T instantiate(Class<T> ofType) // <.>
+
+  boolean isPersistent(Object domainObject) // <.>
+
+  boolean isDeleted(Object domainObject) // <.>
+}
+----
+
+<.> `[teal]#*getEntityState*#(Object object)` : `xref:system:generated:index/EntityState.adoc[EntityState]`
 +
 --
 Returns the EntityState of given _object_ . Returns _EntityState#NOT_PERSISTABLE_ for _object==null_ .
 --
-* `[teal]#*detachedEntity*#<T>(T entity)` : `T`
+<.> `[teal]#*detachedEntity*#<T>(T entity)` : `T`
 +
 --
 Same as _org.apache.isis.applib.services.factory.FactoryService#detachedEntity(Object)_ ; provided as a convenience because instantiating and _#persist(Object) persisting_ are often done together.
 --
-* `[teal]#*persist*#<T>(T domainObject)` : `T`
+<.> `[teal]#*persist*#<T>(T domainObject)` : `T`
 +
 --
 Persist the specified object (or do nothing if already persistent).
 --
-* `[teal]#*persistAndFlush*#<T>(T domainObject)` : `T`
+<.> `[teal]#*persistAndFlush*#<T>(T domainObject)` : `T`
 +
 --
 Persist the specified object (or do nothing if already persistent) and flushes changes to the database.
 --
-* `[teal]#*remove*#(Object domainObject)` : `void`
+<.> `[teal]#*remove*#(Object domainObject)` : `void`
 +
 --
 Deletes the domain object but only if is attached.
 --
-* `[teal]#*removeAndFlush*#(Object domainObject)` : `void`
+<.> `[teal]#*removeAndFlush*#(Object domainObject)` : `void`
 +
 --
 Deletes the domain object but only if is persistent, and flushes changes to the database.
 --
-* `[teal]#*removeAll*#<T>(Class<T> cls)` : `void`
+<.> `[teal]#*removeAll*#<T>(Class<T> cls)` : `void`
 +
 --
 Removes all instances of the domain object.
 
 Intended primarily for testing purposes.
 --
-* `[teal]#*allInstances*#<T>(Class<T> ofType)` : `List<T>`
+<.> `[teal]#*allInstances*#<T>(Class<T> ofType)` : `List<T>`
 +
 --
 As _#allInstances(Class, long, long)_ , but but returning all instances rather than just those * within the specified range..
 --
-* `[teal]#*allInstances*#<T>(Class<T> ofType, long start, long count)` : `List<T>`
+<.> `[teal]#*allInstances*#<T>(Class<T> ofType, long start, long count)` : `List<T>`
 +
 --
 Returns all the instances of the specified type (including subtypes). If the optional range parameters are used, the dataset returned starts from (0 based) index, and consists of only up to count items.
@@ -53,12 +103,12 @@ If there are no instances the list will be empty. This method creates a new _Lis
 
 This method should only be called where the number of instances is known to be relatively low, unless the optional range parameters (2 longs) are specified. The range parameters are "start" and "count".
 --
-* `[teal]#*allMatches*#<T>(Class<T> ofType, Predicate<? super T> predicate)` : `List<T>`
+<.> `[teal]#*allMatches*#<T>(Class<T> ofType, Predicate<? super T> predicate)` : `List<T>`
 +
 --
 As _#allMatches(Class, Predicate, long, long)_ , but returning all instances rather than just those within the specified range.
 --
-* `[teal]#*allMatches*#<T>(Class<T> ofType, Predicate<? super T> predicate, long start, long count)` : `List<T>`
+<.> `[teal]#*allMatches*#<T>(Class<T> ofType, Predicate<? super T> predicate, long start, long count)` : `List<T>`
 +
 --
 Returns all the instances of the specified type (including subtypes) that the predicate object accepts. If the optional range parameters are used, the dataset returned starts from (0 based) index, and consists of only up to count items.
@@ -67,7 +117,7 @@ If there are no instances the list will be empty. This method creates a new _Lis
 
 This method is useful during exploration/prototyping, but - because the filtering is performed client-side - this method is only really suitable for initial development/prototyping, or for classes with very few instances. Use _#allMatches(Query)_ for production code.
 --
-* `[teal]#*allMatches*#<T>(Query<T> query)` : `List<T>`
+<.> `[teal]#*allMatches*#<T>(Query<T> query)` : `List<T>`
 +
 --
 Returns all the instances that match the given _Query_ .
@@ -76,7 +126,7 @@ If there are no instances the list will be empty. This method creates a new _Lis
 
 This method is the recommended way of querying for multiple instances.
 --
-* `[teal]#*uniqueMatch*#<T>(Class<T> ofType, Predicate<T> predicate)` : `Optional<T>`
+<.> `[teal]#*uniqueMatch*#<T>(Class<T> ofType, Predicate<T> predicate)` : `Optional<T>`
 +
 --
 Find the only instance of the specified type (including subtypes) that has the specified title.
@@ -85,7 +135,7 @@ If no instance is found then _Optional#empty()_ will be return, while if there i
 
 This method is useful during exploration/prototyping, but - because the filtering is performed client-side - this method is only really suitable for initial development/prototyping, or for classes with very few instances. Use _#uniqueMatch(Query)_ for production code.
 --
-* `[teal]#*uniqueMatch*#<T>(Query<T> query)` : `Optional<T>`
+<.> `[teal]#*uniqueMatch*#<T>(Query<T> query)` : `Optional<T>`
 +
 --
 Find the only instance that matches the provided query.
@@ -94,7 +144,7 @@ If no instance is found then _Optional#empty()_ will be return, while if there i
 
 This method is the recommended way of querying for (precisely) one instance. See also _#allMatches(Query)_
 --
-* `[teal]#*firstMatch*#<T>(Class<T> ofType, Predicate<T> predicate)` : `Optional<T>`
+<.> `[teal]#*firstMatch*#<T>(Class<T> ofType, Predicate<T> predicate)` : `Optional<T>`
 +
 --
 Find the only instance of the specified type (including subtypes) that has the specified title.
@@ -103,62 +153,70 @@ If no instance is found then _Optional#empty()_ will be return, while if there i
 
 This method is useful during exploration/prototyping, but - because the filtering is performed client-side - this method is only really suitable for initial development/prototyping, or for classes with very few instances. Use _#firstMatch(Query)_ for production code.
 --
-* `[teal]#*firstMatch*#<T>(Query<T> query)` : `Optional<T>`
+<.> `[teal]#*firstMatch*#<T>(Query<T> query)` : `Optional<T>`
 +
 --
 Find the only instance that matches the provided query, if any..
 
 If no instance is found then _Optional#empty()_ will be return, while if there is more that one instances then the first will be returned.
 --
-* `[teal]#*refresh*#<T>(T pojo)` : `T`
+<.> `[teal]#*refresh*#<T>(T pojo)` : `T`
 +
 --
 Reloads the pojo.
 --
-* `[teal]#*detach*#<T>(T entity)` : `T`
+<.> `[teal]#*detach*#<T>(T entity)` : `T`
 +
 --
 Detach the entity from the current persistence session.
 
 This allows the entity to be read from even after the PersistenceSession that obtained it has been closed.
 --
-* `[line-through gray]#*detachedEntity*#<T>(Class<T> ofType)` : `T`
+<.> `[line-through gray]#*detachedEntity*#<T>(Class<T> ofType)` : `T`
 +
 --
-+
+[WARNING]
+====
 [red]#_deprecated:_#
 
 if applicable use _#detachedEntity(Object)_ instead ... "new is the new new", passing in a new-ed up instance is more flexible and also more error prone, eg. it allows the compiler to check validity of the used constructor rather than doing construction reflective at runtime.
+====
 
 Same as _org.apache.isis.applib.services.factory.FactoryService#detachedEntity(Class)_ ; provided as a convenience because instantiating and _#persist(Object) persisting_ are often done together.
 --
-* `[line-through gray]#*instantiate*#<T>(Class<T> ofType)` : `T`
+<.> `[line-through gray]#*instantiate*#<T>(Class<T> ofType)` : `T`
 +
 --
-+
+[WARNING]
+====
 [red]#_deprecated:_#
 
 if applicable use _#detachedEntity(Object)_ instead
+====
 --
-* `[line-through gray]#*isPersistent*#(Object domainObject)` : `boolean`
+<.> `[line-through gray]#*isPersistent*#(Object domainObject)` : `boolean`
 +
 --
-+
+[WARNING]
+====
 [red]#_deprecated:_#
 
 due to ambiguous semantic, use _#getEntityState(Object)_ instead
+====
 
 Determines if the specified object is persistent (that it is stored permanently outside of the virtual machine in the object store).
 
 This method can also returntrueif the object has been _#isDeleted(Object) deleted_ from the object store.
 --
-* `[line-through gray]#*isDeleted*#(Object domainObject)` : `boolean`
+<.> `[line-through gray]#*isDeleted*#(Object domainObject)` : `boolean`
 +
 --
-+
+[WARNING]
+====
 [red]#_deprecated:_#
 
 due to ambiguous semantic, use _#getEntityState(Object)_ instead
+====
 
 Determines if the specified object has been deleted from the object store.
 --
diff --git a/antora/components/system/modules/generated/pages/index/RepresentsInteractionMemberExecution.adoc b/antora/components/system/modules/generated/pages/index/RepresentsInteractionMemberExecution.adoc
index 3a52590..00a6328 100644
--- a/antora/components/system/modules/generated/pages/index/RepresentsInteractionMemberExecution.adoc
+++ b/antora/components/system/modules/generated/pages/index/RepresentsInteractionMemberExecution.adoc
@@ -5,3 +5,12 @@ Extends _HasUniqueId_ , where the _HasUniqueId#getUniqueId()_ is interpreted as
 
 Examples could include SPI services that persist published events and status messages.
 
+.Java Sources
+[source,java]
+----
+interface RepresentsInteractionMemberExecution {
+
+  int getSequence()
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/RoleMemento.adoc b/antora/components/system/modules/generated/pages/index/RoleMemento.adoc
index 48b5ce3..e1e64fe 100644
--- a/antora/components/system/modules/generated/pages/index/RoleMemento.adoc
+++ b/antora/components/system/modules/generated/pages/index/RoleMemento.adoc
@@ -3,12 +3,25 @@
 
 Immutable serializable value held by xref:system:generated:index/UserMemento.adoc[UserMemento] .
 
-* `[teal]#*RoleMemento*#(String name)`
+.Java Sources
+[source,java]
+----
+class RoleMemento {
+
+  RoleMemento(final String name) // <.>
+
+  RoleMemento(final String name, final String description) // <.>
+
+  String title()
+}
+----
+
+<.> `[teal]#*RoleMemento*#(String name)`
 +
 --
 Creates a new role with the specified name. Description is left blank.
 --
-* `[teal]#*RoleMemento*#(String name, String description)`
+<.> `[teal]#*RoleMemento*#(String name, String description)`
 +
 --
 Creates a new role with the specified name and description.
diff --git a/antora/components/system/modules/generated/pages/index/RoutingService.adoc b/antora/components/system/modules/generated/pages/index/RoutingService.adoc
index 4bcc3d1..fd21cc0 100644
--- a/antora/components/system/modules/generated/pages/index/RoutingService.adoc
+++ b/antora/components/system/modules/generated/pages/index/RoutingService.adoc
@@ -3,3 +3,14 @@
 
 Provides the ability to return (and therefore have rendered) an alternative object from an action invocation.
 
+.Java Sources
+[source,java]
+----
+interface RoutingService {
+
+  boolean canRoute(Object original)
+
+  Object route(Object original)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/Scratchpad.adoc b/antora/components/system/modules/generated/pages/index/Scratchpad.adoc
index 5c59100..aceabce 100644
--- a/antora/components/system/modules/generated/pages/index/Scratchpad.adoc
+++ b/antora/components/system/modules/generated/pages/index/Scratchpad.adoc
@@ -5,12 +5,23 @@ This service (API and implementation) provides a mechanism to interchange inform
 
 This implementation has only one implementation (this class) in applib, so it is annotated with _org.apache.isis.applib.annotation.DomainService_ . This means that it is automatically registered and available for use; no further configuration is required.
 
-* `[teal]#*get*#(Object key)` : `Object`
+.Java Sources
+[source,java]
+----
+interface Scratchpad {
+
+  Object get(Object key) // <.>
+
+  void put(Object key, Object value) // <.>
+}
+----
+
+<.> `[teal]#*get*#(Object key)` : `Object`
 +
 --
 Obtain user-data, as set by a previous object being acted upon.
 --
-* `[teal]#*put*#(Object key, Object value)` : `void`
+<.> `[teal]#*put*#(Object key, Object value)` : `void`
 +
 --
 Set user-data, for the use of a subsequent object being acted upon.
diff --git a/antora/components/system/modules/generated/pages/index/ServiceInjector.adoc b/antora/components/system/modules/generated/pages/index/ServiceInjector.adoc
index 62a430e..93fe115 100644
--- a/antora/components/system/modules/generated/pages/index/ServiceInjector.adoc
+++ b/antora/components/system/modules/generated/pages/index/ServiceInjector.adoc
@@ -5,3 +5,14 @@ Resolves injection points using the ServiceRegistry.
 
 Implementation must be thread-safe.
 
+.Java Sources
+[source,java]
+----
+interface ServiceInjector {
+
+  T injectServicesInto(final T domainObject, Consumer<InjectionPoint> onNotResolvable)
+
+  T injectServicesInto(final T domainObject)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/ServiceRegistry.adoc b/antora/components/system/modules/generated/pages/index/ServiceRegistry.adoc
index f1daa88..468be97 100644
--- a/antora/components/system/modules/generated/pages/index/ServiceRegistry.adoc
+++ b/antora/components/system/modules/generated/pages/index/ServiceRegistry.adoc
@@ -1,38 +1,62 @@
 = ServiceRegistry : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface ServiceRegistry {
 
-* `[teal]#*select*#<T>(Class<T> type, Annotation[] qualifiers)` : `Can<T>`
+  Can<T> select(Class<T> type, Annotation[] qualifiers) // <.>
+
+  Can<T> select(final Class<T> type) // <.>
+
+  Stream<_ManagedBeanAdapter> streamRegisteredBeansOfType(Class<?> requiredType) // <.>
+
+  Stream<_ManagedBeanAdapter> streamRegisteredBeans() // <.>
+
+  Optional<_ManagedBeanAdapter> lookupRegisteredBeanById(String id) // <.>
+
+  _ManagedBeanAdapter lookupRegisteredBeanByIdElseFail(String id) // <.>
+
+  Optional<?> lookupBeanById(final String id)
+
+  Optional<T> lookupService(final Class<T> serviceClass) // <.>
+
+  T lookupServiceElseFail(final Class<T> serviceClass)
+}
+----
+
+<.> `[teal]#*select*#<T>(Class<T> type, Annotation[] qualifiers)` : `Can<T>`
 +
 --
 Obtains a _Can_ container containing any matching instances for the given required type and additional required qualifiers.
 --
-* `[teal]#*select*#<T>(Class<T> type)` : `Can<T>`
+<.> `[teal]#*select*#<T>(Class<T> type)` : `Can<T>`
 +
 --
 Obtains a _Can_ container containing any matching instances for the given required type.
 --
-* `[teal]#*streamRegisteredBeansOfType*#(Class<?> requiredType)` : `Stream<_ManagedBeanAdapter>`
+<.> `[teal]#*streamRegisteredBeansOfType*#(Class<?> requiredType)` : `Stream<_ManagedBeanAdapter>`
 +
 --
 Streams all registered bean adapters implementing the requested type.
 --
-* `[teal]#*streamRegisteredBeans*#()` : `Stream<_ManagedBeanAdapter>`
+<.> `[teal]#*streamRegisteredBeans*#()` : `Stream<_ManagedBeanAdapter>`
 +
 --
 Returns all bean adapters that have been registered.
 --
-* `[teal]#*lookupRegisteredBeanById*#(String id)` : `Optional<_ManagedBeanAdapter>`
+<.> `[teal]#*lookupRegisteredBeanById*#(String id)` : `Optional<_ManagedBeanAdapter>`
 +
 --
 Returns a registered bean of given _name_ .
 --
-* `[teal]#*lookupRegisteredBeanByIdElseFail*#(String id)` : `_ManagedBeanAdapter`
+<.> `[teal]#*lookupRegisteredBeanByIdElseFail*#(String id)` : `_ManagedBeanAdapter`
 +
 --
 Returns a registered bean of given _name_ , or throws when no such bean.
 --
-* `[teal]#*lookupService*#<T>(Class<T> serviceClass)` : `Optional<T>`
+<.> `[teal]#*lookupService*#<T>(Class<T> serviceClass)` : `Optional<T>`
 +
 --
 Returns a domain service implementing the requested type.
diff --git a/antora/components/system/modules/generated/pages/index/SessionLoggingService.adoc b/antora/components/system/modules/generated/pages/index/SessionLoggingService.adoc
index 47bfe1b..270d5ab 100644
--- a/antora/components/system/modules/generated/pages/index/SessionLoggingService.adoc
+++ b/antora/components/system/modules/generated/pages/index/SessionLoggingService.adoc
@@ -3,3 +3,12 @@
 
 Similar to the _org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber_ , this defines an API to track the status of the current sessions ("users logged on") on the system.
 
+.Java Sources
+[source,java]
+----
+interface SessionLoggingService {
+
+  void log(Type type, String username, Date date, CausedBy causedBy, String sessionId)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/SessionLoggingServiceLogging.adoc b/antora/components/system/modules/generated/pages/index/SessionLoggingServiceLogging.adoc
index 12f606c..70a28c5 100644
--- a/antora/components/system/modules/generated/pages/index/SessionLoggingServiceLogging.adoc
+++ b/antora/components/system/modules/generated/pages/index/SessionLoggingServiceLogging.adoc
@@ -1,4 +1,12 @@
 = SessionLoggingServiceLogging : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+class SessionLoggingServiceLogging {
+
+  void log(final Type type, final String username, final Date date, final CausedBy causedBy, final String sessionId)
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/SudoService.adoc b/antora/components/system/modules/generated/pages/index/SudoService.adoc
index f81944d..eb02d01 100644
--- a/antora/components/system/modules/generated/pages/index/SudoService.adoc
+++ b/antora/components/system/modules/generated/pages/index/SudoService.adoc
@@ -3,7 +3,23 @@
 
 Intended only for use by fixture scripts and integration tests, allows a block of code to execute while the xref:system:generated:index/UserService.adoc[UserService] 's _UserService#currentUser() getUser()_ method returns the specified user/role as the effective user.
 
-* `xref:system:generated:index/RoleMemento.adoc[RoleMemento] [teal]#*/**
+.Java Sources
+[source,java]
+----
+interface SudoService {
+
+  /**
+ * If included in the list of roles, then will disable security checks (can view and use all object members).
+ */
+RoleMemento ACCESS_ALL_ROLE = new RoleMemento(SudoService.class.getName() + "#accessAll", "Sudo, can view and use all object members."); // <.>
+
+  T call(UnaryOperator<ExecutionContext> sudoMapper, Callable<T> supplier) // <.>
+
+  void run(final UnaryOperator<ExecutionContext> sudoMapper, final ThrowingRunnable runnable) // <.>
+}
+----
+
+<.> `xref:system:generated:index/RoleMemento.adoc[RoleMemento] [teal]#*/**
  * If included in the list of roles, then will disable security checks (can view and use all object members).
  */
 RoleMemento ACCESS_ALL_ROLE = new RoleMemento(SudoService.class.getName() + "#accessAll", "Sudo, can view and use all object members.");*#`
@@ -11,12 +27,12 @@ RoleMemento ACCESS_ALL_ROLE = new RoleMemento(SudoService.class.getName() + "#ac
 --
 If included in the list of roles, then will disable security checks (can view and use all object members).
 --
-* `[teal]#*call*#<T>(UnaryOperator<xref:system:generated:index/ExecutionContext.adoc[ExecutionContext]> sudoMapper, Callable<T> supplier)` : `T`
+<.> `[teal]#*call*#<T>(UnaryOperator<xref:system:generated:index/ExecutionContext.adoc[ExecutionContext]> sudoMapper, Callable<T> supplier)` : `T`
 +
 --
 Executes the supplied block, with the xref:system:generated:index/UserService.adoc[UserService] returning the specified user.
 --
-* `[teal]#*run*#(UnaryOperator<xref:system:generated:index/ExecutionContext.adoc[ExecutionContext]> sudoMapper, ThrowingRunnable runnable)` : `void`
+<.> `[teal]#*run*#(UnaryOperator<xref:system:generated:index/ExecutionContext.adoc[ExecutionContext]> sudoMapper, ThrowingRunnable runnable)` : `void`
 +
 --
 Executes the supplied block, with the xref:system:generated:index/UserService.adoc[UserService] returning the specified user.
diff --git a/antora/components/system/modules/generated/pages/index/SwaggerService.adoc b/antora/components/system/modules/generated/pages/index/SwaggerService.adoc
index 9c274a4..8f8f597 100644
--- a/antora/components/system/modules/generated/pages/index/SwaggerService.adoc
+++ b/antora/components/system/modules/generated/pages/index/SwaggerService.adoc
@@ -1,4 +1,12 @@
 = SwaggerService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface SwaggerService {
+
+  String generateSwaggerSpec(final Visibility visibility, final Format format)
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/SyncControl.adoc b/antora/components/system/modules/generated/pages/index/SyncControl.adoc
index 2b2bece..151fdc8 100644
--- a/antora/components/system/modules/generated/pages/index/SyncControl.adoc
+++ b/antora/components/system/modules/generated/pages/index/SyncControl.adoc
@@ -1,8 +1,22 @@
 = SyncControl : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+class SyncControl {
 
-* `[teal]#*getExecutionModes*#()` : `ImmutableEnumSet<xref:system:generated:index/ExecutionMode.adoc[ExecutionMode]>`
+  SyncControl control()
+
+  SyncControl withExecute()
+
+  SyncControl withNoExecute()
+
+  ImmutableEnumSet<ExecutionMode> getExecutionModes() // <.>
+}
+----
+
+<.> `[teal]#*getExecutionModes*#()` : `ImmutableEnumSet<xref:system:generated:index/ExecutionMode.adoc[ExecutionMode]>`
 +
 --
 Not API.
diff --git a/antora/components/system/modules/generated/pages/index/TableColumnOrderService.adoc b/antora/components/system/modules/generated/pages/index/TableColumnOrderService.adoc
index 8ae40aa..155c5a0 100644
--- a/antora/components/system/modules/generated/pages/index/TableColumnOrderService.adoc
+++ b/antora/components/system/modules/generated/pages/index/TableColumnOrderService.adoc
@@ -1,4 +1,14 @@
 = TableColumnOrderService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface TableColumnOrderService {
+
+  List<String> orderParented(final Object parent, final String collectionId, final Class<?> collectionType, final List<String> propertyIds)
+
+  List<String> orderStandalone(final Class<?> collectionType, final List<String> propertyIds)
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/Ticket.adoc b/antora/components/system/modules/generated/pages/index/Ticket.adoc
index a9dd388..1df6325 100644
--- a/antora/components/system/modules/generated/pages/index/Ticket.adoc
+++ b/antora/components/system/modules/generated/pages/index/Ticket.adoc
@@ -5,46 +5,57 @@ Response from the xref:system:generated:index/ErrorReportingService.adoc[ErrorRe
 
 Implementation notes:
 
-+
---
-a class has been used here so that additional fields might be added in the future.
---
-+
---
-the class is _Serializable_
---
+* a class has been used here so that additional fields might be added in the future.
+* the class is _Serializable_
 
 so that it can be stored by the Wicket viewer as a Wicket model.
 
-* `[teal]#*getReference*#()` : `String`
+.Java Sources
+[source,java]
+----
+interface Ticket {
+
+  String getReference() // <.>
+
+  String getUserMessage() // <.>
+
+  String getDetails() // <.>
+
+  StackTracePolicy getStackTracePolicy() // <.>
+
+  String getMarkup() // <.>
+}
+----
+
+<.> `[teal]#*getReference*#()` : `String`
 +
 --
 A unique identifier that the end-user can use to track any follow-up from this error.
 
 For example, an implementation might automatically log an issue in a bug tracking system such as JIRA, in which case the _#getReference() reference_ would be the JIRA issue number `XXX-1234` .
 --
-* `[teal]#*getUserMessage*#()` : `String`
+<.> `[teal]#*getUserMessage*#()` : `String`
 +
 --
 Message to display to the user.
 
 Typically this message should be short, one line long.
 --
-* `[teal]#*getDetails*#()` : `String`
+<.> `[teal]#*getDetails*#()` : `String`
 +
 --
 Optional additional details to show to the end-user.
 
 For example, these might include text on how to recover from the error, or workarounds, or just further details on contacting the help desk if the issue is severe and requires immediate attention.
 --
-* `[teal]#*getStackTracePolicy*#()` : `StackTracePolicy`
+<.> `[teal]#*getStackTracePolicy*#()` : `StackTracePolicy`
 +
 --
 Whether the stack trace for the exception should be displayed or be hidden.
 
 The default is to hide it on the basis that the reporting service will have reported the stack trace to the support team, meaning there's no need to expose this info to the end-user.
 --
-* `[teal]#*getMarkup*#()` : `String`
+<.> `[teal]#*getMarkup*#()` : `String`
 +
 --
 Returns a Html representation of this ticket.
diff --git a/antora/components/system/modules/generated/pages/index/TitleService.adoc b/antora/components/system/modules/generated/pages/index/TitleService.adoc
index 8457dda..b6dfa85 100644
--- a/antora/components/system/modules/generated/pages/index/TitleService.adoc
+++ b/antora/components/system/modules/generated/pages/index/TitleService.adoc
@@ -1,13 +1,23 @@
 = TitleService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface TitleService {
 
-* `[teal]#*titleOf*#(Object domainObject)` : `String`
+  String titleOf(Object domainObject) // <.>
+
+  String iconNameOf(Object domainObject) // <.>
+}
+----
+
+<.> `[teal]#*titleOf*#(Object domainObject)` : `String`
 +
 --
 Return the title of the object, as rendered in the UI by the Isis viewers.
 --
-* `[teal]#*iconNameOf*#(Object domainObject)` : `String`
+<.> `[teal]#*iconNameOf*#(Object domainObject)` : `String`
 +
 --
 Return the icon name of the object, as rendered in the UI by the Isis viewers.
diff --git a/antora/components/system/modules/generated/pages/index/Transaction.adoc b/antora/components/system/modules/generated/pages/index/Transaction.adoc
index e5b2833..1c54f2f 100644
--- a/antora/components/system/modules/generated/pages/index/Transaction.adoc
+++ b/antora/components/system/modules/generated/pages/index/Transaction.adoc
@@ -3,7 +3,20 @@
 
 Representation of the current transaction, which conceptually wraps the underlying transaction context's transaction.
 
-* `[teal]#*flush*#()` : `void`
+.Java Sources
+[source,java]
+----
+interface Transaction {
+
+  TransactionId getId()
+
+  void flush() // <.>
+
+  TransactionState getTransactionState()
+}
+----
+
+<.> `[teal]#*flush*#()` : `void`
 +
 --
 Flush all changes to the object store.
diff --git a/antora/components/system/modules/generated/pages/index/TransactionId.adoc b/antora/components/system/modules/generated/pages/index/TransactionId.adoc
index bd4ad12..2917e8c 100644
--- a/antora/components/system/modules/generated/pages/index/TransactionId.adoc
+++ b/antora/components/system/modules/generated/pages/index/TransactionId.adoc
@@ -1,4 +1,12 @@
 = TransactionId : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+class TransactionId {
+
+  TransactionId empty()
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/TransactionScopeListener.adoc b/antora/components/system/modules/generated/pages/index/TransactionScopeListener.adoc
index 3606705..2e13f48 100644
--- a/antora/components/system/modules/generated/pages/index/TransactionScopeListener.adoc
+++ b/antora/components/system/modules/generated/pages/index/TransactionScopeListener.adoc
@@ -3,7 +3,18 @@
 
 Domain services that need to be aware of transaction boundaries can implement this interface.
 
-* `[teal]#*onPreCommit*#(PreCommitPhase preCommitPhase)` : `void`
+.Java Sources
+[source,java]
+----
+interface TransactionScopeListener {
+
+  void onTransactionStarted()
+
+  void onPreCommit(PreCommitPhase preCommitPhase) // <.>
+}
+----
+
+<.> `[teal]#*onPreCommit*#(PreCommitPhase preCommitPhase)` : `void`
 +
 --
 triggered during the pre-commit phase in a transaction
diff --git a/antora/components/system/modules/generated/pages/index/TransactionService.adoc b/antora/components/system/modules/generated/pages/index/TransactionService.adoc
index e51cb2d..d7ecebe 100644
--- a/antora/components/system/modules/generated/pages/index/TransactionService.adoc
+++ b/antora/components/system/modules/generated/pages/index/TransactionService.adoc
@@ -1,35 +1,49 @@
 = TransactionService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface TransactionService {
 
-* `[teal]#*currentTransactionId*#()` : `xref:system:generated:index/TransactionId.adoc[TransactionId]`
+  TransactionId currentTransactionId() // <.>
+
+  TransactionState currentTransactionState() // <.>
+
+  void flushTransaction() // <.>
+
+  void nextTransaction() // <.>
+
+  void executeWithinTransaction(Runnable task) // <.>
+
+  T executeWithinTransaction(Supplier<T> task) // <.>
+}
+----
+
+<.> `[teal]#*currentTransactionId*#()` : `xref:system:generated:index/TransactionId.adoc[TransactionId]`
 +
 --
 When called within an existing transactional boundary returns the unique identifier to the transaction, _null_ otherwise.
 --
-* `[teal]#*currentTransactionState*#()` : `xref:system:generated:index/TransactionState.adoc[TransactionState]`
-+
---
-
---
-* `[teal]#*flushTransaction*#()` : `void`
+<.> `[teal]#*currentTransactionState*#()` : `xref:system:generated:index/TransactionState.adoc[TransactionState]`
+<.> `[teal]#*flushTransaction*#()` : `void`
 +
 --
 Flush all changes to the object store.
 
 Occasionally useful to ensure that newly persisted domain objects are flushed to the database prior to a subsequent repository query.
 --
-* `[teal]#*nextTransaction*#()` : `void`
+<.> `[teal]#*nextTransaction*#()` : `void`
 +
 --
 Commits the current transaction (if there is one), and begins a new one. If there is no current transaction, then is a no-op.
 --
-* `[teal]#*executeWithinTransaction*#(Runnable task)` : `void`
+<.> `[teal]#*executeWithinTransaction*#(Runnable task)` : `void`
 +
 --
 Runs given _task_ within an existing transactional boundary, or in the absence of such a boundary creates a new one.
 --
-* `[teal]#*executeWithinTransaction*#<T>(Supplier<T> task)` : `T`
+<.> `[teal]#*executeWithinTransaction*#<T>(Supplier<T> task)` : `T`
 +
 --
 Runs given _task_ within an existing transactional boundary, or in the absence of such a boundary creates a new one.
diff --git a/antora/components/system/modules/generated/pages/index/TransactionState.adoc b/antora/components/system/modules/generated/pages/index/TransactionState.adoc
index bb5221d..aec1eb4 100644
--- a/antora/components/system/modules/generated/pages/index/TransactionState.adoc
+++ b/antora/components/system/modules/generated/pages/index/TransactionState.adoc
@@ -1,20 +1,77 @@
 = TransactionState : _enum_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+enum TransactionState {
 
-* `[teal]#*_NONE_*#`
+  /**
+ * No transaction exists.
+ */
+NONE // <.>
+
+  /**
+ * Started, still in progress.
+ * <p/>
+ * <p/>
+ * May flush, commit or abort.
+ */
+IN_PROGRESS // <.>
+
+  /**
+ * Started, but has hit an exception.
+ * <p/>
+ * <p/>
+ * May not flush or commit (will throw an {@link IllegalStateException}),
+ * can only abort.
+ * <p/>
+ * <p/>
+ * Similar to <tt>setRollbackOnly</tt> in EJBs.
+ */
+MUST_ABORT // <.>
+
+  /**
+ * Completed, having successfully committed.
+ * <p/>
+ * <p/>
+ * May not flush or abort or commit (will throw {@link IllegalStateException}).
+ */
+COMMITTED // <.>
+
+  /**
+ * Completed, having aborted.
+ * <p/>
+ * <p/>
+ * May not flush, commit or abort (will throw {@link IllegalStateException}).
+ */
+ABORTED // <.>
+
+  boolean canFlush() // <.>
+
+  boolean canCommit() // <.>
+
+  boolean canAbort() // <.>
+
+  boolean isComplete() // <.>
+
+  boolean mustAbort()
+}
+----
+
+<.> `[teal]#*_NONE_*#`
 +
 --
 No transaction exists.
 --
-* `[teal]#*_IN_PROGRESS_*#`
+<.> `[teal]#*_IN_PROGRESS_*#`
 +
 --
 Started, still in progress.
 
 May flush, commit or abort.
 --
-* `[teal]#*_MUST_ABORT_*#`
+<.> `[teal]#*_MUST_ABORT_*#`
 +
 --
 Started, but has hit an exception.
@@ -23,36 +80,36 @@ May not flush or commit (will throw an _IllegalStateException_ ), can only abort
 
 Similar to `setRollbackOnly` in EJBs.
 --
-* `[teal]#*_COMMITTED_*#`
+<.> `[teal]#*_COMMITTED_*#`
 +
 --
 Completed, having successfully committed.
 
 May not flush or abort or commit (will throw _IllegalStateException_ ).
 --
-* `[teal]#*_ABORTED_*#`
+<.> `[teal]#*_ABORTED_*#`
 +
 --
 Completed, having aborted.
 
 May not flush, commit or abort (will throw _IllegalStateException_ ).
 --
-* `[teal]#*canFlush*#()` : `boolean`
+<.> `[teal]#*canFlush*#()` : `boolean`
 +
 --
 Whether it is valid to flush the transaction.
 --
-* `[teal]#*canCommit*#()` : `boolean`
+<.> `[teal]#*canCommit*#()` : `boolean`
 +
 --
 Whether it is valid to commit the transaction.
 --
-* `[teal]#*canAbort*#()` : `boolean`
+<.> `[teal]#*canAbort*#()` : `boolean`
 +
 --
 Whether it is valid to mark as aborted this transaction}.
 --
-* `[teal]#*isComplete*#()` : `boolean`
+<.> `[teal]#*isComplete*#()` : `boolean`
 +
 --
 Whether the transaction is complete (and so a new one can be started).
diff --git a/antora/components/system/modules/generated/pages/index/TranslatableException.adoc b/antora/components/system/modules/generated/pages/index/TranslatableException.adoc
index 683a333..52f2922 100644
--- a/antora/components/system/modules/generated/pages/index/TranslatableException.adoc
+++ b/antora/components/system/modules/generated/pages/index/TranslatableException.adoc
@@ -5,14 +5,25 @@ Exceptions that provide translations should implement this interface.
 
 The _org.apache.isis.applib.services.exceprecog.ExceptionRecognizer_ will automatically detect and use the translation. In addition, the integration testing support provides a rule (ExceptionRecognizerTranslations) that will exercise any thrown exceptions, ensuring tha the message is captured in thetranslations.pofile so that it can be translated.
 
-* `[teal]#*getTranslatableMessage*#()` : `xref:system:generated:index/TranslatableString.adoc[TranslatableString]`
+.Java Sources
+[source,java]
+----
+interface TranslatableException {
+
+  TranslatableString getTranslatableMessage() // <.>
+
+  String getTranslationContext() // <.>
+}
+----
+
+<.> `[teal]#*getTranslatableMessage*#()` : `xref:system:generated:index/TranslatableString.adoc[TranslatableString]`
 +
 --
 In the spirit of _Exception#getLocalizedMessage()_ , but using _org.apache.isis.applib.services.i18n.TranslatableString_ instead.
 
 If returnsnull, then _Exception#getMessage()_ will be used as a fallback. This design allows the Isis-provided _org.apache.isis.applib.RecoverableException_ and _org.apache.isis.applib.NonRecoverableException_ to provide constructors that accept a _org.apache.isis.applib.services.i18n.TranslatableString_ , but can be left as null for any existing code.
 --
-* `[teal]#*getTranslationContext*#()` : `String`
+<.> `[teal]#*getTranslationContext*#()` : `String`
 +
 --
 The context to use when translating the _#getTranslatableMessage() translatable message_ , as ultimately passed through to _org.apache.isis.applib.services.i18n.TranslationService#translate(String, String)_ .
diff --git a/antora/components/system/modules/generated/pages/index/TranslatableString.adoc b/antora/components/system/modules/generated/pages/index/TranslatableString.adoc
index 7e41e15..7eba837 100644
--- a/antora/components/system/modules/generated/pages/index/TranslatableString.adoc
+++ b/antora/components/system/modules/generated/pages/index/TranslatableString.adoc
@@ -1,38 +1,70 @@
 = TranslatableString : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+class TranslatableString {
 
-* `[teal]#*_tr_*#(String pattern, Object... paramArgs)` : `xref:system:generated:index/TranslatableString.adoc[TranslatableString]`
+  TranslatableString tr(final String pattern, final Object... paramArgs) // <.>
+
+  TranslatableString trn(final String singularPattern, final String pluralPattern, final int number, final Object... paramArgs) // <.>
+
+  String getSingularText() // <.>
+
+  String getPluralText() // <.>
+
+  boolean isPluralForm()
+
+  Map<String, Object> getArgumentsByParameterName() // <.>
+
+  String translate(final TranslationService translationService, final String context) // <.>
+
+  String getPattern() // <.>
+
+  String translated(final String translatedText)
+
+  String format(String format, Map<String, Object> values)
+
+  boolean equals(final Object o)
+
+  int hashCode()
+
+  String toString()
+}
+----
+
+<.> `[teal]#*_tr_*#(String pattern, Object... paramArgs)` : `xref:system:generated:index/TranslatableString.adoc[TranslatableString]`
 +
 --
 A translatable string with a single pattern for both singular and plural forms.
 --
-* `[teal]#*_trn_*#(String singularPattern, String pluralPattern, int number, Object... paramArgs)` : `xref:system:generated:index/TranslatableString.adoc[TranslatableString]`
+<.> `[teal]#*_trn_*#(String singularPattern, String pluralPattern, int number, Object... paramArgs)` : `xref:system:generated:index/TranslatableString.adoc[TranslatableString]`
 +
 --
 A translatable string with different patterns for singular and plural forms, selected automatically by the number
 --
-* `[teal]#*getSingularText*#()` : `String`
+<.> `[teal]#*getSingularText*#()` : `String`
 +
 --
 The text as provided in (either of the _#tr(String, Object...) factory_ _#trn(String, String, int, Object...) method_ s, with placeholders rather than substituted arguments; if _#isPluralForm()_ istruethen used only for the singular form.
 --
-* `[teal]#*getPluralText*#()` : `String`
+<.> `[teal]#*getPluralText*#()` : `String`
 +
 --
 The plural text as provided in the _#trn(String, String, int, Object...) factory method_ , with placeholders rather than substituted arguments; but will benullif _#isPluralForm()_ isfalse.
 --
-* `[teal]#*getArgumentsByParameterName*#()` : `Map<String, Object>`
+<.> `[teal]#*getArgumentsByParameterName*#()` : `Map<String, Object>`
 +
 --
 The arguments; excluded from _#equals(Object)_ comparison.
 --
-* `[teal]#*translate*#(xref:system:generated:index/TranslationService.adoc[TranslationService] translationService, String context)` : `String`
+<.> `[teal]#*translate*#(xref:system:generated:index/TranslationService.adoc[TranslationService] translationService, String context)` : `String`
 +
 --
 Translates this string using the provided _org.apache.isis.applib.services.i18n.TranslationService_ , selecting either the single or plural form as per _#getPattern()_ .
 --
-* `[teal]#*getPattern*#()` : `String`
+<.> `[teal]#*getPattern*#()` : `String`
 +
 --
 The text to be translated; depends on whether _#isPluralForm()_ and whether to be translated.
diff --git a/antora/components/system/modules/generated/pages/index/TranslationService.adoc b/antora/components/system/modules/generated/pages/index/TranslationService.adoc
index 7c8c497..8ee9c09 100644
--- a/antora/components/system/modules/generated/pages/index/TranslationService.adoc
+++ b/antora/components/system/modules/generated/pages/index/TranslationService.adoc
@@ -1,22 +1,34 @@
 = TranslationService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface TranslationService {
 
-* `[teal]#*translate*#(String context, String text)` : `String`
+  String translate(final String context, final String text) // <.>
+
+  String translate(final String context, final String singularText, final String pluralText, int num) // <.>
+
+  Mode getMode() // <.>
+}
+----
+
+<.> `[teal]#*translate*#(String context, String text)` : `String`
 +
 --
 Return a translation of the text, in the locale of the "current user".
 
 The mechanism to determine the locale is implementation-specific.
 --
-* `[teal]#*translate*#(String context, String singularText, String pluralText, int num)` : `String`
+<.> `[teal]#*translate*#(String context, String singularText, String pluralText, int num)` : `String`
 +
 --
 Return a translation of either the singular or the plural text, dependent on the `num` parameter, in the locale of the "current user".
 
 The mechanism to determine the locale is implementation-specific.
 --
-* `[teal]#*getMode*#()` : `Mode`
+<.> `[teal]#*getMode*#()` : `Mode`
 +
 --
 Whether this implementation is operating in read or in write mode.
diff --git a/antora/components/system/modules/generated/pages/index/TranslationsResolver.adoc b/antora/components/system/modules/generated/pages/index/TranslationsResolver.adoc
index bfec2b7..b0009fe 100644
--- a/antora/components/system/modules/generated/pages/index/TranslationsResolver.adoc
+++ b/antora/components/system/modules/generated/pages/index/TranslationsResolver.adoc
@@ -1,4 +1,12 @@
 = TranslationsResolver : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface TranslationsResolver {
+
+  List<String> readLines(final String file)
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/UrlEncodingService.adoc b/antora/components/system/modules/generated/pages/index/UrlEncodingService.adoc
index ed0170b..a0b357e 100644
--- a/antora/components/system/modules/generated/pages/index/UrlEncodingService.adoc
+++ b/antora/components/system/modules/generated/pages/index/UrlEncodingService.adoc
@@ -1,4 +1,18 @@
 = UrlEncodingService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface UrlEncodingService {
+
+  String encode(final byte[] bytes)
+
+  byte[] decode(String str)
+
+  String encodeString(final String str)
+
+  String decodeToString(final String str)
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/UsabilityEvent.adoc b/antora/components/system/modules/generated/pages/index/UsabilityEvent.adoc
index 04f5f68..7563c7c 100644
--- a/antora/components/system/modules/generated/pages/index/UsabilityEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/UsabilityEvent.adoc
@@ -5,3 +5,12 @@
 
 If _#getReason()_ is `null` , then is usable; otherwise is disabled.
 
+.Java Sources
+[source,java]
+----
+class UsabilityEvent {
+
+  UsabilityEvent(final Object source, final Identifier identifier)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/UserDataKeys.adoc b/antora/components/system/modules/generated/pages/index/UserDataKeys.adoc
index b6c4f3f..7f4509f 100644
--- a/antora/components/system/modules/generated/pages/index/UserDataKeys.adoc
+++ b/antora/components/system/modules/generated/pages/index/UserDataKeys.adoc
@@ -3,3 +3,14 @@
 
 Keys used in _CommandDto#getUserData()_ to marshall the command's results
 
+.Java Sources
+[source,java]
+----
+class UserDataKeys {
+
+  public static String RESULT = UserDataKeys.class.getName() + "#" + "RESULT";
+
+  public static String EXCEPTION = UserDataKeys.class.getName() + "#" + "EXCEPTION";
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/UserDetails.adoc b/antora/components/system/modules/generated/pages/index/UserDetails.adoc
index f627312..f784c7e 100644
--- a/antora/components/system/modules/generated/pages/index/UserDetails.adoc
+++ b/antora/components/system/modules/generated/pages/index/UserDetails.adoc
@@ -3,3 +3,10 @@
 
 A model object for the signup page
 
+.Java Sources
+[source,java]
+----
+class UserDetails {
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/UserMemento.adoc b/antora/components/system/modules/generated/pages/index/UserMemento.adoc
index 8535626..80fdc87 100644
--- a/antora/components/system/modules/generated/pages/index/UserMemento.adoc
+++ b/antora/components/system/modules/generated/pages/index/UserMemento.adoc
@@ -3,39 +3,75 @@
 
 Immutable serializable value holding details about a user and its roles.
 
-* `[teal]#*UserMemento*#(String name, Stream<xref:system:generated:index/RoleMemento.adoc[RoleMemento]> roles)`
+.Java Sources
+[source,java]
+----
+class UserMemento {
+
+  UserMemento(final String name, final Stream<RoleMemento> roles) // <.>
+
+  UserMemento system() // <.>
+
+  UserMemento ofName(final String name) // <.>
+
+  UserMemento ofNameAndRoles(final String name, final RoleMemento... roles) // <.>
+
+  UserMemento ofNameAndRoleNames(final String name, final String... roleNames) // <.>
+
+  UserMemento ofNameAndRoleNames(final String name, final Stream<String> roleNames) // <.>
+
+  String title()
+
+  List<RoleMemento> getRoles()
+
+  boolean isCurrentUser(final String userName) // <.>
+
+  Stream<String> streamRoleNames()
+
+  boolean hasRoleName(final String roleName)
+
+  String toString()
+
+  boolean equals(Object obj)
+
+  int hashCode()
+}
+----
+
+<.> `[teal]#*UserMemento*#(String name, Stream<xref:system:generated:index/RoleMemento.adoc[RoleMemento]> roles)`
 +
 --
 Creates a new user with the specified name and assigned roles.
 --
-* `[teal]#*_system_*#()` : `xref:system:generated:index/UserMemento.adoc[UserMemento]`
+<.> `[teal]#*_system_*#()` : `xref:system:generated:index/UserMemento.adoc[UserMemento]`
 +
 --
 The framework's internal user with unrestricted privileges.
 --
-* `[teal]#*_ofName_*#(String name)` : `xref:system:generated:index/UserMemento.adoc[UserMemento]`
+<.> `[teal]#*_ofName_*#(String name)` : `xref:system:generated:index/UserMemento.adoc[UserMemento]`
 +
 --
 Creates a new user with the specified name and no roles.
 --
-* `[teal]#*_ofNameAndRoles_*#(String name, xref:system:generated:index/RoleMemento.adoc[RoleMemento]... roles)` : `xref:system:generated:index/UserMemento.adoc[UserMemento]`
+<.> `[teal]#*_ofNameAndRoles_*#(String name, xref:system:generated:index/RoleMemento.adoc[RoleMemento]... roles)` : `xref:system:generated:index/UserMemento.adoc[UserMemento]`
 +
 --
 Creates a new user with the specified name and assigned roles.
 --
-* `[teal]#*_ofNameAndRoleNames_*#(String name, String... roleNames)` : `xref:system:generated:index/UserMemento.adoc[UserMemento]`
+<.> `[teal]#*_ofNameAndRoleNames_*#(String name, String... roleNames)` : `xref:system:generated:index/UserMemento.adoc[UserMemento]`
 +
 --
 Creates a new user with the specified name and assigned role names.
 --
-* `[teal]#*_ofNameAndRoleNames_*#(String name, Stream<String> roleNames)` : `xref:system:generated:index/UserMemento.adoc[UserMemento]`
+<.> `[teal]#*_ofNameAndRoleNames_*#(String name, Stream<String> roleNames)` : `xref:system:generated:index/UserMemento.adoc[UserMemento]`
 +
 --
 Creates a new user with the specified name and assigned role names.
 --
-* `[teal]#*isCurrentUser*#(String userName)` : `boolean`
+<.> `[teal]#*isCurrentUser*#(String userName)` : `boolean`
 +
 --
 Determine if the specified name is this user.
+
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/UserProfileService.adoc b/antora/components/system/modules/generated/pages/index/UserProfileService.adoc
index a459b31..74c6837 100644
--- a/antora/components/system/modules/generated/pages/index/UserProfileService.adoc
+++ b/antora/components/system/modules/generated/pages/index/UserProfileService.adoc
@@ -5,7 +5,16 @@ Optional API providing details about the user.
 
 Used by the Wicket viewer in its _org.apache.isis.applib.annotation.DomainServiceLayout.MenuBar#TERTIARY tertiary_ "Me" menu bar.
 
-* `[teal]#*userProfileName*#()` : `String`
+.Java Sources
+[source,java]
+----
+interface UserProfileService {
+
+  String userProfileName() // <.>
+}
+----
+
+<.> `[teal]#*userProfileName*#()` : `String`
 +
 --
 Used as the menu name of the _org.apache.isis.applib.annotation.DomainServiceLayout.MenuBar#TERTIARY tertiary_ "Me" menu bar.
diff --git a/antora/components/system/modules/generated/pages/index/UserRegistrationService.adoc b/antora/components/system/modules/generated/pages/index/UserRegistrationService.adoc
index 3b15ddb..b520d6b 100644
--- a/antora/components/system/modules/generated/pages/index/UserRegistrationService.adoc
+++ b/antora/components/system/modules/generated/pages/index/UserRegistrationService.adoc
@@ -5,3 +5,18 @@ Required API to enable users to register an account on the system (aka "sign up"
 
 User registration also requires that the xref:system:generated:index/EmailNotificationService.adoc[EmailNotificationService] and _org.apache.isis.applib.services.email.EmailService_ to be configured. The framework provides default implementations of both of these services. The notification service requires no further configuration. The email service (EmailServiceDefault) _does_ require a couple of configuration properties to be set (specifying the SMTP mail server/accounts/password).
 
+.Java Sources
+[source,java]
+----
+interface UserRegistrationService {
+
+  boolean usernameExists(String username)
+
+  boolean emailExists(String emailAddress)
+
+  void registerUser(UserDetails userDetails)
+
+  boolean updatePasswordByEmail(String emailAddress, String password)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/UserService.adoc b/antora/components/system/modules/generated/pages/index/UserService.adoc
index 3e5e18a..5e935f0 100644
--- a/antora/components/system/modules/generated/pages/index/UserService.adoc
+++ b/antora/components/system/modules/generated/pages/index/UserService.adoc
@@ -5,27 +5,44 @@ The xref:system:generated:index/UserService.adoc[UserService] allows the domain
 
 If xref:system:generated:index/SudoService.adoc[SudoService] has been used to temporarily override the user and/or roles, then this service will report the overridden values instead.
 
-* `[teal]#*currentUser*#()` : `Optional<xref:system:generated:index/UserMemento.adoc[UserMemento]>`
+.Java Sources
+[source,java]
+----
+interface UserService {
+
+  Optional<UserMemento> currentUser() // <.>
+
+  UserMemento getUser() // <.>
+
+  UserMemento currentUserElseFail() // <.>
+
+  Optional<String> currentUserName() // <.>
+
+  String currentUserNameElseNobody() // <.>
+}
+----
+
+<.> `[teal]#*currentUser*#()` : `Optional<xref:system:generated:index/UserMemento.adoc[UserMemento]>`
 +
 --
 Optionally gets the details about the current user, based on whether an xref:system:generated:index/ExecutionContext.adoc[ExecutionContext] can be found with the current thread's context.
 --
-* `[teal]#*getUser*#()` : `xref:system:generated:index/UserMemento.adoc[UserMemento]`
+<.> `[teal]#*getUser*#()` : `xref:system:generated:index/UserMemento.adoc[UserMemento]`
 +
 --
 Gets the details about the current user.
 --
-* `[teal]#*currentUserElseFail*#()` : `xref:system:generated:index/UserMemento.adoc[UserMemento]`
+<.> `[teal]#*currentUserElseFail*#()` : `xref:system:generated:index/UserMemento.adoc[UserMemento]`
 +
 --
 Gets the details about the current user.
 --
-* `[teal]#*currentUserName*#()` : `Optional<String>`
+<.> `[teal]#*currentUserName*#()` : `Optional<String>`
 +
 --
 Optionally gets the the current user's name, based on whether an xref:system:generated:index/ExecutionContext.adoc[ExecutionContext] can be found with the current thread's context.
 --
-* `[teal]#*currentUserNameElseNobody*#()` : `String`
+<.> `[teal]#*currentUserNameElseNobody*#()` : `String`
 +
 --
 Returns either the current user's name or else _Nobody_ .
diff --git a/antora/components/system/modules/generated/pages/index/ValidityEvent.adoc b/antora/components/system/modules/generated/pages/index/ValidityEvent.adoc
index 399a29a..88f1e54 100644
--- a/antora/components/system/modules/generated/pages/index/ValidityEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/ValidityEvent.adoc
@@ -5,26 +5,24 @@
 
 Multiple subclasses, including:
 
-+
---
-modifying a property
---
-+
---
-adding to/removing from a collection
---
-+
---
-checking a single argument for an action invocation
---
-+
---
-checking all arguments for an action invocation
---
-+
---
-checking all properties for an object before saving
---
+* modifying a property
+* adding to/removing from a collection
+* checking a single argument for an action invocation
+* checking all arguments for an action invocation
+* checking all properties for an object before saving
 
 If _#getReason()_ is `null` , then is usable; otherwise is disabled.
 
+.Java Sources
+[source,java]
+----
+class ValidityEvent {
+
+  ValidityEvent(final Object source, final Identifier identifier)
+
+  Object getSource()
+
+  String getReasonMessage()
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/VisibilityEvent.adoc b/antora/components/system/modules/generated/pages/index/VisibilityEvent.adoc
index 48bad51..a3785fa 100644
--- a/antora/components/system/modules/generated/pages/index/VisibilityEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/VisibilityEvent.adoc
@@ -5,3 +5,12 @@
 
 If _#getReason()_ is `null` , then is usable; otherwise is invisible.
 
+.Java Sources
+[source,java]
+----
+class VisibilityEvent {
+
+  VisibilityEvent(final Object source, final Identifier identifier)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/WrapperFactory.adoc b/antora/components/system/modules/generated/pages/index/WrapperFactory.adoc
index 8d84f80..5e667be 100644
--- a/antora/components/system/modules/generated/pages/index/WrapperFactory.adoc
+++ b/antora/components/system/modules/generated/pages/index/WrapperFactory.adoc
@@ -7,110 +7,117 @@ The wrapper can alternatively also be used to execute the action asynchronously,
 
 The 'wrap' is a runtime-code-generated proxy that wraps the underlying domain object. The wrapper can then be interacted with as follows:
 
-+
---
-a `get` method for properties or collections
---
-+
---
-a `set` method for properties
---
-+
---
-any action
---
+* a `get` method for properties or collections
+* a `set` method for properties
+* any action
 
 Calling any of the above methods may result in a (subclass of) _InteractionException_ if the object disallows it. For example, if a property is annotated as hidden then a xref:system:generated:index/HiddenException.adoc[HiddenException] will be thrown. Similarly if an action has a `validate` method and the supplied arguments are invalid then a xref:system:generated:index/InvalidException.adoc[InvalidException] will be thrown.
 
 In addition, the following methods may also be called:
 
-+
---
-the `title` method
---
-+
---
-any `defaultXxx` or `choicesXxx` method
---
+* the `title` method
+* any `defaultXxx` or `choicesXxx` method
 
 If the object has (see _#isWrapper(Object)_ already been wrapped), then should just return the object back unchanged.
 
-* `[teal]#*wrap*#<T>(T domainObject, xref:system:generated:index/SyncControl.adoc[SyncControl] syncControl)` : `T`
+.Java Sources
+[source,java]
+----
+interface WrapperFactory {
+
+  T wrap(T domainObject, SyncControl syncControl) // <.>
+
+  T wrap(T domainObject) // <.>
+
+  T wrapMixin(Class<T> mixinClass, Object mixedIn, SyncControl syncControl) // <.>
+
+  T wrapMixin(Class<T> mixinClass, Object mixedIn) // <.>
+
+  T unwrap(T possibleWrappedDomainObject) // <.>
+
+  boolean isWrapper(T possibleWrappedDomainObject) // <.>
+
+  T asyncWrap(T domainObject, AsyncControl<R> asyncControl) // <.>
+
+  T asyncWrapMixin(Class<T> mixinClass, Object mixedIn, AsyncControl<R> asyncControl) // <.>
+
+  List<InteractionListener> getListeners() // <.>
+
+  boolean addInteractionListener(InteractionListener listener) // <.>
+
+  boolean removeInteractionListener(InteractionListener listener) // <.>
+
+  void notifyListeners(InteractionEvent ev)
+}
+----
+
+<.> `[teal]#*wrap*#<T>(T domainObject, xref:system:generated:index/SyncControl.adoc[SyncControl] syncControl)` : `T`
 +
 --
 Provides the "wrapper" of a domain object against which to invoke the action.
 
 The provided xref:system:generated:index/SyncControl.adoc[SyncControl] determines whether business rules are checked first, and conversely whether the action is executed. There are therefore three typical cases:
 
-+
---
-check rules, execute action
---
-+
---
-skip rules, execute action
---
-+
---
-check rules, skip action
---
+* check rules, execute action
+* skip rules, execute action
+* check rules, skip action
 
 The last logical option (skip rules, skip action) is valid but doesn't make sense, as it's basically a no-op.
 
 Otherwise, will do all the validations (raise exceptions as required etc.), but doesn't modify the model.
 --
-* `[teal]#*wrap*#<T>(T domainObject)` : `T`
+<.> `[teal]#*wrap*#<T>(T domainObject)` : `T`
 +
 --
 A convenience overload for _#wrap(Object, SyncControl)_ , returning a wrapper to invoke the action synchronously, enforcing business rules. Any exceptions will be propagated, not swallowed.
 --
-* `[teal]#*wrapMixin*#<T>(Class<T> mixinClass, Object mixedIn, xref:system:generated:index/SyncControl.adoc[SyncControl] syncControl)` : `T`
+<.> `[teal]#*wrapMixin*#<T>(Class<T> mixinClass, Object mixedIn, xref:system:generated:index/SyncControl.adoc[SyncControl] syncControl)` : `T`
 +
 --
 Provides the wrapper for a _FactoryService#mixin(Class, Object) mixin_ , against which to invoke the action.
 
 The provided xref:system:generated:index/SyncControl.adoc[SyncControl] determines whether business rules are checked first, and conversely whether the action is executed. See _#wrap(Object, SyncControl)_ for more details on this.
 --
-* `[teal]#*wrapMixin*#<T>(Class<T> mixinClass, Object mixedIn)` : `T`
+<.> `[teal]#*wrapMixin*#<T>(Class<T> mixinClass, Object mixedIn)` : `T`
 +
 --
 A convenience overload for _#wrapMixin(Class, Object, SyncControl)_ , returning a wrapper to invoke the action synchronously, enforcing business rules. Any exceptions will be propagated, not swallowed.
 --
-* `[teal]#*unwrap*#<T>(T possibleWrappedDomainObject)` : `T`
+<.> `[teal]#*unwrap*#<T>(T possibleWrappedDomainObject)` : `T`
 +
 --
 Obtains the underlying domain object, if wrapped.
 
 If the object _#isWrapper(Object) is not wrapped_ , then should just return the object back unchanged.
 --
-* `[teal]#*isWrapper*#<T>(T possibleWrappedDomainObject)` : `boolean`
+<.> `[teal]#*isWrapper*#<T>(T possibleWrappedDomainObject)` : `boolean`
 +
 --
 Whether the supplied object is a wrapper around a domain object.
 --
-* `[teal]#*asyncWrap*#<T, R>(T domainObject, xref:system:generated:index/AsyncControl.adoc[AsyncControl]<R> asyncControl)` : `T`
+<.> `[teal]#*asyncWrap*#<T, R>(T domainObject, xref:system:generated:index/AsyncControl.adoc[AsyncControl]<R> asyncControl)` : `T`
 +
 --
 Returns a proxy object for the provided _domainObject_ , through which can execute the action asynchronously.
 --
-* `[teal]#*asyncWrapMixin*#<T, R>(Class<T> mixinClass, Object mixedIn, xref:system:generated:index/AsyncControl.adoc[AsyncControl]<R> asyncControl)` : `T`
+<.> `[teal]#*asyncWrapMixin*#<T, R>(Class<T> mixinClass, Object mixedIn, xref:system:generated:index/AsyncControl.adoc[AsyncControl]<R> asyncControl)` : `T`
 +
 --
 Returns a proxy object for the provided _mixinClass_ , through which can execute the action asynchronously.
 --
-* `[teal]#*getListeners*#()` : `List<xref:system:generated:index/InteractionListener.adoc[InteractionListener]>`
+<.> `[teal]#*getListeners*#()` : `List<xref:system:generated:index/InteractionListener.adoc[InteractionListener]>`
 +
 --
 All xref:system:generated:index/InteractionListener.adoc[InteractionListener] s that have been registered using _#addInteractionListener(InteractionListener)_ .
 --
-* `[teal]#*addInteractionListener*#(xref:system:generated:index/InteractionListener.adoc[InteractionListener] listener)` : `boolean`
+<.> `[teal]#*addInteractionListener*#(xref:system:generated:index/InteractionListener.adoc[InteractionListener] listener)` : `boolean`
 +
 --
 Registers an xref:system:generated:index/InteractionListener.adoc[InteractionListener] , to be notified of interactions on all wrappers.
 
 This is retrospective: the listener will be notified of interactions even on wrappers created before the listener was installed. (From an implementation perspective this is because the wrappers delegate back to the container to fire the events).
 --
-* `[teal]#*removeInteractionListener*#(xref:system:generated:index/InteractionListener.adoc[InteractionListener] listener)` : `boolean`
+<.> `[teal]#*removeInteractionListener*#(xref:system:generated:index/InteractionListener.adoc[InteractionListener] listener)` : `boolean`
 +
 --
 Remove an xref:system:generated:index/InteractionListener.adoc[InteractionListener] , to no longer be notified of interactions on wrappers.
diff --git a/antora/components/system/modules/generated/pages/index/WrappingObject.adoc b/antora/components/system/modules/generated/pages/index/WrappingObject.adoc
index 7fbf6ae..967c180 100644
--- a/antora/components/system/modules/generated/pages/index/WrappingObject.adoc
+++ b/antora/components/system/modules/generated/pages/index/WrappingObject.adoc
@@ -3,14 +3,27 @@
 
 Implemented by all objects that have been viewed as per _WrapperFactory#wrap(Object)_ .
 
-* `[teal]#*__isis_save*#()` : `void`
+.Java Sources
+[source,java]
+----
+interface WrappingObject {
+
+  void __isis_save() // <.>
+
+  Object __isis_wrapped() // <.>
+
+  ImmutableEnumSet<ExecutionMode> __isis_executionModes() // <.>
+}
+----
+
+<.> `[teal]#*__isis_save*#()` : `void`
 +
 --
 Programmatic equivalent of invoking save for a transient object .
 
 NOTE: domain classes may not have a method with this name. The `__isis_` prefix is intended to reduce the risk of a collision.
 --
-* `[teal]#*__isis_wrapped*#()` : `Object`
+<.> `[teal]#*__isis_wrapped*#()` : `Object`
 +
 --
 Provide access to the underlying, wrapped object.
@@ -21,7 +34,7 @@ NOTE: domain classes may not have a method with this name. The `__isis_` prefix
 
  *NOTE: there is a string-literal reference to this name `DomainObjectInvocationHandler` , so it should not be changed.* .
 --
-* `[teal]#*__isis_executionModes*#()` : `ImmutableEnumSet<xref:system:generated:index/ExecutionMode.adoc[ExecutionMode]>`
+<.> `[teal]#*__isis_executionModes*#()` : `ImmutableEnumSet<xref:system:generated:index/ExecutionMode.adoc[ExecutionMode]>`
 +
 --
 The _EnumSetexecution modes_ inferred from the xref:system:generated:index/SyncControl.adoc[SyncControl] with which this wrapper was _WrapperFactory#wrap(Object, SyncControl) created_ .
diff --git a/antora/components/system/modules/generated/pages/index/XmlService.adoc b/antora/components/system/modules/generated/pages/index/XmlService.adoc
index d2b5cef..e4e8a09 100644
--- a/antora/components/system/modules/generated/pages/index/XmlService.adoc
+++ b/antora/components/system/modules/generated/pages/index/XmlService.adoc
@@ -3,22 +3,37 @@
 
 This service provides a number of utility services for interacting with XML _Document_ s
 
-* `[teal]#*asDocument*#(String xmlStr)` : `Document`
+.Java Sources
+[source,java]
+----
+interface XmlService {
+
+  Document asDocument(String xmlStr) // <.>
+
+  String asString(final Document doc) // <.>
+
+  Element getChildElement(final Element el, final String tagname) // <.>
+
+  String getChildTextValue(final Element el) // <.>
+}
+----
+
+<.> `[teal]#*asDocument*#(String xmlStr)` : `Document`
 +
 --
 Converts xml string into an _Document W3C Document_ .
 --
-* `[teal]#*asString*#(Document doc)` : `String`
+<.> `[teal]#*asString*#(Document doc)` : `String`
 +
 --
 Serializes a _Document W3C Document_ back into a string.
 --
-* `[teal]#*getChildElement*#(Element el, String tagname)` : `Element`
+<.> `[teal]#*getChildElement*#(Element el, String tagname)` : `Element`
 +
 --
 Convenience method to walk XML document.
 --
-* `[teal]#*getChildTextValue*#(Element el)` : `String`
+<.> `[teal]#*getChildTextValue*#(Element el)` : `String`
 +
 --
 Convenience method to obtain value of child text node.
diff --git a/antora/components/system/modules/generated/pages/index/XmlServiceDefault.adoc b/antora/components/system/modules/generated/pages/index/XmlServiceDefault.adoc
index 3fc4b21..3bd80ef 100644
--- a/antora/components/system/modules/generated/pages/index/XmlServiceDefault.adoc
+++ b/antora/components/system/modules/generated/pages/index/XmlServiceDefault.adoc
@@ -1,4 +1,18 @@
 = XmlServiceDefault : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+class XmlServiceDefault {
+
+  Document asDocument(String xmlStr)
+
+  String asString(final Document doc)
+
+  Element getChildElement(final Element el, final String tagname)
+
+  String getChildTextValue(final Element el)
+}
+----
 
diff --git a/antora/components/system/modules/generated/pages/index/XmlSnapshotService.Snapshot.Builder.adoc b/antora/components/system/modules/generated/pages/index/XmlSnapshotService.Snapshot.Builder.adoc
index 694c0ab..e72a561 100644
--- a/antora/components/system/modules/generated/pages/index/XmlSnapshotService.Snapshot.Builder.adoc
+++ b/antora/components/system/modules/generated/pages/index/XmlSnapshotService.Snapshot.Builder.adoc
@@ -1,18 +1,30 @@
 = XmlSnapshotService.Snapshot.Builder : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface Builder {
 
-* `[teal]#*includePath*#(String path)` : `void`
+  void includePath(final String path) // <.>
+
+  void includePathAndAnnotation(final String path, final String annotation) // <.>
+
+  XmlSnapshotService.Snapshot build() // <.>
+}
+----
+
+<.> `[teal]#*includePath*#(String path)` : `void`
 +
 --
 Enrich the snapshot to include the state of these referenced objects
 --
-* `[teal]#*includePathAndAnnotation*#(String path, String annotation)` : `void`
+<.> `[teal]#*includePathAndAnnotation*#(String path, String annotation)` : `void`
 +
 --
 Ditto, but add an XML annotation attribute to the included element(s).
 --
-* `[teal]#*build*#()` : `Snapshot`
+<.> `[teal]#*build*#()` : `Snapshot`
 +
 --
 Builds the Snapshot.
diff --git a/antora/components/system/modules/generated/pages/index/XmlSnapshotService.Snapshot.adoc b/antora/components/system/modules/generated/pages/index/XmlSnapshotService.Snapshot.adoc
index 32683c5..617716b 100644
--- a/antora/components/system/modules/generated/pages/index/XmlSnapshotService.Snapshot.adoc
+++ b/antora/components/system/modules/generated/pages/index/XmlSnapshotService.Snapshot.adoc
@@ -1,13 +1,23 @@
 = XmlSnapshotService.Snapshot : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+.Java Sources
+[source,java]
+----
+interface Snapshot {
 
-* `[teal]#*getXmlDocument*#()` : `Document`
+  Document getXmlDocument() // <.>
+
+  Document getXsdDocument() // <.>
+}
+----
+
+<.> `[teal]#*getXmlDocument*#()` : `Document`
 +
 --
 Converts the snapshotted state into an XML document.
 --
-* `[teal]#*getXsdDocument*#()` : `Document`
+<.> `[teal]#*getXsdDocument*#()` : `Document`
 +
 --
 Creates a corresponding XSD that describes the structure of the exported XML.
diff --git a/antora/components/system/modules/generated/pages/index/XmlSnapshotService.adoc b/antora/components/system/modules/generated/pages/index/XmlSnapshotService.adoc
index 6f746f8..f87d136 100644
--- a/antora/components/system/modules/generated/pages/index/XmlSnapshotService.adoc
+++ b/antora/components/system/modules/generated/pages/index/XmlSnapshotService.adoc
@@ -5,17 +5,30 @@ This service allows an XML document to be generated capturing the data of a root
 
 The framework provides an implementation of this service ( `XmlSnapshotServiceDefault` ) which is automatically registered and available for use; no further configuration is required.
 
-* `[teal]#*snapshotFor*#(Object domainObject)` : `Snapshot`
+.Java Sources
+[source,java]
+----
+interface XmlSnapshotService {
+
+  XmlSnapshotService.Snapshot snapshotFor(final Object domainObject) // <.>
+
+  XmlSnapshotService.Snapshot.Builder builderFor(final Object domainObject) // <.>
+
+  T getChildElementValue(final Element el, final String tagname, final Class<T> expectedCls) // <.>
+}
+----
+
+<.> `[teal]#*snapshotFor*#(Object domainObject)` : `Snapshot`
 +
 --
 Exports the state of a domain object into a Snapshot (which can then be converted into XML, for example).
 --
-* `[teal]#*builderFor*#(Object domainObject)` : `Builder`
+<.> `[teal]#*builderFor*#(Object domainObject)` : `Builder`
 +
 --
 Creates a Snapshot.Builder that allows the contents of the snapshot to include other related state.
 --
-* `[teal]#*getChildElementValue*#<T>(Element el, String tagname, Class<T> expectedCls)` : `T`
+<.> `[teal]#*getChildElementValue*#<T>(Element el, String tagname, Class<T> expectedCls)` : `T`
 +
 --
 Convenience method to extract value of an XML element, based on its type.
diff --git a/antora/components/system/modules/generated/pages/index/XmlSnapshotServiceDefault.adoc b/antora/components/system/modules/generated/pages/index/XmlSnapshotServiceDefault.adoc
index 6020375..2fb8a71 100644
--- a/antora/components/system/modules/generated/pages/index/XmlSnapshotServiceDefault.adoc
+++ b/antora/components/system/modules/generated/pages/index/XmlSnapshotServiceDefault.adoc
@@ -5,12 +5,27 @@ This service allows an XML document to be generated capturing the data of a root
 
 This implementation has no UI and there are no other implementations of the service API, and so it annotated with _org.apache.isis.applib.annotation.DomainService_ . Because this class is implemented in core, this means that it is automatically registered and available for use; no further configuration is required.
 
-* `[teal]#*snapshotFor*#(Object domainObject)` : `Snapshot`
+.Java Sources
+[source,java]
+----
+class XmlSnapshotServiceDefault {
+
+  XmlSnapshotServiceDefault(final XmlService xmlService, final SpecificationLoader specificationLoader)
+
+  XmlSnapshotService.Snapshot snapshotFor(final Object domainObject) // <.>
+
+  Snapshot.Builder builderFor(final Object domainObject) // <.>
+
+  T getChildElementValue(final Element el, final String tagname, final Class<T> expectedCls)
+}
+----
+
+<.> `[teal]#*snapshotFor*#(Object domainObject)` : `Snapshot`
 +
 --
 Creates a simple snapshot of the domain object.
 --
-* `[teal]#*builderFor*#(Object domainObject)` : `Builder`
+<.> `[teal]#*builderFor*#(Object domainObject)` : `Builder`
 +
 --
 Creates a builder that allows a custom snapshot - traversing additional associated properties or collections (using _Snapshot.Builder#includePath(String)_ and _Snapshot.Builder#includePathAndAnnotation(String, String)_ ) - to be created.
diff --git a/antora/components/system/modules/generated/pages/system-overview.adoc b/antora/components/system/modules/generated/pages/system-overview.adoc
index b47f4aa..38fc936 100644
--- a/antora/components/system/modules/generated/pages/system-overview.adoc
+++ b/antora/components/system/modules/generated/pages/system-overview.adoc
@@ -1259,12 +1259,12 @@ skinparam {
   maxMessageSize 100
 }
 hide stereotype
-skinparam rectangle<<11>> {
+skinparam rectangle<<22>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
 }
-skinparam rectangle<<22>> {
+skinparam rectangle<<11>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
@@ -1354,12 +1354,12 @@ skinparam rectangle<<20>> {
   FontColor #fffffe
   BorderColor #2E6295
 }
-skinparam rectangle<<10>> {
+skinparam rectangle<<21>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
 }
-skinparam rectangle<<21>> {
+skinparam rectangle<<10>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
@@ -3262,22 +3262,22 @@ skinparam {
   maxMessageSize 100
 }
 hide stereotype
-skinparam rectangle<<22>> {
+skinparam rectangle<<11>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
 }
-skinparam rectangle<<11>> {
+skinparam rectangle<<22>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
 }
-skinparam rectangle<<23>> {
+skinparam rectangle<<12>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
 }
-skinparam rectangle<<12>> {
+skinparam rectangle<<23>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
diff --git a/tooling/model4adoc/src/main/java/org/apache/isis/tooling/model4adoc/NodeWriter.java b/tooling/model4adoc/src/main/java/org/apache/isis/tooling/model4adoc/NodeWriter.java
index e877a27..52b7b64 100644
--- a/tooling/model4adoc/src/main/java/org/apache/isis/tooling/model4adoc/NodeWriter.java
+++ b/tooling/model4adoc/src/main/java/org/apache/isis/tooling/model4adoc/NodeWriter.java
@@ -365,7 +365,7 @@ final class NodeWriter implements StructuralNodeVisitor {
                 : stringWriterStack.peek();
         val continuationBlockAsString = sw.toString();
         if(continuationBlockAsString.length()>EMPTY_CONTINUATION_BLOCK_SIZE) {
-            writer.append(continuationBlockAsString); // write directly to the master writer, no side-effects wanted    
+            writer.append(continuationBlockAsString); // write directly to the current writer, no side-effects wanted    
         }
     }