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/10 18:07:25 UTC

[isis] branch master updated: ISIS-2473: cleanup applib service java sources

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 e66391f  ISIS-2473: cleanup applib service java sources
e66391f is described below

commit e66391f9e9cefcd95dbf8ccfc648b1801f112d51
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Dec 10 18:28:23 2020 +0100

    ISIS-2473: cleanup applib service java sources
---
 .../src/main/adoc/modules/applib-svc/examples.sh   |  2 +-
 .../isis/applib/services/DomainChangeRecord.java   | 17 +----
 .../isis/applib/services/MethodReferences.java     |  3 +-
 .../RepresentsInteractionMemberExecution.java      |  2 +
 .../applib/services/TransactionScopeListener.java  |  4 +-
 .../services/acceptheader/AcceptHeaderService.java | 11 +--
 .../appfeat/ApplicationFeatureRepository.java      |  8 +--
 .../services/appfeat/ApplicationMemberType.java    |  8 +--
 .../isis/applib/services/bookmark/Bookmark.java    | 16 +----
 .../applib/services/bookmark/BookmarkHolder.java   |  6 +-
 .../applib/services/bookmark/BookmarkService.java  | 20 +-----
 .../services/bookmarkui/BookmarkUiService.java     | 10 +--
 .../isis/applib/services/clock/ClockService.java   |  4 +-
 .../isis/applib/services/command/Command.java      | 58 ++++------------
 .../services/command/CommandExecutorService.java   | 30 ++++----
 .../services/command/CommandOutcomeHandler.java    |  4 ++
 .../applib/services/commanddto/HasCommandDto.java  |  1 +
 .../conmap/ContentMappingServiceForCommandDto.java |  4 ++
 .../ContentMappingServiceForCommandsDto.java       |  4 ++
 .../services/commanddto/conmap/UserDataKeys.java   |  1 +
 .../commanddto/processor/CommandDtoProcessor.java  | 10 +--
 .../CommandDtoProcessorForActionAbstract.java      |  1 -
 .../CommandDtoProcessorForPropertyAbstract.java    |  1 -
 .../processor/spi/CommandDtoProcessorService.java  | 10 +--
 .../spi/CommandDtoProcessorServiceIdentity.java    |  2 +
 .../services/confview/ConfigurationMenu.java       | 10 ++-
 .../services/confview/ConfigurationProperty.java   |  6 +-
 .../confview/ConfigurationViewService.java         |  8 +--
 .../services/conmap/ContentMappingService.java     | 17 ++---
 .../isis/applib/services/email/EmailService.java   |  8 +--
 .../isis/applib/services/error/ErrorDetails.java   | 14 ++--
 .../services/error/ErrorReportingService.java      |  4 +-
 .../apache/isis/applib/services/error/Ticket.java  | 26 ++-----
 .../applib/services/eventbus/EventBusService.java  |  4 +-
 .../services/exceprecog/ExceptionRecognizer.java   | 47 +++----------
 .../exceprecog/ExceptionRecognizerAbstract.java    |  1 -
 .../exceprecog/ExceptionRecognizerService.java     | 11 +--
 .../services/exceprecog/TranslatableException.java |  7 +-
 .../applib/services/factory/FactoryService.java    | 40 +++--------
 .../applib/services/grid/GridLoaderService.java    | 27 +++-----
 .../isis/applib/services/grid/GridService.java     | 42 ++++--------
 .../applib/services/grid/GridSystemService.java    | 22 +++---
 .../apache/isis/applib/services/health/Health.java |  6 +-
 .../applib/services/health/HealthCheckService.java |  8 +--
 .../isis/applib/services/hint/HintStore.java       | 21 +++---
 .../services/homepage/HomePageResolverService.java |  4 +-
 .../isis/applib/services/i18n/LocaleProvider.java  |  6 +-
 .../applib/services/i18n/TranslatableString.java   | 20 ++----
 .../applib/services/i18n/TranslationService.java   | 28 ++------
 .../applib/services/i18n/TranslationsResolver.java |  8 +--
 .../applib/services/iactn/ExecutionContext.java    |  2 +-
 .../isis/applib/services/iactn/Interaction.java    | 76 ++------------------
 .../applib/services/iactn/InteractionContext.java  | 11 +--
 .../applib/services/inject/ServiceInjector.java    |  6 +-
 .../isis/applib/services/jaxb/JaxbService.java     | 30 +++-----
 .../isis/applib/services/layout/LayoutService.java | 28 ++------
 .../applib/services/layout/LayoutServiceMenu.java  | 17 ++---
 .../applib/services/linking/DeepLinkService.java   | 10 +--
 .../services/menu/MenuBarsLoaderService.java       | 15 ++--
 .../isis/applib/services/menu/MenuBarsService.java | 18 ++---
 .../applib/services/message/MessageService.java    | 43 ++++--------
 .../isis/applib/services/metamodel/BeanSort.java   | 20 +-----
 .../applib/services/metamodel/DomainMember.java    |  6 +-
 .../applib/services/metamodel/DomainModel.java     |  6 +-
 .../services/metamodel/MetaModelService.java       | 41 +++--------
 .../services/metamodel/MetaModelServiceMenu.java   | 16 ++---
 .../applib/services/metrics/MetricsService.java    | 14 ++--
 .../services/publishing/log/CommandLogger.java     |  4 ++
 .../publishing/log/EntityChangesLogger.java        |  4 ++
 .../publishing/log/EntityPropertyChangeLogger.java |  4 ++
 .../services/publishing/log/ExecutionLogger.java   |  4 ++
 .../services/publishing/spi/CommandSubscriber.java |  7 +-
 .../services/publishing/spi/EntityChanges.java     | 24 ++++---
 .../publishing/spi/EntityChangesSubscriber.java    |  5 +-
 .../publishing/spi/EntityPropertyChange.java       |  2 +-
 .../spi/EntityPropertyChangeSubscriber.java        |  6 +-
 .../publishing/spi/ExecutionSubscriber.java        |  8 +--
 .../queryresultscache/QueryResultCacheControl.java |  6 +-
 .../queryresultscache/QueryResultsCache.java       | 34 ++++-----
 .../applib/services/registry/ServiceRegistry.java  | 27 +-------
 .../applib/services/repository/EntityState.java    |  7 +-
 .../services/repository/RepositoryService.java     | 80 ++++++----------------
 .../applib/services/routing/RoutingService.java    |  7 +-
 .../applib/services/scratchpad/Scratchpad.java     | 24 +------
 .../services/session/SessionLoggingService.java    |  7 +-
 .../session/SessionLoggingServiceLogging.java      |  6 +-
 .../isis/applib/services/sudo/SudoService.java     | 23 ++-----
 .../applib/services/swagger/SwaggerService.java    | 30 +++-----
 .../TableColumnOrderForCollectionTypeAbstract.java |  2 -
 .../services/tablecol/TableColumnOrderService.java | 19 ++---
 .../isis/applib/services/title/TitleService.java   | 14 ++--
 .../services/urlencoding/UrlEncodingService.java   | 11 +--
 .../isis/applib/services/user/UserMemento.java     |  2 +-
 .../isis/applib/services/user/UserService.java     |  5 +-
 .../services/userprof/UserProfileService.java      |  8 +--
 .../services/userreg/EmailNotificationService.java | 14 ++--
 .../isis/applib/services/userreg/UserDetails.java  |  3 +-
 .../services/userreg/UserRegistrationService.java  | 14 ++--
 .../userreg/events/EmailRegistrationEvent.java     |  2 +
 .../userreg/events/PasswordResetEvent.java         |  1 +
 .../applib/services/wrapper/DisabledException.java |  3 +
 .../applib/services/wrapper/HiddenException.java   |  1 +
 .../applib/services/wrapper/InvalidException.java  |  1 +
 .../applib/services/wrapper/WrapperFactory.java    | 62 ++++-------------
 .../applib/services/wrapper/WrappingObject.java    | 16 ++---
 .../services/wrapper/control/AsyncControl.java     | 46 ++++---------
 .../services/wrapper/control/ControlAbstract.java  | 20 ++----
 .../services/wrapper/control/ExceptionHandler.java |  6 +-
 .../wrapper/control/ExceptionHandlerAbstract.java  |  4 --
 .../services/wrapper/control/ExecutionMode.java    |  9 +--
 .../services/wrapper/control/SyncControl.java      | 14 ++--
 .../wrapper/events/ActionArgumentEvent.java        |  3 +-
 .../wrapper/events/ActionInvocationEvent.java      |  5 +-
 .../wrapper/events/ActionUsabilityEvent.java       |  2 +-
 .../wrapper/events/ActionVisibilityEvent.java      |  6 +-
 .../wrapper/events/CollectionAccessEvent.java      |  1 +
 .../wrapper/events/CollectionAddToEvent.java       |  3 +-
 .../wrapper/events/CollectionMethodEvent.java      |  1 +
 .../wrapper/events/CollectionRemoveFromEvent.java  |  4 +-
 .../wrapper/events/CollectionUsabilityEvent.java   |  2 +
 .../services/wrapper/events/InteractionEvent.java  |  1 +
 .../services/wrapper/events/ObjectTitleEvent.java  |  1 +
 .../wrapper/events/ObjectValidityEvent.java        |  3 +-
 .../wrapper/events/ObjectVisibilityEvent.java      |  1 +
 .../services/wrapper/events/ParseValueEvent.java   |  3 +-
 .../wrapper/events/PropertyAccessEvent.java        |  1 +
 .../wrapper/events/PropertyModifyEvent.java        |  2 +-
 .../wrapper/events/PropertyUsabilityEvent.java     |  2 +-
 .../wrapper/events/PropertyVisibilityEvent.java    |  2 +-
 .../wrapper/events/ProposedHolderEvent.java        |  2 +-
 .../services/wrapper/events/UsabilityEvent.java    |  2 +-
 .../services/wrapper/events/ValidityEvent.java     |  2 +-
 .../services/wrapper/events/VisibilityEvent.java   |  5 +-
 .../wrapper/listeners/InteractionAdapter.java      |  1 +
 .../wrapper/listeners/InteractionListener.java     |  4 ++
 .../isis/applib/services/xactn/Transaction.java    |  7 +-
 .../isis/applib/services/xactn/TransactionId.java  | 10 ++-
 .../applib/services/xactn/TransactionService.java  | 31 +++------
 .../applib/services/xactn/TransactionState.java    | 18 ++---
 .../isis/applib/services/xml/XmlService.java       | 46 ++-----------
 .../services/xmlsnapshot/XmlSnapshotService.java   | 38 +++-------
 .../xmlsnapshot/XmlSnapshotServiceAbstract.java    | 38 ----------
 .../apache/isis/commons/internal/base/_Text.java   | 18 +++++
 .../runtimeservices/xml/XmlServiceDefault.java     | 18 ++---
 .../xmlsnapshot/XmlSnapshotServiceDefault.java     |  2 +-
 .../XmlSnapshotServiceDefault_Test.java            |  2 -
 .../tooling/cli/doclet/AdocIncludeTagFilter.java   | 54 +++++++++++----
 .../isis/tooling/cli/test/doclet/AdocletTest.java  | 23 ++++++-
 148 files changed, 656 insertions(+), 1295 deletions(-)

diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples.sh b/api/applib/src/main/adoc/modules/applib-svc/examples.sh
index 4cef756..87d858c 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/examples.sh
+++ b/api/applib/src/main/adoc/modules/applib-svc/examples.sh
@@ -24,7 +24,7 @@ echo "==================="
 echo "= MIGRATION NOTES ="
 echo "==================="
 echo "the java file list (below) was migrated to use the global document index instead (module system overview)"
-echo "hence this scipt is a no-op"
+echo "hence this script is a no-op"
 exit 0
 
 SRC_APPLIB=$SRC_MAIN_JAVA/org/apache/isis/applib
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/DomainChangeRecord.java b/api/applib/src/main/java/org/apache/isis/applib/services/DomainChangeRecord.java
index af23836..be89e37 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/DomainChangeRecord.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/DomainChangeRecord.java
@@ -21,33 +21,20 @@ package org.apache.isis.applib.services;
 import java.sql.Timestamp;
 import java.util.UUID;
 
-import javax.inject.Inject;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.bookmark.BookmarkService;
-import org.apache.isis.applib.services.message.MessageService;
-import org.apache.isis.applib.services.metamodel.BeanSort;
-import org.apache.isis.applib.services.metamodel.MetaModelService;
 import org.apache.isis.commons.having.HasUniqueId;
 import org.apache.isis.commons.having.HasUsername;
 
-import lombok.Getter;
-import lombok.Setter;
-import lombok.val;
-import lombok.extern.log4j.Log4j2;
-
 
 /**
  * An abstraction of some sort of recorded change to a domain object: commands, audit entries or published events.
+ * 
+ * @since 2.0 {@index}
  */
 public interface DomainChangeRecord extends HasUniqueId, HasUsername {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/MethodReferences.java b/api/applib/src/main/java/org/apache/isis/applib/services/MethodReferences.java
index f7ecdea..6731a40 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/MethodReferences.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/MethodReferences.java
@@ -22,8 +22,7 @@ import lombok.experimental.UtilityClass;
 
 /**
  * 
- * @since 2.0
- *
+ * @since 2.0 {@index}
  */
 @UtilityClass
 public class MethodReferences {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/RepresentsInteractionMemberExecution.java b/api/applib/src/main/java/org/apache/isis/applib/services/RepresentsInteractionMemberExecution.java
index 4834752..9defd94 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/RepresentsInteractionMemberExecution.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/RepresentsInteractionMemberExecution.java
@@ -31,6 +31,8 @@ import org.apache.isis.schema.ixn.v2.InteractionDto;
  * <p>
  *     Examples could include SPI services that persist published events and status messages.
  * </p>
+ * 
+ * @since 2.0 {@index}
  */
 public interface RepresentsInteractionMemberExecution extends HasUniqueId {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/TransactionScopeListener.java b/api/applib/src/main/java/org/apache/isis/applib/services/TransactionScopeListener.java
index b6fe41c..3fe562a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/TransactionScopeListener.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/TransactionScopeListener.java
@@ -28,9 +28,8 @@ import org.apache.isis.applib.annotation.IsisInteractionScope;
  * @apiNote Implementing services most likely need to be scoped in a way that
  * binds the scope to the current thread (eg. {@link IsisInteractionScope})
  *  
- * @since 2.0 (renamed from WithTransactionScope)
+ * @since 2.0 (renamed from WithTransactionScope) {@index}
  */
-// tag::refguide[]
 public interface TransactionScopeListener {
     
     enum PreCommitPhase {
@@ -49,4 +48,3 @@ public interface TransactionScopeListener {
     }
     
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/acceptheader/AcceptHeaderService.java b/api/applib/src/main/java/org/apache/isis/applib/services/acceptheader/AcceptHeaderService.java
index 26640d2..3392d81 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/acceptheader/AcceptHeaderService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/acceptheader/AcceptHeaderService.java
@@ -22,10 +22,11 @@ import java.util.List;
 
 import javax.ws.rs.core.MediaType;
 
-import org.apache.isis.applib.annotation.Programmatic;
-
-// tag::refguide[]
+/**
+ * 
+ * 
+ * @since 1.x {@index}
+ */
 public interface AcceptHeaderService {
-    List<MediaType> getAcceptableMediaTypes();  // <1>
+    List<MediaType> getAcceptableMediaTypes();
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/appfeat/ApplicationFeatureRepository.java b/api/applib/src/main/java/org/apache/isis/applib/services/appfeat/ApplicationFeatureRepository.java
index 429c8a5..7909b24 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/appfeat/ApplicationFeatureRepository.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/appfeat/ApplicationFeatureRepository.java
@@ -20,9 +20,10 @@ package org.apache.isis.applib.services.appfeat;
 
 import java.util.SortedSet;
 
-import org.apache.isis.applib.annotation.Programmatic;
-
-// tag::refguide[]
+/**
+ * 
+ * @since 1.x {@index}
+ */
 public interface ApplicationFeatureRepository  {
 
     SortedSet<String> packageNames();
@@ -43,4 +44,3 @@ public interface ApplicationFeatureRepository  {
             ApplicationMemberType memberType);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/appfeat/ApplicationMemberType.java b/api/applib/src/main/java/org/apache/isis/applib/services/appfeat/ApplicationMemberType.java
index 89a8744..cb8a27e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/appfeat/ApplicationMemberType.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/appfeat/ApplicationMemberType.java
@@ -20,18 +20,18 @@ package org.apache.isis.applib.services.appfeat;
 
 import org.apache.isis.commons.internal.base._Strings;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 1.x {@index}
+ */
 public enum ApplicationMemberType {
     PROPERTY,
     COLLECTION,
     ACTION;
-// end::refguide[]
 
     @Override
     public String toString() {
         return _Strings.capitalize(name());
     }
 
-// tag::refguide[]
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java
index 0c4e17b..2379c63 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/Bookmark.java
@@ -37,13 +37,13 @@ import lombok.val;
  *
  * <p>
  * Analogous to the <tt>RootOid</tt>.
+ * 
+ * @since 1.x revised for 2.0 {@index}
  */
 @Value 
 @lombok.Value @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
-// tag::refguide[]
 public class Bookmark implements Serializable {
 
-    // end::refguide[]
     private static final long serialVersionUID = 2L;
 
     protected static final String SEPARATOR = ":";
@@ -52,32 +52,24 @@ public class Bookmark implements Serializable {
      * corresponds directly to the object's specification-id
      * @see <code>RootOid</code>
      */
-    // tag::refguide[]
     @NonNull  private final String objectType;
     @NonNull  private final String identifier;
-    // end::refguide[]
 
     @Nullable private final String hintId;
-    // tag::refguide[]
 
     public static Bookmark of(String objectType, String identifier) {
-        // end::refguide[]
 
         return new Bookmark(objectType, identifier, /*hintId*/ null);
 
-        // tag::refguide[]
         // ...
     }
 
-    // end::refguide[]
 
     /**
      * Round-trip with {@link #toString()} representation.
      * @return
      */
-    // tag::refguide[]
     public static Optional<Bookmark> parse(@Nullable String str) {
-        // end::refguide[]
 
         if(str==null) {
             return Optional.empty();
@@ -92,10 +84,8 @@ public class Bookmark implements Serializable {
         }
         return Optional.empty();
 
-        // tag::refguide[]
         // ...
     }
-    // end::refguide[]
 
     public OidDto toOidDto() {
         val oidDto = new OidDto();
@@ -129,6 +119,4 @@ public class Bookmark implements Serializable {
         return objectType + SEPARATOR + id;
     }
 
-    // tag::refguide[]
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkHolder.java b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkHolder.java
index cdb8e0e..a67179b 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkHolder.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkHolder.java
@@ -18,8 +18,10 @@
  */
 package org.apache.isis.applib.services.bookmark;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public interface BookmarkHolder {
     Bookmark bookmark();
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkService.java b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkService.java
index 808c80e..85cfc1a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkService.java
@@ -28,12 +28,11 @@ import lombok.val;
 
 /**
  * This service enables a serializable 'bookmark' to be created for an entity.
- *
+ * 
+ * @since 1.x {@index}
  */
-// tag::refguide[]
 public interface BookmarkService {
 
-    // end::refguide[]
     /**
      * Returns the {@link Bookmark} for the given domain object.
      *
@@ -44,19 +43,15 @@ public interface BookmarkService {
      * @param domainObject - domain object (if any) to return a bookmark for
      * @return optionally a {@link Bookmark} representing given {@code domainObject}
      */
-    // tag::refguide[]
     Bookmark bookmarkFor(@Nullable Object domainObject);
 
-    // end::refguide[]
     /**
      * As per {@link #bookmarkFor(Object)}, but requires that a non-null {@link Bookmark} is returned.
      *
      * @param domainObject - that can be bookmarked
      * @return a (non-null) {@link Bookmark} for the provided domain object.
      */
-    // tag::refguide[]
     default Bookmark bookmarkForElseThrow(Object domainObject) {
-        // end::refguide[]
 
         requires(domainObject, "domainObject");
         val bookmark = bookmarkFor(domainObject);
@@ -65,47 +60,36 @@ public interface BookmarkService {
         }
         throw _Exceptions.illegalArgument(
                 "cannot create bookmark for type %s", domainObject.getClass().getName());
-        // tag::refguide[]
-        // ...
     }
 
-    // end::refguide[]
     /**
      * Utility method that creates a {@link Bookmark} from the constituent parts.
      *
      * @return - {@link Bookmark} for provided class and identifier
      */
-    // tag::refguide[]
     Bookmark bookmarkFor(Class<?> cls, String identifier);
 
-    // end::refguide[]
     /**
      * @see #lookup(Bookmark)
      *
      * @param bookmarkHolder - from which the {@link Bookmark} is obtained
      * @return - corresponding domain object
      */
-    // tag::refguide[]
     Object lookup(BookmarkHolder bookmarkHolder);
 
-    // end::refguide[]
     /**
      * Reciprocal of {@link #bookmarkFor(Object)}
      *
      * @param bookmark - representing a domain object
      * @return - the corresponding domain object
      */
-    // tag::refguide[]
     Object lookup(Bookmark bookmark);
 
-    // end::refguide[]
     /**
      * As {@link #lookup(Bookmark)}, but down-casting to the specified type.
      */
-    // tag::refguide[]
     default <T> T lookup(Bookmark bookmark, Class<T> cls) {
         return cls.cast(lookup(bookmark));
     }
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/bookmarkui/BookmarkUiService.java b/api/applib/src/main/java/org/apache/isis/applib/services/bookmarkui/BookmarkUiService.java
index d94ec32..5e0cea3 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/bookmarkui/BookmarkUiService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/bookmarkui/BookmarkUiService.java
@@ -19,10 +19,10 @@
 
 package org.apache.isis.applib.services.bookmarkui;
 
-import org.apache.isis.applib.annotation.Programmatic;
-
-// tag::refguide[]
+/**
+ * 
+ * @since 1.x {@index}
+ */
 public interface BookmarkUiService {
-    void clear();                       // <.>
+    void clear();
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/clock/ClockService.java b/api/applib/src/main/java/org/apache/isis/applib/services/clock/ClockService.java
index 216d605..9959855 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/clock/ClockService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/clock/ClockService.java
@@ -26,8 +26,9 @@ import org.apache.isis.applib.clock.VirtualClock;
  * Use of this service also opens up the use of centralized
  * co-ordinated time management through a centralized time service.
  *
+ * 
+ * @since 1.x revised for 2.0 {@index}
  */
-// tag::refguide[]
 public interface ClockService {
 
     VirtualClock getClock();
@@ -76,4 +77,3 @@ public interface ClockService {
 //    }
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/command/Command.java b/api/applib/src/main/java/org/apache/isis/applib/services/command/Command.java
index 435e67d..03a1b06 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/command/Command.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/command/Command.java
@@ -69,14 +69,14 @@ import lombok.extern.log4j.Log4j2;
  *     is created, and the originating {@link Command} is set to be its
  *     {@link Command#getParent() parent}.
  * </p>
+ * 
+ * @since 1.x {@index}
  */
 @RequiredArgsConstructor
 @ToString
 @Log4j2
-// tag::refguide[]
 public class Command implements HasUniqueId, HasUsername, HasCommandDto {
 
-    // end::refguide[]
     /**
      * Unique identifier for the command.
      *
@@ -84,13 +84,9 @@ public class Command implements HasUniqueId, HasUsername, HasCommandDto {
      *     Derived from {@link #getCommandDto()}'s {@link CommandDto#getTransactionId()}
      * </p>
      */
-    // tag::refguide[]
     @Getter
-    // end::refguide[]
         (onMethod_ = {@Override})
-    // tag::refguide[]
-    private final UUID uniqueId;              // <.>
-    // end::refguide[]
+    private final UUID uniqueId;
     
     /**
      * The user that created the command.
@@ -100,10 +96,8 @@ public class Command implements HasUniqueId, HasUsername, HasCommandDto {
      * </p>
      */
     @Override
-    // tag::refguide[]
-    public String getUsername() {               // <.>
+    public String getUsername() {
         // ...
-        // end::refguide[]
         return commandDto != null
                 ? commandDto.getUser()
                 : null;
@@ -116,10 +110,8 @@ public class Command implements HasUniqueId, HasUsername, HasCommandDto {
      *     Derived from {@link #getCommandDto()}'s {@link CommandDto#getTimestamp()}.
      * </p>
      */
-    // tag::refguide[]
-    public Timestamp getTimestamp() {           // <.>
+    public Timestamp getTimestamp() {
         // ...
-        // end::refguide[]
         return commandDto != null
                 ? JavaSqlXMLGregorianCalendarMarshalling.toTimestamp(commandDto.getTimestamp())
                 : null;
@@ -139,34 +131,28 @@ public class Command implements HasUniqueId, HasUsername, HasCommandDto {
      * </p>
      */
     @ToString.Exclude
-    // tag::refguide[]
     @Getter
-    private CommandDto commandDto;              // <.>
-    // end::refguide[]
+    private CommandDto commandDto;
 
     /**
      * Derived from {@link #getCommandDto()}, is the {@link Bookmark} of
      * the target object (entity or service) on which this action/edit was performed.
      */
-    // tag::refguide[]
-    public Bookmark getTarget() {               // <.>
+    public Bookmark getTarget() {
         return commandDto != null
                 ? Bookmark.from(commandDto.getTargets().getOid().get(0))
                 : null;
     }
-    // end::refguide[]
 
     /**
      * Derived from {@link #getCommandDto()}, holds a string
      * representation of the invoked action, or the edited property.
      */
-    // tag::refguide[]
-    public String getLogicalMemberIdentifier() {    // <.>
+    public String getLogicalMemberIdentifier() {
         return commandDto != null
                     ? commandDto.getMember().getLogicalMemberIdentifier()
                     : null;
     }
-    // end::refguide[]
 
     /**
      * For async commands created through the {@link WrapperFactory},
@@ -181,10 +167,8 @@ public class Command implements HasUniqueId, HasUsername, HasCommandDto {
      *
      */
     @ToString.Exclude
-    // tag::refguide[]
     @Getter
-    private Command parent;                     // <.>
-    // end::refguide[]
+    private Command parent;
 
     /**
      * For an command that has actually been executed, holds the date/time at
@@ -193,10 +177,8 @@ public class Command implements HasUniqueId, HasUsername, HasCommandDto {
      * @see Interaction#getCurrentExecution()
      * @see Interaction.Execution#getStartedAt()
      */
-    // tag::refguide[]
     @Getter
-    private Timestamp startedAt;                // <.>
-    // end::refguide[]
+    private Timestamp startedAt;
 
     /**
      * For an command that has actually been executed, holds the date/time at which the {@link Interaction} that
@@ -211,10 +193,8 @@ public class Command implements HasUniqueId, HasUsername, HasCommandDto {
      * See also {@link Interaction#getCurrentExecution()} and
      * {@link Interaction.Execution#getCompletedAt()}.
      */
-    // tag::refguide[]
     @Getter
-    private Timestamp completedAt;              // <.>
-    // end::refguide[]
+    private Timestamp completedAt;
 
     /**
      * For a command that has actually been executed, holds a {@link Bookmark}
@@ -228,10 +208,8 @@ public class Command implements HasUniqueId, HasUsername, HasCommandDto {
      * See also  {@link Interaction#getCurrentExecution()} and
      * {@link org.apache.isis.applib.services.iactn.Interaction.Execution#getReturned()}.
      */
-    // tag::refguide[]
     @Getter
-    private Bookmark result;                    // <.>
-    // end::refguide[]
+    private Bookmark result;
 
     /**
      * For a command that has actually been executed, holds the exception stack
@@ -245,10 +223,8 @@ public class Command implements HasUniqueId, HasUsername, HasCommandDto {
      * See also {@link Interaction#getCurrentExecution()} and
      * {@link org.apache.isis.applib.services.iactn.Interaction.Execution#getThrew()}.
      */
-    // tag::refguide[]
     @Getter
-    private Throwable exception;                    // <.>
-    // end::refguide[]
+    private Throwable exception;
 
     /**
      * Whether this command resulted in a change of state to the system.
@@ -262,20 +238,16 @@ public class Command implements HasUniqueId, HasUsername, HasCommandDto {
      * </p>
      *
      */
-    // tag::refguide[]
     @Getter
-    private boolean systemStateChanged;                // <.>
-    // end::refguide[]
+    private boolean systemStateChanged;
 
 
     /**
      * Whether this command has been enabled for dispatching, 
      * that is {@link CommandSubscriber}s will be notified when this Command completes.
      */
-    // tag::refguide[]
     @Getter
     private boolean publishingEnabled;
-    // end::refguide[]
 
     private final Updater UPDATER = new Updater();
 
@@ -378,7 +350,5 @@ public class Command implements HasUniqueId, HasUsername, HasCommandDto {
     }
 
 
-// tag::refguide[]
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/command/CommandExecutorService.java b/api/applib/src/main/java/org/apache/isis/applib/services/command/CommandExecutorService.java
index 4fce410..e07ecf1 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/command/CommandExecutorService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/command/CommandExecutorService.java
@@ -21,28 +21,24 @@ package org.apache.isis.applib.services.command;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.schema.cmd.v2.CommandDto;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 1.x {@index}
+ */
 public interface CommandExecutorService {
 
-    // end::refguide[]
-    // tag::refguide-2[]
     enum SudoPolicy {
 
-        // end::refguide-2[]
         /**
          * For example, regular background commands.
          */
-        // tag::refguide-2[]
         NO_SWITCH,
 
-        // end::refguide-2[]
         /**
          * For example, replayable commands.
          */
-        // tag::refguide-2[]
         SWITCH,
     }
-    // end::refguide-2[]
 
     /**
      * Executes the specified command.
@@ -51,24 +47,22 @@ public interface CommandExecutorService {
      * @param command
      * @return - any exception raised by the command.
      */
-    // tag::refguide[]
     Bookmark executeCommand(
-            SudoPolicy sudoPolicy,                  // <.>
-            Command command                         // <.>
+            SudoPolicy sudoPolicy,
+            Command command
     );
 
     Bookmark executeCommand(
-            SudoPolicy sudoPolicy,                  // <.>
-            CommandDto commandDto,                  // <.>
-            CommandOutcomeHandler outcomeHandler);  // <.>
+            SudoPolicy sudoPolicy,
+            CommandDto commandDto,
+            CommandOutcomeHandler outcomeHandler);
 
     Bookmark executeCommand(
-            Command command                         // <.>
+            Command command
     );
 
     Bookmark executeCommand(
-            CommandDto commandDto,                  // <.>
-            CommandOutcomeHandler outcomeHandler);  // <.>
+            CommandDto commandDto,
+            CommandOutcomeHandler outcomeHandler);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/command/CommandOutcomeHandler.java b/api/applib/src/main/java/org/apache/isis/applib/services/command/CommandOutcomeHandler.java
index b8b8e1c..35a0c14 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/command/CommandOutcomeHandler.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/command/CommandOutcomeHandler.java
@@ -22,6 +22,10 @@ import java.sql.Timestamp;
 
 import org.apache.isis.applib.services.bookmark.Bookmark;
 
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public interface CommandOutcomeHandler {
 
     CommandOutcomeHandler NULL = new CommandOutcomeHandler() {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/HasCommandDto.java b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/HasCommandDto.java
index e485b7a..69ef2c6 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/HasCommandDto.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/HasCommandDto.java
@@ -23,6 +23,7 @@ import org.apache.isis.schema.cmd.v2.CommandDto;
 /**
  * Objects implementing this interface will be processed automatically by
  * {@link org.apache.isis.applib.services.commanddto.conmap.ContentMappingServiceForCommandDto}.
+ * @since 2.0 {@index}
  */
 public interface HasCommandDto {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/conmap/ContentMappingServiceForCommandDto.java b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/conmap/ContentMappingServiceForCommandDto.java
index 2651643..4a85792 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/conmap/ContentMappingServiceForCommandDto.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/conmap/ContentMappingServiceForCommandDto.java
@@ -40,6 +40,10 @@ import org.apache.isis.schema.cmd.v2.CommandDto;
 
 import lombok.val;
 
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isisApplib.ContentMappingServiceForCommandDto")
 @Order(OrderPrecedence.EARLY)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.java b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.java
index 4d491b2..17da652 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.java
@@ -34,6 +34,10 @@ import org.apache.isis.applib.services.conmap.ContentMappingService;
 import org.apache.isis.schema.cmd.v2.CommandDto;
 import org.apache.isis.schema.cmd.v2.CommandsDto;
 
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isisApplib.ContentMappingServiceForCommandsDto")
 @Order(OrderPrecedence.EARLY)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/conmap/UserDataKeys.java b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/conmap/UserDataKeys.java
index 4fc4e59..14f39ee 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/conmap/UserDataKeys.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/conmap/UserDataKeys.java
@@ -24,6 +24,7 @@ import lombok.experimental.UtilityClass;
 
 /**
  * Keys used in {@link CommandDto#getUserData()} to marshall the command's results
+ * @since 2.0 {@index}
  */
 @UtilityClass
 public class UserDataKeys {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessor.java b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessor.java
index a0706ad..0d851b2 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessor.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessor.java
@@ -23,11 +23,11 @@ import org.apache.isis.schema.cmd.v2.CommandDto;
 /**
  * Refine (or possibly ignore) a command when replicating from primary
  * to secondary.
+ * 
+ * @since 1.x {@index}
  */
-// tag::refguide[]
 public interface CommandDtoProcessor {
 
-    // end::refguide[]
     /**
      * The implementation can if necessary refine or alter the
      * {@link CommandDto} to be replicated from primary to secondary.
@@ -41,10 +41,8 @@ public interface CommandDtoProcessor {
      * @return <tt>null</tt> means that the command's DTO is effectively
      *         excluded.
      */
-    // tag::refguide[]
-    CommandDto process(CommandDto commandDto);   // <.>
+    CommandDto process(CommandDto commandDto);
 
-    // end::refguide[]
     /**
      * Convenience implementation to simply indicate that no DTO should be
      * returned for a command, effectively ignoring it for replication purposes.
@@ -56,6 +54,4 @@ public interface CommandDtoProcessor {
         }
     }
 
-    // tag::refguide[]
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessorForActionAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessorForActionAbstract.java
index b887323..9824315 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessorForActionAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessorForActionAbstract.java
@@ -18,7 +18,6 @@
  */
 package org.apache.isis.applib.services.commanddto.processor;
 
-import org.apache.isis.applib.services.command.Command;
 import org.apache.isis.schema.cmd.v2.ActionDto;
 import org.apache.isis.schema.cmd.v2.CommandDto;
 import org.apache.isis.schema.cmd.v2.ParamDto;
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessorForPropertyAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessorForPropertyAbstract.java
index e833809..10691cf 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessorForPropertyAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/CommandDtoProcessorForPropertyAbstract.java
@@ -18,7 +18,6 @@
  */
 package org.apache.isis.applib.services.commanddto.processor;
 
-import org.apache.isis.applib.services.command.Command;
 import org.apache.isis.schema.cmd.v2.CommandDto;
 import org.apache.isis.schema.cmd.v2.PropertyDto;
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/spi/CommandDtoProcessorService.java b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/spi/CommandDtoProcessorService.java
index c645d04..c118e1d 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/spi/CommandDtoProcessorService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/spi/CommandDtoProcessorService.java
@@ -19,22 +19,17 @@
 package org.apache.isis.applib.services.commanddto.processor.spi;
 
 import javax.annotation.Nullable;
-import javax.inject.Named;
 
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.applib.services.commanddto.processor.CommandDtoProcessor;
 import org.apache.isis.applib.services.commanddto.conmap.ContentMappingServiceForCommandDto;
+import org.apache.isis.applib.services.commanddto.processor.CommandDtoProcessor;
 import org.apache.isis.schema.cmd.v2.CommandDto;
 
 /**
  * Optional SPI called by {@link ContentMappingServiceForCommandDto}.
  *
  * Similar to {@link CommandDtoProcessor}, but applied to all {@link CommandDto}s globally.
+ * @since 1.x {@index}
  */
-// tag::refguide[]
 public interface CommandDtoProcessorService {
 
     /**
@@ -48,5 +43,4 @@ public interface CommandDtoProcessorService {
 
 
 }
-// end::refguide[]
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/spi/CommandDtoProcessorServiceIdentity.java b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/spi/CommandDtoProcessorServiceIdentity.java
index bf43bc1..390b9c6 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/spi/CommandDtoProcessorServiceIdentity.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/commanddto/processor/spi/CommandDtoProcessorServiceIdentity.java
@@ -28,6 +28,8 @@ import org.apache.isis.schema.cmd.v2.CommandDto;
 
 /**
  * At least one implementation is required.
+ * 
+ * @since 2.0 {@index}
  */
 @Service
 @Named("isisApplib.CommandDtoProcessorServiceIdentity")
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationMenu.java b/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationMenu.java
index 695ff8e..51655ab 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationMenu.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationMenu.java
@@ -35,12 +35,12 @@ import org.apache.isis.applib.annotation.SemanticsOf;
 @Named("isisApplib.ConfigurationMenu")
 @DomainService(objectType = "isisApplib.ConfigurationMenu")
 @DomainServiceLayout(menuBar = DomainServiceLayout.MenuBar.TERTIARY)
-// tag::refguide[]
-// ...
+/**
+ * 
+ * @since 1.x {@index}
+ */
 public class ConfigurationMenu {
 
-    // ...
-    // end::refguide[]
     public static abstract class ActionDomainEvent
             extends IsisModuleApplib.ActionDomainEvent<ConfigurationMenu> {}
 
@@ -62,10 +62,8 @@ public class ConfigurationMenu {
             cssClassFa = "fa-wrench"
     )
     @MemberOrder(sequence = "500.900.1")
-    // tag::refguide[]
     public Set<ConfigurationProperty> configuration(){
         return configurationService.allProperties();
     }
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationProperty.java b/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationProperty.java
index 9bffce9..e270eae 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationProperty.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationProperty.java
@@ -35,7 +35,10 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 @XmlRootElement(name = "configurationProperty")
 @XmlType(
         propOrder = {
@@ -72,4 +75,3 @@ public class ConfigurationProperty implements Comparable<ConfigurationProperty>
     }
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationViewService.java b/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationViewService.java
index 91fdfec..2fb60e0 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationViewService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/confview/ConfigurationViewService.java
@@ -21,16 +21,16 @@ package org.apache.isis.applib.services.confview;
 
 import java.util.Set;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public interface ConfigurationViewService {
 
-    // end::refguide[]
     /**
      * Returns all properties, each as an instance of {@link ConfigurationProperty} (a view model).
      * Mask sensitive values if required.
      */
-    // tag::refguide[]
     Set<ConfigurationProperty> allProperties();
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/conmap/ContentMappingService.java b/api/applib/src/main/java/org/apache/isis/applib/services/conmap/ContentMappingService.java
index f9076bb..4782e77 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/conmap/ContentMappingService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/conmap/ContentMappingService.java
@@ -24,26 +24,24 @@ import java.util.stream.Collectors;
 
 import javax.ws.rs.core.MediaType;
 
-import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.commons.internal.base._NullSafe;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public interface ContentMappingService {
 
-    // end::refguide[]
     /**
      * Typically for mapping from a domain object to a DTO.
      */
-    // tag::refguide[]
     Object map(
-            Object object,                                  // <.>
-            final List<MediaType> acceptableMediaTypes);    // <.>
+            Object object,
+            final List<MediaType> acceptableMediaTypes);
 
-    // end::refguide[]
     /**
      * Convenience utilities for implementations of {@link ContentMappingService}.
      */
-    // tag::refguide-2[]
     public static class Util {
 
         public static String determineDomainType(final List<MediaType> acceptableMediaTypes) {
@@ -69,8 +67,5 @@ public interface ContentMappingService {
             return clazz.getName().equals(domainType);
         }
     }
-    // end::refguide-2[]
 
-    // tag::refguide[]
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/email/EmailService.java b/api/applib/src/main/java/org/apache/isis/applib/services/email/EmailService.java
index e5960e7..53a3d7f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/email/EmailService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/email/EmailService.java
@@ -24,8 +24,6 @@ import java.util.List;
 import javax.activation.DataSource;
 import javax.annotation.PostConstruct;
 
-import org.apache.isis.applib.annotation.Programmatic;
-
 /**
  * Provides the ability to send emails to one or more recipients.
  *
@@ -33,8 +31,9 @@ import org.apache.isis.applib.annotation.Programmatic;
  * The core framework also provides a default implementation <tt>EmailServiceDefault</tt> that sends email as an
  * HTML message, using an external SMTP provider.  See the Isis website for further details.
  * </p>
+ * 
+ * @since 1.x {@index}
  */
-// tag::refguide[]
 public interface EmailService extends Serializable {
 
     @PostConstruct
@@ -42,12 +41,9 @@ public interface EmailService extends Serializable {
 
     boolean send(List<String> to, List<String> cc, List<String> bcc, String subject, String body, DataSource... attachments);
 
-    // end::refguide[]
     /**
      * Whether this service has been configured and thus available for use.
      */
-    // tag::refguide[]
     boolean isConfigured();
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/error/ErrorDetails.java b/api/applib/src/main/java/org/apache/isis/applib/services/error/ErrorDetails.java
index 7c0c333..013d746 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/error/ErrorDetails.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/error/ErrorDetails.java
@@ -30,26 +30,24 @@ import lombok.Getter;
  * <p>
  *     Implementation note: a class has been used here so that additional fields might be added in the future.
  * </p>
+ * 
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 @AllArgsConstructor
 public class ErrorDetails {
 
     @Getter
-    private final String mainMessage;                           // <.>
+    private final String mainMessage;
     @Getter
-    private final boolean recognized;                           // <.>
+    private final boolean recognized;
     @Getter
-    private final boolean authorizationCause;                   // <.>
+    private final boolean authorizationCause;
     @Getter
-    private final List<String> stackTraceDetailListCombined;    // <.>
-    // end::refguide[]
+    private final List<String> stackTraceDetailListCombined;
     /**
      * One per exception cause.
      */
-    // tag::refguide[]
     @Getter
     private final List<List<String>> stackTraceDetailPerCause;
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/error/ErrorReportingService.java b/api/applib/src/main/java/org/apache/isis/applib/services/error/ErrorReportingService.java
index afc5951..b078043 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/error/ErrorReportingService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/error/ErrorReportingService.java
@@ -22,11 +22,11 @@ package org.apache.isis.applib.services.error;
  * 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.
+ * 
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public interface ErrorReportingService {
 
     Ticket reportError(final ErrorDetails errorDetails);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/error/Ticket.java b/api/applib/src/main/java/org/apache/isis/applib/services/error/Ticket.java
index b4066eb..4d2294f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/error/Ticket.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/error/Ticket.java
@@ -30,17 +30,15 @@ import java.io.Serializable;
  *         <li>the class is {@link Serializable}</li> so that it can be stored by the Wicket viewer as a Wicket model.
  *     </ul>
  * </p>
+ * 
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public interface Ticket extends Serializable {
 
-    // end::refguide[]
-    // tag::refguide-2[]
     enum StackTracePolicy {
         SHOW,
         HIDE
     }
-    // end::refguide-2[]
 
     /**
      * A unique identifier that the end-user can use to track any follow-up from this error.
@@ -50,10 +48,8 @@ public interface Ticket extends Serializable {
      *     which case the {@link #getReference() reference} would be the JIRA issue number <tt>XXX-1234</tt>.
      * </p>
      */
-    // tag::refguide[]
-    String getReference();                  // <.>
+    String getReference();
 
-    // end::refguide[]
     /**
      * Message to display to the user.
      *
@@ -61,10 +57,8 @@ public interface Ticket extends Serializable {
      *     Typically this message should be short, one line long.
      * </p>
      */
-    // tag::refguide[]
-    String getUserMessage();                // <.>
+    String getUserMessage();
 
-    // end::refguide[]
     /**
      * Optional additional details to show to the end-user.
      *
@@ -73,10 +67,8 @@ public interface Ticket extends Serializable {
      *     details on contacting the help desk if the issue is severe and requires immediate attention.
      * </p>
      */
-    // tag::refguide[]
-    String getDetails();                    // <.>
+    String getDetails();
 
-    // end::refguide[]
     /**
      * Whether the stack trace for the exception should be displayed or be hidden.
      *
@@ -85,15 +77,11 @@ public interface Ticket extends Serializable {
      *     the support team, meaning there's no need to expose this info to the end-user.
      * </p>
      */
-    // tag::refguide[]
-    StackTracePolicy getStackTracePolicy(); // <.>
+    StackTracePolicy getStackTracePolicy();
 
-    // end::refguide[]
     /**
      * Returns a Html representation of this ticket.
      */
-    // tag::refguide[]
-    String getMarkup();                     // <.>
+    String getMarkup();
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/eventbus/EventBusService.java b/api/applib/src/main/java/org/apache/isis/applib/services/eventbus/EventBusService.java
index 1fe0c70..cefc1db 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/eventbus/EventBusService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/eventbus/EventBusService.java
@@ -20,12 +20,12 @@ package org.apache.isis.applib.services.eventbus;
 
 /**
  * A service implementing an Event Bus, allowing arbitrary events to be posted.
+ * 
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public interface EventBusService {
 
     void post(Object event);
 
 }
-// end::refguide[]
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizer.java b/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizer.java
index f51628f..16bb95d 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizer.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizer.java
@@ -30,7 +30,6 @@ import lombok.RequiredArgsConstructor;
 import lombok.Value;
 import lombok.val;
 
-
 /**
  * Domain service to (attempt) to recognize certain
  * exceptions, and return user-friendly messages instead.
@@ -57,11 +56,11 @@ import lombok.val;
  * <p>
  * Initially introduced for the Wicket viewer; check the documentation
  * of other viewers to determine whether they also support this service.
+ * 
+ * @since 1.x {@index}
  */
-// tag::refguide[]
 public interface ExceptionRecognizer {
 
-    // end::refguide[]
     /**
      * (Attempt to) recognize the exception and return a user-friendly
      * message to render instead.
@@ -72,75 +71,55 @@ public interface ExceptionRecognizer {
      * {@link org.apache.isis.applib.services.exceprecog.ExceptionRecognizer.Category category}
      * and reason that will be included with the user-friendly message.
      */
-    // tag::refguide[]
-    Optional<Recognition> recognize(Throwable ex);  // <.>
+    Optional<Recognition> recognize(Throwable ex);
 
-    // end::refguide[]
-    // tag::refguide-1[]
     @RequiredArgsConstructor
     enum Category {
-        // end::refguide-1[]
         /**
          * A violation of some declarative constraint (eg uniqueness or referential integrity) was detected.
          */
-        // tag::refguide-1[]
-        CONSTRAINT_VIOLATION(                                           // <.>
+        CONSTRAINT_VIOLATION(
                 "violation of some declarative constraint"),
-        // end::refguide-1[]
         /**
          * The object to be acted upon cannot be found (404)
          */
-        // tag::refguide-1[]
-        NOT_FOUND(                                                      // <.>
+        NOT_FOUND(
                 "object not found"),
-        // end::refguide-1[]
         /**
          * A concurrency exception, in other words some other user has changed this object.
          */
-        // tag::refguide-1[]
-        CONCURRENCY(                                                    // <.>
+        CONCURRENCY(
                 "concurrent modification"),
-        // end::refguide-1[]
         /**
          * Recognized, but for some other reason... 40x error
          */
-        // tag::refguide-1[]
-        CLIENT_ERROR(                                                   // <.>
+        CLIENT_ERROR(
                 "client side error"),
-        // end::refguide-1[]
         /**
          * 50x error
          */
-        // tag::refguide-1[]
-        SERVER_ERROR(                                                   // <.>
+        SERVER_ERROR(
                 "server side error"),
-        // end::refguide-1[]
         /**
          * Recognized, but uncategorized (typically: a recognizer of the original ExceptionRecognizer API).
          */
-        // tag::refguide-1[]
-        OTHER(                                                          // <.>
+        OTHER(
                 "other")
         ;
 
         @Getter
         private final String friendlyName;
     }
-    // end::refguide-1[]
 
-    // tag::refguide-2[]
     @Value
     class Recognition {
 
-        // end::refguide-2[]
         /**
          * @return optionally a recognition of the specified type, based on a whether given reason is non-null
          */
-        // tag::refguide-2[]
         public static Optional<Recognition> of(
                 @Nullable final Category category,
                 @Nullable final String reason) {
-            // end::refguide-2[]
 
             if(reason==null) {
                 return Optional.empty();
@@ -148,7 +127,6 @@ public interface ExceptionRecognizer {
 
             val nonNullCategory = category!=null? category: Category.OTHER;
             return Optional.of(new Recognition(nonNullCategory, reason));
-            // tag::refguide-2[]
             // ...
         }
 
@@ -156,22 +134,18 @@ public interface ExceptionRecognizer {
         @NonNull private final String reason;
 
         public String toMessage(@Nullable TranslationService translationService) {
-            // end::refguide-2[]
 
             val categoryLiteral = translate(getCategory().getFriendlyName(), translationService);
             val reasonLiteral = translate(getReason(), translationService);
 
             return String.format("[%s]: %s", categoryLiteral, reasonLiteral);
-            // tag::refguide-2[]
             // ...
         }
         
         public String toMessageNoCategory(@Nullable TranslationService translationService) {
-            // end::refguide-2[]
 
             val reasonLiteral = translate(getReason(), translationService);
             return String.format("%s", reasonLiteral);
-            // tag::refguide-2[]
             // ...
         }
         
@@ -186,8 +160,5 @@ public interface ExceptionRecognizer {
         }
         
     }
-    // end::refguide-2[]
 
-    // tag::refguide[]
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerAbstract.java
index 3c18948..f4ac54e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerAbstract.java
@@ -26,7 +26,6 @@ import java.util.function.UnaryOperator;
 
 import javax.inject.Inject;
 
-import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.commons.internal.base._NullSafe;
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerService.java b/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerService.java
index d5e359c..48a8825 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/ExceptionRecognizerService.java
@@ -25,22 +25,17 @@ import org.apache.isis.commons.collections.Can;
 
 /**
  * 
- * @since 2.0
- *
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public interface ExceptionRecognizerService {
 
-    // end::refguide[]
     /**
      *
      * @return all ExceptionRecognizer implementations as discovered by the IoC container,
      * honoring order of precedence.
      */
-    // tag::refguide[]
     Can<ExceptionRecognizer> getExceptionRecognizers();
 
-    // end::refguide[]
     /**
      * Takes into consideration ExceptionRecognizers as given by {@link #getExceptionRecognizers()}.
      *
@@ -48,12 +43,10 @@ public interface ExceptionRecognizerService {
      * @return optionally a recognition object, that describes both the category and reason,
      * that will be included with the user-friendly message.
      */
-    // tag::refguide[]
     default Optional<Recognition> recognize(Exception ex) {
         return recognizeFromSelected(getExceptionRecognizers(), ex);
     }
 
-    // end::refguide[]
     /**
      * Takes into consideration ExceptionRecognizers as given by {@code recognizers}.
      *
@@ -62,8 +55,6 @@ public interface ExceptionRecognizerService {
      * @return optionally a recognition object, that describes both the category and reason,
      * that will be included with the user-friendly message.
      */
-    // tag::refguide[]
     Optional<Recognition> recognizeFromSelected(Can<ExceptionRecognizer> recognizers, Exception ex);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/TranslatableException.java b/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/TranslatableException.java
index 1e70cbc..0cff16a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/TranslatableException.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/exceprecog/TranslatableException.java
@@ -29,11 +29,10 @@ import org.apache.isis.applib.services.i18n.TranslatableString;
  *     rule (<code>ExceptionRecognizerTranslations</code>) that will exercise any thrown exceptions,
  *     ensuring tha the message is captured in the <code>translations.po</code> file so that it can be translated.
  * </p>
+ * @since 1.x {@index}
  */
-// tag::refguide[]
 public interface TranslatableException {
 
-    // end::refguide[]
     /**
      * In the spirit of {@link Exception#getLocalizedMessage()}, but using {@link org.apache.isis.applib.services.i18n.TranslatableString} instead.
      *
@@ -44,16 +43,12 @@ public interface TranslatableException {
      *     accept a {@link org.apache.isis.applib.services.i18n.TranslatableString}, but can be left as null for any existing code.
      * </p>
      */
-    // tag::refguide[]
     TranslatableString getTranslatableMessage();
 
-    // end::refguide[]
     /**
      * The context to use when translating the {@link #getTranslatableMessage() translatable message},
      * as ultimately passed through to {@link org.apache.isis.applib.services.i18n.TranslationService#translate(String, String)}.
      */
-    // tag::refguide[]
     String getTranslationContext();
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/factory/FactoryService.java b/api/applib/src/main/java/org/apache/isis/applib/services/factory/FactoryService.java
index 1047915..6fb3e92 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/factory/FactoryService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/factory/FactoryService.java
@@ -33,10 +33,8 @@ import lombok.NonNull;
  * @since 2.x {@index}
  *
  */
-// tag::refguide[]
 public interface FactoryService {
 
-    // end::refguide[]
     /**
      * General purpose factory method, to automatically get or create an instance of
      * {@code requiredType}.
@@ -56,10 +54,8 @@ public interface FactoryService {
      * @since 2.0
      *
      */
-    // tag::refguide[]
-    <T> T getOrCreate(@NonNull Class<T> requiredType); // <.>
+    <T> T getOrCreate(@NonNull Class<T> requiredType);
 
-    // end::refguide[]
     /**
      * Gets an instance (possibly shared or independent) of the specified {@code requiredType},
      * with injection points resolved
@@ -76,10 +72,8 @@ public interface FactoryService {
      * @apiNote does not force the requiredType to be added to the meta-model
      * @since 2.0
      */
-    // tag::refguide[]
-    <T> T get(@NonNull Class<T> requiredType); // <.>
+    <T> T get(@NonNull Class<T> requiredType);
 
-    // end::refguide[]
     /**
      * Creates a new detached entity instance, with injection points resolved
      * and defaults applied.
@@ -91,10 +85,8 @@ public interface FactoryService {
      * @apiNote forces the domainClass to be added to the meta-model if not already
      * @since 2.0
      */
-    // tag::refguide[]
-    <T> T detachedEntity(@NonNull Class<T> domainClass); // <.>
+    <T> T detachedEntity(@NonNull Class<T> domainClass);
     
-    // end::refguide[]
     /**
      * Creates a new detached entity instance, with injection points resolved.
      *
@@ -105,10 +97,8 @@ public interface FactoryService {
      * @apiNote forces the domainClass to be added to the meta-model if not already
      * @since 2.0
      */
-    // tag::refguide[]
-    <T> T detachedEntity(@NonNull T entity); // <.>
+    <T> T detachedEntity(@NonNull T entity);
 
-    // end::refguide[]
     /**
      * Creates a new Mixin instance, with injection points resolved.
      *
@@ -119,10 +109,8 @@ public interface FactoryService {
      * @throws IllegalArgumentException if mixinClass is not a mixin type
      * @apiNote forces the mixinClass to be added to the meta-model if not already
      */
-    // tag::refguide[]
-    <T> T mixin(@NonNull Class<T> mixinClass, @NonNull Object mixedIn); // <.>
+    <T> T mixin(@NonNull Class<T> mixinClass, @NonNull Object mixedIn);
 
-    // end::refguide[]
     /**
      * Creates a new ViewModel instance, with injection points resolved,
      * and initialized according to the given {@code mementoStr}
@@ -133,10 +121,8 @@ public interface FactoryService {
      * @apiNote forces the viewModelClass to be added to the meta-model if not already
      * @since 2.0
      */
-    // tag::refguide[]
-    <T> T viewModel(@NonNull Class<T> viewModelClass, @Nullable String mementoStr);  // <.>
+    <T> T viewModel(@NonNull Class<T> viewModelClass, @Nullable String mementoStr);
 
-    // end::refguide[]
     /**
      * Creates a new ViewModel instance,
      * with injection points resolved
@@ -146,12 +132,10 @@ public interface FactoryService {
      * @apiNote forces the viewModelClass to be added to the meta-model if not already
      * @since 2.0
      */
-    // tag::refguide[]
-    default <T> T viewModel(@NonNull Class<T> viewModelClass) {                      // <.>
+    default <T> T viewModel(@NonNull Class<T> viewModelClass) {
         return viewModel(viewModelClass, /*mementoStr*/null);
     }
     
-    // end::refguide[]
     /**
      * Resolves injection points for given ViewModel instance.
      * @param viewModel - most likely just new-ed up, without injection points resolved
@@ -159,10 +143,8 @@ public interface FactoryService {
      * @apiNote forces the viewModel's class to be added to the meta-model if not already
      * @since 2.0
      */
-    // tag::refguide[]
-    <T> T viewModel(@NonNull T viewModel); // <.>
+    <T> T viewModel(@NonNull T viewModel);
 
-    // end::refguide[]
     /**
      * Creates a new instance of the specified class,
      * with injection points resolved
@@ -173,9 +155,7 @@ public interface FactoryService {
      * @apiNote forces the domainClass to be added to the meta-model if not already
      * @since 2.0
      */
-    // tag::refguide[]
-    <T> T create(@NonNull Class<T> domainClass); // <.>
-    // end::refguide[]
+    <T> T create(@NonNull Class<T> domainClass);
 
     // -- DEPRECATIONS
 
@@ -215,6 +195,4 @@ public interface FactoryService {
         return getOrCreate(domainClass);
     }
 
-    // tag::refguide[]
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridLoaderService.java b/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridLoaderService.java
index 1bd467e..2bad18d 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridLoaderService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridLoaderService.java
@@ -18,52 +18,43 @@
  */
 package org.apache.isis.applib.services.grid;
 
-import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.layout.grid.Grid;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public interface GridLoaderService {
 
-    // end::refguide[]
     /**
      * Whether dynamic reloading of layouts is enabled.
      */
-    // tag::refguide[]
-    boolean supportsReloading();                    // <.>
+    boolean supportsReloading();
 
-    // end::refguide[]
     /**
      * To support metamodel invalidation/rebuilding of spec.
      */
-    // tag::refguide[]
-    void remove(Class<?> domainClass);              // <.>
+    void remove(Class<?> domainClass);
 
-    // end::refguide[]
     /**
      * Whether any persisted layout metadata (eg a <code>.layout.xml</code> file) exists for this domain class.
      */
-    // tag::refguide[]
-    boolean existsFor(Class<?> domainClass);        // <.>
+    boolean existsFor(Class<?> domainClass);
 
-    // end::refguide[]
     /**
      * Returns a new instance of a {@link Grid} for the specified domain class, eg from a
      * <code>layout.xml</code> file, else <code>null</code>.
      */
-    // tag::refguide[]
-    default Grid load(final Class<?> domainClass) { // <.>
+    default Grid load(final Class<?> domainClass) {
         return load(domainClass, null);
     }
 
-    // end::refguide[]
     /**
      * Returns a new instance of a {@link Grid} for the specified domain class, eg from a
      * <code>layout.xml</code> file, else <code>null</code>.
      */
-    // tag::refguide[]
-    Grid load(                                      // <.>
+    Grid load(
             final Class<?> domainClass,
             String layout);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridService.java b/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridService.java
index eced5e0..a0a490a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridService.java
@@ -25,54 +25,44 @@ import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.layout.grid.Grid;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public interface GridService {
 
-    // end::refguide[]
     /**
      * Whether dynamic reloading of layouts is enabled.
      */
-    // tag::refguide[]
-    boolean supportsReloading();                    // <.>
+    boolean supportsReloading();
 
-    // end::refguide[]
     /**
      * To support metamodel invalidation/rebuilding of spec.
      */
-    // tag::refguide[]
-    void remove(Class<?> domainClass);              // <.>
+    void remove(Class<?> domainClass);
 
-    // end::refguide[]
     /**
      * Whether any persisted layout metadata (eg a <code>.layout.xml</code> file) exists for this domain class.
      */
-    // tag::refguide[]
-    boolean existsFor(Class<?> domainClass);        // <.>
+    boolean existsFor(Class<?> domainClass);
 
-    // end::refguide[]
     /**
      * Returns a new instance of a {@link Grid} for the specified domain class, eg from a
      * <code>layout.xml</code> file, else <code>null</code>.
      */
-    // tag::refguide[]
-    Grid load(final Class<?> domainClass);          // <.>
+    Grid load(final Class<?> domainClass);
 
-    // end::refguide[]
     /**
      * Returns a new instance of a {@link Grid} for the specified domain class, eg from a
      * <code>[domainClass].layout.[layout].xml</code> file, else <code>null</code>.
      */
-    // tag::refguide[]
-    Grid load(Class<?> domainClass, String layout); // <.>
+    Grid load(Class<?> domainClass, String layout);
 
-    // end::refguide[]
     /**
      * Returns a default grid; eg where none can be loaded using {@link #load(Class)}.
      */
-    // tag::refguide[]
-    Grid defaultGridFor(Class<?> domainClass);      // <.>
+    Grid defaultGridFor(Class<?> domainClass);
 
-    // end::refguide[]
     /**
      * Returns a normalized grid for the domain class obtained previously using {@link #load(Class)}.
      *
@@ -87,10 +77,8 @@ public interface GridService {
      *     <code>layout.xml</code> file takes precedence over any annotations.
      * </p>
      */
-    // tag::refguide[]
-    Grid normalize(final Grid grid);                // <.>
+    Grid normalize(final Grid grid);
 
-    // end::refguide[]
     /**
      * Modifies the provided {@link Grid} with additional metadata, broadly speaking corresponding to the
      * {@link DomainObjectLayout}, {@link ActionLayout}, {@link PropertyLayout} and {@link CollectionLayout}.
@@ -101,10 +89,8 @@ public interface GridService {
      *     to be required in the domain class itself.
      * </p>
      */
-    // tag::refguide[]
-    Grid complete(Grid grid);                       // <.>
+    Grid complete(Grid grid);
 
-    // end::refguide[]
     /**
      * Modifies the provided {@link Grid}, removing all metadata except the basic grid structure.
      *
@@ -117,8 +103,6 @@ public interface GridService {
      * @param grid
      * @return
      */
-    // tag::refguide[]
-    Grid minimal(Grid grid);                        // <.>
+    Grid minimal(Grid grid);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridSystemService.java b/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridSystemService.java
index 1e246f2..442b207 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridSystemService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/grid/GridSystemService.java
@@ -18,39 +18,33 @@
  */
 package org.apache.isis.applib.services.grid;
 
-import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.layout.grid.Grid;
 
 /**
  * Provides an implementation of {@link Grid}.
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public interface GridSystemService<G extends Grid> {
 
-    // end::refguide[]
     /**
      * Which grid (implementation) is defined by this service.
      */
-    // tag::refguide[]
-    Class<G> gridImplementation();                  // <.>
+    Class<G> gridImplementation();
 
-    String tns();                                   // <.>
+    String tns();
 
-    String schemaLocation();                        // <.>
+    String schemaLocation();
 
-    G defaultGrid(Class<?> domainClass);            // <.>
+    G defaultGrid(Class<?> domainClass);
 
-    // end::refguide[]
     /**
      * Validate the grid, derive any missing object members, and overwrite any facets in the metamodel based on the
      * layout.
      */
-    // tag::refguide[]
-    void normalize(G grid, Class<?> domainClass);   // <.>
+    void normalize(G grid, Class<?> domainClass);
 
-    void complete(G grid, Class<?> domainClass);    // <.>
+    void complete(G grid, Class<?> domainClass);
 
-    void minimal(G grid, Class<?> domainClass);     // <.>
+    void minimal(G grid, Class<?> domainClass);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/health/Health.java b/api/applib/src/main/java/org/apache/isis/applib/services/health/Health.java
index a125837..be810bf 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/health/Health.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/health/Health.java
@@ -21,7 +21,10 @@ package org.apache.isis.applib.services.health;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 @AllArgsConstructor
 public class Health {
 
@@ -42,4 +45,3 @@ public class Health {
 
     public boolean getResult() { return message == null && cause == null; }
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/health/HealthCheckService.java b/api/applib/src/main/java/org/apache/isis/applib/services/health/HealthCheckService.java
index b55fac4..faf6b4e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/health/HealthCheckService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/health/HealthCheckService.java
@@ -18,14 +18,14 @@
  */
 package org.apache.isis.applib.services.health;
 
-import org.apache.isis.applib.annotation.Programmatic;
-
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public interface HealthCheckService {
 
     Health check();
 
 }
-// end::refguide[]
 
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/hint/HintStore.java b/api/applib/src/main/java/org/apache/isis/applib/services/hint/HintStore.java
index 36d5b98..f147584 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/hint/HintStore.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/hint/HintStore.java
@@ -21,27 +21,24 @@ package org.apache.isis.applib.services.hint;
 import java.util.Set;
 
 import org.apache.isis.applib.services.bookmark.Bookmark;
-
-// tag::refguide[]
+/**
+ * 
+ * @since 1.x {@index}
+ */
 public interface HintStore {
 
-    // end::refguide[]
-    // tag::refguide-1[]
     interface HintIdProvider {
         String hintId();
     }
-    // end::refguide-1[]
-    // tag::refguide[]
 
-    String get(final Bookmark bookmark, String hintKey);                // <.>
+    String get(final Bookmark bookmark, String hintKey);
 
-    void set(final Bookmark bookmark, String hintKey, String value);    // <.>
+    void set(final Bookmark bookmark, String hintKey, String value);
 
-    void remove(final Bookmark bookmark, String hintKey);               // <.>
+    void remove(final Bookmark bookmark, String hintKey);
 
-    void removeAll(Bookmark bookmark);                                  // <.>
+    void removeAll(Bookmark bookmark);
 
-    Set<String> findHintKeys(Bookmark bookmark);                        // <.>
+    Set<String> findHintKeys(Bookmark bookmark);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/homepage/HomePageResolverService.java b/api/applib/src/main/java/org/apache/isis/applib/services/homepage/HomePageResolverService.java
index a4a7f6b..2125bba 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/homepage/HomePageResolverService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/homepage/HomePageResolverService.java
@@ -23,12 +23,10 @@ import org.apache.isis.applib.annotation.HomePage;
 /**
  * Returns a view model annotated with {@link HomePage}.
  *
- * @since 2.0
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public interface HomePageResolverService {
 
     Object getHomePage();
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/i18n/LocaleProvider.java b/api/applib/src/main/java/org/apache/isis/applib/services/i18n/LocaleProvider.java
index d56380d..763e558 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/i18n/LocaleProvider.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/i18n/LocaleProvider.java
@@ -20,10 +20,12 @@ package org.apache.isis.applib.services.i18n;
 
 import java.util.Locale;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public interface LocaleProvider {
 
     Locale getLocale();
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslatableString.java b/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslatableString.java
index b3c950d..a6f560e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslatableString.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslatableString.java
@@ -24,15 +24,16 @@ import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.annotation.Value;
 import org.apache.isis.commons.internal.collections._Lists;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 1.x {@index}
+ */
 @Value
 public final class TranslatableString {
 
-    // end::refguide[]
     // -- tr, trn (factory methods); constructor
 
     /**
@@ -41,22 +42,18 @@ public final class TranslatableString {
      * @param pattern - pattern for all (singular and plural) form, with <code>${xxx}</code> placeholders
      * @param paramArgs - parameter/argument pairs (string and object, string and object, ...)
      */
-    // tag::refguide[]
     public static TranslatableString tr(
             final String pattern,
             final Object... paramArgs) {
-        // end::refguide[]
 
         if(pattern == null) {
             return null;
         }
         return new TranslatableString(Type.TR, pattern, null, 1, asMap(paramArgs));
 
-        // tag::refguide[]
         // ...
     }
 
-    // end::refguide[]
     /**
      * A translatable string with different patterns for singular and plural forms, selected automatically by the number
      *
@@ -65,7 +62,6 @@ public final class TranslatableString {
      * @param number - whether to use singular or plural form when rendering
      * @param paramArgs - parameter/argument pairs (string and object, string and object, ...)
      */
-    // tag::refguide[]
     public static TranslatableString trn(
             final String singularPattern,
             final String pluralPattern,
@@ -74,11 +70,9 @@ public final class TranslatableString {
 
         return new TranslatableString(Type.TRN, singularPattern, pluralPattern, number, asMap(paramArgs));
 
-        // tag::refguide[]
         // ...
     }
 
-    // end::refguide[]
     /**
      * Converts a list of objects [a, 1, b, 2] into a map {a -> 1; b -> 2}
      */
@@ -196,7 +190,6 @@ public final class TranslatableString {
      * @param context
      * @return
      */
-    // tag::refguide[]
     public String translate(final TranslationService translationService, final String context) {
 
         final String translatedText =
@@ -206,7 +199,6 @@ public final class TranslatableString {
                 return translated(translatedText);
     }
 
-    // end::refguide[]
     /**
      * The text to be translated; depends on whether {@link #isPluralForm()} and whether to be translated.
      *
@@ -220,11 +212,9 @@ public final class TranslatableString {
      *     {@link Exception#getMessage() message} when only a translatable message has been provided.
      * </p>
      */
-    // tag::refguide[]
     public String getPattern() {
         return !isPluralForm() || number == 1 ? getSingularText() : getPluralText();
     }
-    // end::refguide[]
 
     String translated(final String translatedText) {
         return format(translatedText, argumentsByParameterName);
@@ -287,6 +277,4 @@ public final class TranslatableString {
         return type.toString(this);
     }
 
-    // tag::refguide[]
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslationService.java b/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslationService.java
index c413f15..4934e36 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslationService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslationService.java
@@ -21,10 +21,12 @@ package org.apache.isis.applib.services.i18n;
 import java.util.Objects;
 import java.util.function.Predicate;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 1.x {@index}
+ */
 public interface TranslationService {
 
-    // end::refguide[]
     /**
      * Return a translation of the text, in the locale of the &quot;current user&quot;.
      *
@@ -36,12 +38,10 @@ public interface TranslationService {
      * @param text
      * @return
      */
-    // tag::refguide[]
-    String translate(                   // <.>
+    String translate(
             final String context,
             final String text);
 
-    // end::refguide[]
     /**
      * Return a translation of either the singular or the plural text, dependent on the <tt>num</tt> parameter,
      * in the locale of the &quot;current user&quot;.
@@ -56,42 +56,32 @@ public interface TranslationService {
      * @param num - whether to return the translation of the singular (if =1) or of the plural (if != 1)
      * @return
      */
-    // tag::refguide[]
-    String translate(                   // <.>
+    String translate(
             final String context,
             final String singularText,
             final String pluralText,
             int num);
 
-    // end::refguide[]
-    // tag::refguide-1[]
     enum Mode {
         DISABLED
-            // end::refguide-1[]
             (
                 configValue->
                     ("disable".equalsIgnoreCase(configValue) ||
                      "disabled".equalsIgnoreCase(configValue))
             )
-            // tag::refguide-1[]
         , READ
-            // end::refguide-1[]
             (
                 configValue->
                     ("read".equalsIgnoreCase(configValue) ||
                      "reader".equalsIgnoreCase(configValue))
             )
-            // tag::refguide-1[]
         , WRITE
-            // end::refguide-1[]
             (
                 configValue ->
                     !READ.matches(configValue) &&
                     !DISABLED.matches(configValue)
             )
         ;
-        // tag::refguide-1[]
-        // end::refguide-1[]
 
         // -- handle values from configuration
 
@@ -115,9 +105,7 @@ public interface TranslationService {
             return this == DISABLED;
         }
 
-        // tag::refguide-1[]
     }
-    // end::refguide-1[]
 
     /**
      * Whether this implementation is operating in read or in write mode.
@@ -137,8 +125,6 @@ public interface TranslationService {
      *     such that all pathways are exercised..
      * </p>
      */
-    // tag::refguide[]
-    Mode getMode();                     // <.>
+    Mode getMode();
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslationsResolver.java b/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslationsResolver.java
index 9a06bde..9a68d73 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslationsResolver.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslationsResolver.java
@@ -20,12 +20,12 @@ package org.apache.isis.applib.services.i18n;
 
 import java.util.List;
 
-import org.apache.isis.applib.annotation.Programmatic;
-
-// tag::refguide[]
+/**
+ * 
+ * @since 1.x {@index}
+ */
 public interface TranslationsResolver {
 
     List<String> readLines(final String file);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/iactn/ExecutionContext.java b/api/applib/src/main/java/org/apache/isis/applib/services/iactn/ExecutionContext.java
index 2265b69..cbfa51a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/iactn/ExecutionContext.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/iactn/ExecutionContext.java
@@ -35,7 +35,7 @@ import lombok.With;
 /**
  * Provides the user and scenario specific environment for an {@link Interaction.Execution}
  * 
- * @since 2.0
+ * @since 2.0 {@index}
  */
 @Value @Builder
 @RequiredArgsConstructor
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java b/api/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java
index 906c194..973111e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java
@@ -71,69 +71,55 @@ import lombok.val;
  *     the {@link Command} object itself.
  * </p>
  *
+ * 
+ * @since 1.x revised for 2.0 {@index}
  */
-// tag::refguide[]
 public interface Interaction extends HasUniqueId {
 
-    Command getCommand();                  // <.>
+    Command getCommand();
 
-    // end::refguide[]
 
     /**
      * The current (most recently pushed) {@link Execution}.
      */
-    // tag::refguide[]
-    Execution<?,?> getCurrentExecution();        // <.>
+    Execution<?,?> getCurrentExecution();
 
-    // end::refguide[]
     /**
      * The execution that preceded the current one.
      */
-    // tag::refguide[]
-    Execution<?,?> getPriorExecution();          // <.>
+    Execution<?,?> getPriorExecution();
 
-    // end::refguide[]
 
     /**
      * Enumerates the different reasons why multiple occurrences of a certain type might occur within a single
      * (top-level) interaction.
      */
-    // tag::refguide-1[]
     public enum Sequence {
 
-        // end::refguide-1[]
         /**
          * Each interaction is either an action invocation or a property edit.  There could be multiple of these,
          * typically as the result of a nested calls using the {@link WrapperFactory}.  Another reason is
          * support for bulk action invocations within a single transaction.
          */
-        // tag::refguide-1[]
         INTERACTION,
 
-        // end::refguide-1[]
         /**
          * For objects: multiple such could be dirtied and thus published as separate events.  For actions
          * invocations/property edits : multiple sub-invocations could occur if sub-invocations are made through the
          * {@link WrapperFactory}.
          */
-        // tag::refguide-1[]
         PUBLISHED_EVENT,
 
-        // end::refguide-1[]
         /**
          * There may be multiple transactions within a given interaction.
          */
-        // tag::refguide-1[]
         TRANSACTION,
         ;
-        // end::refguide-1[]
 
         public String id() {
             return Interaction.Sequence.class.getName() + "#" + name();
         }
-        // tag::refguide-1[]
     }
-    // end::refguide-1[]
 
     /**
      * Generates numbers in a named sequence.
@@ -141,17 +127,14 @@ public interface Interaction extends HasUniqueId {
      * 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 {@link Sequence} enum.
      */
-    // tag::refguide[]
-    int next(final String sequenceId);      // <.>
+    int next(final String sequenceId);
     
-    // end::refguide[]
 
 
     /**
      * Represents an action invocation/property edit as a node in a call-stack execution graph, with sub-interactions
      * being made by way of the {@link WrapperFactory}).
      */
-    // tag::refguide-2[]
     public static abstract class Execution<T extends MemberExecutionDto, E extends AbstractDomainEvent<?>> {
 
         @Getter
@@ -161,31 +144,24 @@ public interface Interaction extends HasUniqueId {
         @Getter
         private final String memberIdentifier;
 
-        // end::refguide-2[]
         /**
          * The target of the action invocation.  If this interaction is for a mixin action, then will be the
          * mixed-in target (not the transient mixin itself).
          */
-        // tag::refguide-2[]
         @Getter
         private final Object target;
 
-        // end::refguide-2[]
         /**
          * A human-friendly description of the class of the target object.
          */
-        // tag::refguide-2[]
         @Getter
         private final String targetClass;
 
-        // end::refguide-2[]
         /**
          * The human-friendly name of the action invoked/property edited on the target object.
          */
-        // tag::refguide-2[]
         @Getter
         private final String targetMember;
-        // end::refguide-2[]
 
 
         /**
@@ -220,11 +196,9 @@ public interface Interaction extends HasUniqueId {
         /**
          * The action/property that invoked this action/property edit (if any).
          */
-        // tag::refguide-2[]
         @Getter
         private Execution<?,?> parent;
 
-        // end::refguide-2[]
         /**
          * <b>NOT API</b>: intended to be called only by the framework.
          */
@@ -238,17 +212,13 @@ public interface Interaction extends HasUniqueId {
         /**
          * The actions/property edits made in turn via the {@link WrapperFactory}.
          */
-        // tag::refguide-2[]
         public List<Execution<?,?>> getChildren() {
-            // end::refguide-2[]
 
             return Collections.unmodifiableList(children);
 
-            // tag::refguide-2[]
             // ...
         }
 
-        // end::refguide-2[]
         /**
          * The domain event fired on the {@link EventBusService event bus} representing the execution of
          * this action invocation/property edit.
@@ -259,11 +229,9 @@ public interface Interaction extends HasUniqueId {
          *     {@link AbstractDomainEvent.Phase#EXECUTING executing} phase.
          * </p>
          */
-        // tag::refguide-2[]
         @Getter
         private E event;
 
-        // end::refguide-2[]
         /**
          * <b>NOT API</b>: intended to be called only by the framework.
          */
@@ -274,32 +242,26 @@ public interface Interaction extends HasUniqueId {
         /**
          * The date/time at which this execution started.
          */
-        // tag::refguide-2[]
         @Getter
         private Timestamp startedAt;
 
-        // end::refguide-2[]
         /**
          * The date/time at which this execution completed.
          */
-        // tag::refguide-2[]
         @Getter
         private Timestamp completedAt;
 
         public Timestamp start(
                 final ClockService clockService,
                 final MetricsService metricsService) {
-            // end::refguide-2[]
 
             val startedAt = clockService.getClock().javaSqlTimestamp();
             syncMetrics(When.BEFORE, startedAt, metricsService);
             return startedAt;
 
-            // tag::refguide-2[]
             // ...
         }
 
-        // end::refguide-2[]
         /**
          * <b>NOT API</b>: intended to be called only by the framework.
          */
@@ -320,11 +282,9 @@ public interface Interaction extends HasUniqueId {
          * For <tt>void</tt> methods and for actions returning collections, the value
          * will be <tt>null</tt>.
          */
-        // tag::refguide-2[]
         @Getter
         private Object returned;
 
-        // end::refguide-2[]
         /**
          * <b>NOT API</b>: intended to be called only by the framework.
          */
@@ -332,11 +292,9 @@ public interface Interaction extends HasUniqueId {
             this.returned = returned;
         }
 
-        // tag::refguide-2[]
         @Getter
         private Exception threw;
 
-        // end::refguide-2[]
         /**
          * <b>NOT API</b>: intended to be called only by the framework.
          */
@@ -356,11 +314,9 @@ public interface Interaction extends HasUniqueId {
          *     {@link Execution#getReturned()}) will (obviously) still be null.
          * </p>
          */
-        // tag::refguide-2[]
         @Getter
         private T dto;
 
-        // end::refguide-2[]
         /**
          * <b>NOT API</b>: Set by framework (implementation of {@link MemberExecutor})
          */
@@ -371,10 +327,8 @@ public interface Interaction extends HasUniqueId {
 
         // -- helpers (syncMetrics)
 
-        // tag::refguide-2a[]
         enum When {
             BEFORE {
-                // end::refguide-2a[]
 
                 @Override
                 void syncMetrics(
@@ -388,11 +342,9 @@ public interface Interaction extends HasUniqueId {
                     execution.numberObjectsDirtiedBefore = numberObjectsLoaded;
                 }
 
-                // tag::refguide-2a[]
                 // ....
             },
             AFTER {
-                // end::refguide-2a[]
 
                 @Override void syncMetrics(
                         final Execution<?, ?> execution,
@@ -416,10 +368,8 @@ public interface Interaction extends HasUniqueId {
                     numberObjectsDirtiedFor(objectCountsDto).setAfter(numberObjectsDirtied);
                 }
 
-                // tag::refguide-2a[]
                 // ....
             };
-            // end::refguide-2a[]
 
             // -- helpers
 
@@ -448,9 +398,7 @@ public interface Interaction extends HasUniqueId {
                     final Timestamp timestamp,
                     final int numberObjectsLoaded,
                     final int numberObjectsDirtied);
-            // tag::refguide-2a[]
         }
-        // end::refguide-2a[]
 
         private void syncMetrics(
                 final When when,
@@ -463,16 +411,12 @@ public interface Interaction extends HasUniqueId {
             when.syncMetrics(this, timestamp, numberObjectsLoaded, numberObjectsDirtied);
         }
 
-        // tag::refguide-2[]
     }
-    // end::refguide-2[]
 
-    // tag::refguide-3[]
     public static class ActionInvocation extends Execution<ActionInvocationDto, ActionDomainEvent<?>> {
 
         @Getter
         private final List<Object> args;
-        // end::refguide-3[]
 
         public ActionInvocation(
                 final Interaction interaction,
@@ -484,17 +428,13 @@ public interface Interaction extends HasUniqueId {
             super(interaction, InteractionType.ACTION_INVOCATION, memberId, target, targetMember, targetClass);
             this.args = args;
         }
-        // tag::refguide-3[]
         // ...
     }
-    // end::refguide-3[]
 
-    // tag::refguide-4[]
     public static class PropertyEdit extends Execution<PropertyEditDto, PropertyDomainEvent<?,?>> {
 
         @Getter
         private final Object newValue;
-        // end::refguide-4[]
 
         public PropertyEdit(
                 final Interaction interaction,
@@ -507,11 +447,7 @@ public interface Interaction extends HasUniqueId {
             this.newValue = newValue;
         }
 
-        // tag::refguide-4[]
         // ...
     }
-    // end::refguide-4[]
 
-    // tag::refguide[]
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/iactn/InteractionContext.java b/api/applib/src/main/java/org/apache/isis/applib/services/iactn/InteractionContext.java
index e065578..524883f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/iactn/InteractionContext.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/iactn/InteractionContext.java
@@ -24,19 +24,16 @@ import org.apache.isis.commons.internal.exceptions._Exceptions;
 
 /**
  * Provides the current thread's {@link Interaction}.
- *
+ * 
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public interface InteractionContext {
 
-    // end::refguide[]
 
     /**
      * Optionally, the currently active {@link Interaction} for the calling thread.
      */
-    // tag::refguide[]
-    Optional<Interaction> currentInteraction();    // <.>
-    // end::refguide[]
+    Optional<Interaction> currentInteraction();
 
     // -- SHORTCUTS
     
@@ -45,7 +42,5 @@ public interface InteractionContext {
     			.illegalState("No InteractionSession on current thread"));
     }
     
-    // tag::refguide[]
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/inject/ServiceInjector.java b/api/applib/src/main/java/org/apache/isis/applib/services/inject/ServiceInjector.java
index dcfee4a..f86f79f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/inject/ServiceInjector.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/inject/ServiceInjector.java
@@ -31,15 +31,13 @@ import lombok.val;
  * Implementation must be thread-safe.
  * </p>
  * 
- * @since 2.0
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public interface ServiceInjector {
 
     <T> T injectServicesInto(final T domainObject, Consumer<InjectionPoint> onNotResolvable);
 
     default <T> T injectServicesInto(final T domainObject) {
-        // end::refguide[]
 
         return injectServicesInto(domainObject, injectionPoint->{
 
@@ -53,9 +51,7 @@ public interface ServiceInjector {
             throw new NoSuchElementException(msg);
         });
 
-        // tag::refguide[]
         // ...
     }
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java b/api/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
index 637f5b9..c986544 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
@@ -37,48 +37,46 @@ import lombok.NonNull;
 import lombok.SneakyThrows;
 import lombok.val;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public interface JaxbService {
 
-    default Object fromXml(                             // <.>
+    default Object fromXml(
             JAXBContext jaxbContext,
             String xml) {
         return fromXml(jaxbContext, xml, null);
     }
 
-    Object fromXml(                                     // <.>
+    Object fromXml(
             JAXBContext jaxbContext,
             String xml,
             @Nullable Map<String,Object> unmarshallerProperties);
 
-    // end::refguide[]
     /**
      * As {@link #fromXml(JAXBContext, String)}, but downcast to a specific type.
      */
-    // tag::refguide[]
-    default <T> T fromXml(Class<T> domainClass, String xml) { // <.>
+    default <T> T fromXml(Class<T> domainClass, String xml) {
         return fromXml(domainClass, xml, null);
     }
 
-    // end::refguide[]
     /**
      * As {@link #fromXml(JAXBContext, String, Map)}, but downcast to a specific type.
      */
-    // tag::refguide[]
-    <T> T fromXml(                                      // <.>
+    <T> T fromXml(
             Class<T> domainClass,
             String xml,
             @Nullable Map<String,Object> unmarshallerProperties);
 
-    default String toXml(Object domainObject) {         // <.>
+    default String toXml(Object domainObject) {
         return toXml(domainObject, null);
     }
         
-    String toXml(                                       // <.>
+    String toXml(
             Object domainObject,
             @Nullable Map<String,Object> marshallerProperties);
 
-    // end::refguide[]
     /**
      * Controls whether, when generating {@link #toXsd(Object, IsisSchemas) XML schemas},
      * any of the common Isis schemas (in the namespace <code>http://org.apache.isis.schema</code>) should be included
@@ -92,11 +90,9 @@ public interface JaxbService {
      *     <a href="http://isis.apache.org/schema">downloaded</a> from the Isis website.
      * </p>
      */
-    // tag::refguide[]
     enum IsisSchemas {
         INCLUDE,
         IGNORE;
-        // end::refguide[]
 
         /**
          * Implementation note: not using subclasses, otherwise the key in translations.po becomes more complex.
@@ -108,14 +104,12 @@ public interface JaxbService {
                 return namespaceUri.matches(".*isis\\.apache\\.org.*");
             }
         }
-        // tag::refguide[]
     }
 
-    Map<String, String> toXsd(                 // <.>
+    Map<String, String> toXsd(
             Object domainObject, 
             IsisSchemas isisSchemas);
 
-    // end::refguide[]
     class Simple implements JaxbService {
 
         @Override @SneakyThrows @Nullable
@@ -237,6 +231,4 @@ public interface JaxbService {
         
     }
 
-    // tag::refguide[]
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutService.java b/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutService.java
index c18724a..0c20c7f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutService.java
@@ -22,18 +22,18 @@ import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.layout.grid.Grid;
 import org.apache.isis.applib.services.menu.MenuBarsService;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public interface LayoutService {
 
-    // end::refguide[]
     /**
      * Mode of operation when downloading a layout file (while prototyping). It affects the way the file's
      * content is assembled. Once a layout file is in place, its layout data takes precedence over any
      * conflicting layout data from annotations.
      */
-    // tag::refguide-1[]
     enum Style {
-        // end::refguide-1[]
         /**
          * The current layout for the domain class.
          * <p>
@@ -43,9 +43,7 @@ public interface LayoutService {
          * {@link org.apache.isis.applib.services.grid.GridService#defaultGridFor(Class) default grid},
          * also {@link org.apache.isis.applib.services.grid.GridService#normalize(Grid) normalized}.
          */
-        // tag::refguide-1[]
         CURRENT,
-        // end::refguide-1[]
         /**
          * As per {@link #NORMALIZED}, but also with all (non-null) facets for all
          * properties/collections/actions also included included in the grid.
@@ -57,9 +55,7 @@ public interface LayoutService {
          * <li>{@code @ActionLayout, @PropertyLayout, @CollectionLayout}: <b>serialized as XML</b></li>
          * </ul>
          */
-        // tag::refguide-1[]
         COMPLETE,
-        // end::refguide-1[]
         /**
          * Default, whereby missing properties/collections/actions are added to regions,
          * and unused/empty regions are removed/trimmed.
@@ -72,9 +68,7 @@ public interface LayoutService {
          * <li>{@code @ActionLayout, @PropertyLayout, @CollectionLayout}: <b>ignored</b></li>
          * </ul>
          */
-        // tag::refguide-1[]
         NORMALIZED,
-        // end::refguide-1[]
         /**
          * As per {@link #NORMALIZED}, but with no properties/collections/actions.
          * <p>
@@ -86,31 +80,23 @@ public interface LayoutService {
          * <li>{@code @ActionLayout, @PropertyLayout, @CollectionLayout}: <b>ignored</b></li>
          * </ul>
          */
-        // tag::refguide-1[]
         MINIMAL
     }
-    // end::refguide-1[]
 
     /**
      * Obtains the serialized XML form of the layout (grid) for the specified domain class.
      */
-    // tag::refguide[]
-    String toXml(Class<?> domainClass, Style style);        // <.>
+    String toXml(Class<?> domainClass, Style style);
 
-    // end::refguide[]
     /**
      * Obtains a zip file of the serialized XML of the layouts (grids) of all domain entities and view models.
      */
-    // tag::refguide[]
-    byte[] toZip(final Style style);                        // <.>
+    byte[] toZip(final Style style);
 
-    // end::refguide[]
     /**
      * Obtains the serialized XML form of the menu bars layout ({@link MenuBarsService}).
      * @param type - either the current menubars (could be loaded from a file) or the fallback (obtained from metamodel facets)
      */
-    // tag::refguide[]
-    String toMenuBarsXml(final MenuBarsService.Type type);  // <.>
+    String toMenuBarsXml(final MenuBarsService.Type type);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java b/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java
index 821fe33..f06e936 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java
@@ -37,17 +37,18 @@ import org.apache.isis.applib.value.Blob;
 import org.apache.isis.applib.value.Clob;
 import org.apache.isis.commons.internal.base._Strings;
 
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 @Named("isisApplib.LayoutServiceMenu")
 @DomainService(objectType = "isisApplib.LayoutServiceMenu")
 @DomainServiceLayout(
         named = "Prototyping",
         menuBar = DomainServiceLayout.MenuBar.SECONDARY
         )
-// tag::refguide[]
-// ...
 public class LayoutServiceMenu {
 
-    // end::refguide[]
     public static abstract class ActionDomainEvent
     extends IsisModuleApplib.ActionDomainEvent<LayoutServiceMenu> {}
 
@@ -73,21 +74,17 @@ public class LayoutServiceMenu {
             named = "Download Object Layouts (ZIP)"
             )
     @MemberOrder(sequence="500.400.1")
-    // tag::refguide[]
     // ...
     public Blob downloadLayouts(final LayoutService.Style style) {
-        // end::refguide[]
 
         final String fileName = "layouts." + style.name().toLowerCase() + ".zip";
 
         final byte[] zipBytes = layoutService.toZip(style);
         return new Blob(fileName, mimeTypeApplicationZip, zipBytes);
 
-        // tag::refguide[]
         // ...
     }
 
-    // end::refguide[]
     public LayoutService.Style default0DownloadLayouts() {
         return LayoutService.Style.NORMALIZED;
     }
@@ -104,20 +101,16 @@ public class LayoutServiceMenu {
             named = "Download Menu Bars Layout (XML)"
             )
     @MemberOrder(sequence="500.400.2")
-    // tag::refguide[]
     // ...
     public Clob downloadMenuBarsLayout(
             @ParameterLayout(named = "File name") final String fileName,
             final MenuBarsService.Type type) {
-        // end::refguide[]
 
         final String xml = layoutService.toMenuBarsXml(type);
 
         return new Clob(_Strings.asFileNameWithExtension(fileName,  ".xml"), "text/xml", xml);
-        // tag::refguide[]
         // ...
     }
-    // end::refguide[]
 
     public String default0DownloadMenuBarsLayout() {
         return "menubars.layout.xml";
@@ -126,9 +119,7 @@ public class LayoutServiceMenu {
     public MenuBarsService.Type default1DownloadMenuBarsLayout() {
         return MenuBarsService.Type.DEFAULT;
     }
-    // tag::refguide[]
 
     @Inject LayoutService layoutService;
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/linking/DeepLinkService.java b/api/applib/src/main/java/org/apache/isis/applib/services/linking/DeepLinkService.java
index 76c1ac2..856cf1a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/linking/DeepLinkService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/linking/DeepLinkService.java
@@ -20,8 +20,6 @@ package org.apache.isis.applib.services.linking;
 
 import java.net.URI;
 
-import org.apache.isis.applib.annotation.Programmatic;
-
 /**
  * A service that creates a web link to any domain object in one of the Isis viewers.
  *
@@ -29,17 +27,15 @@ import org.apache.isis.applib.annotation.Programmatic;
  *     The implementation is specific to the viewer(s) configured for Isis.  At the time of writing only one
  *     implementation is available, for the Wicket viewer.
  * </p>
+ * 
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public interface DeepLinkService {
 
-    // end::refguide[]
     /**
      * Creates a URI that can be used to obtain a representation of the provided domain object in one of the
      * Isis viewers.
      */
-    // tag::refguide[]
-    URI deepLinkFor(Object domainObject);   // <.>
+    URI deepLinkFor(Object domainObject);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsLoaderService.java b/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsLoaderService.java
index 72c86c7..5019617 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsLoaderService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsLoaderService.java
@@ -18,25 +18,22 @@
  */
 package org.apache.isis.applib.services.menu;
 
-import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.layout.menubars.bootstrap3.BS3MenuBars;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public interface MenuBarsLoaderService {
 
-    // end::refguide[]
     /**
      * Whether dynamic reloading of layouts is enabled.
      */
-    // tag::refguide[]
-    boolean supportsReloading();    // <.>
+    boolean supportsReloading();
 
-    // end::refguide[]
     /**
      * Returns a new instance of a {@link BS3MenuBars}, else <tt>null</tt>.
      */
-    // tag::refguide[]
-    BS3MenuBars menuBars();         // <.>
+    BS3MenuBars menuBars();
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsService.java b/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsService.java
index 042318b..5a02544 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/menu/MenuBarsService.java
@@ -20,41 +20,35 @@ package org.apache.isis.applib.services.menu;
 
 import org.apache.isis.applib.layout.menubars.MenuBars;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public interface MenuBarsService {
 
-    // end::refguide[]
-    // tag::refguide-1[]
     enum Type {
 
-        // end::refguide-1[]
         /**
          * Either derived from annotations or as obtained elsewhere
          * (eg using the {@link MenuBarsLoaderService} if the
          * default implementation of this service is in use).
          */
-        // tag::refguide-1[]
         DEFAULT,
 
-        // end::refguide-1[]
         /**
          * As derived from annotations.
          */
-        // tag::refguide-1[]
         FALLBACK
     }
-    // end::refguide-1[]
 
 
     /**
      * Returns {@link #menuBars()} with a type of {@link Type#DEFAULT}.
      * @return
      */
-    // tag::refguide[]
-    default MenuBars menuBars() {           // <.>
+    default MenuBars menuBars() {
         return menuBars(Type.DEFAULT);
     }
 
-    MenuBars menuBars(final Type type);     // <.>
+    MenuBars menuBars(final Type type);
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/message/MessageService.java b/api/applib/src/main/java/org/apache/isis/applib/services/message/MessageService.java
index dbbb094..fefcaf6 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/message/MessageService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/message/MessageService.java
@@ -19,13 +19,14 @@
 
 package org.apache.isis.applib.services.message;
 
-import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.services.i18n.TranslatableString;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public interface MessageService {
 
-    // end::refguide[]
     /**
      * Make the specified message available to the user. Note this will probably
      * be displayed in transitory fashion, so is only suitable for useful but
@@ -35,10 +36,8 @@ public interface MessageService {
      * @see #warnUser(String)
      * @see #raiseError(String)
      */
-    // tag::refguide[]
-    void informUser(String message);            // <.>
+    void informUser(String message);
 
-    // end::refguide[]
     /**
      * Make the specified message available to the user, translated (if possible) to user's locale.
      *
@@ -52,22 +51,18 @@ public interface MessageService {
      * @see #warnUser(org.apache.isis.applib.services.i18n.TranslatableString, Class, String)
      * @see #raiseError(org.apache.isis.applib.services.i18n.TranslatableString, Class, String)
      */
-    // tag::refguide[]
-    String informUser(                          // <.>
+    String informUser(
             TranslatableString message,
             final Class<?> contextClass,
             final String contextMethod);
 
-    // end::refguide[]
     /**
      * Override of {@link MessageService#informUser(TranslatableString, Class, String)}, but with last two parameters combined into a context string.
      */
-    // tag::refguide[]
-    String informUser(                          // <.>
+    String informUser(
             TranslatableString message,
             final String translationContext);
 
-    // end::refguide[]
     /**
      * Warn the user about a situation with the specified message. The container
      * should guarantee to display this warning to the user, and will typically
@@ -77,10 +72,8 @@ public interface MessageService {
      * @see #raiseError(String)
      * @see #informUser(String)
      */
-    // tag::refguide[]
-    void warnUser(String message);              // <.>
+    void warnUser(String message);
 
-    // end::refguide[]
     /**
      * Warn the user about a situation with the specified message, translated (if possible) to user's locale.
      *
@@ -94,22 +87,18 @@ public interface MessageService {
      * @see #informUser(org.apache.isis.applib.services.i18n.TranslatableString, Class, String)
      * @see #raiseError(org.apache.isis.applib.services.i18n.TranslatableString, Class, String)
      */
-    // tag::refguide[]
-    String warnUser(                            // <.>
+    String warnUser(
             TranslatableString message,
             final Class<?> contextClass,
             final String contextMethod);
 
-    // end::refguide[]
     /**
      * Override of {@link MessageService#warnUser(TranslatableString, Class, String)}, but with last two parameters combined into a context string.
      */
-    // tag::refguide[]
-    String warnUser(                            // <.>
+    String warnUser(
             TranslatableString message,
             final String translationContext);
 
-    // end::refguide[]
     /**
      * Notify the user of an application error with the specified message. Note
      * this will probably be displayed in an alarming fashion, so is only
@@ -119,10 +108,8 @@ public interface MessageService {
      * @see #warnUser(String)
      * @see #informUser(String)
      */
-    // tag::refguide[]
-    void raiseError(String message);            // <.>
+    void raiseError(String message);
 
-    // end::refguide[]
     /**
      * Notify the user of an application error with the specified message, translated (if possible) to user's locale.
      *
@@ -136,20 +123,16 @@ public interface MessageService {
      * @see #informUser(org.apache.isis.applib.services.i18n.TranslatableString, Class, String)
      * @see #warnUser(org.apache.isis.applib.services.i18n.TranslatableString, Class, String)
      */
-    // tag::refguide[]
-    String raiseError(                          // <.>
+    String raiseError(
             TranslatableString message,
             final Class<?> contextClass,
             final String contextMethod);
 
-    // end::refguide[]
     /**
      * Override of {@link MessageService#raiseError(TranslatableString, Class, String)}, but with last two parameters combined into a context string.
      */
-    // tag::refguide[]
-    String raiseError(                          // <.>
+    String raiseError(
             TranslatableString message,
             final String translationContext);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/BeanSort.java b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/BeanSort.java
index adf5290..6e03872 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/BeanSort.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/BeanSort.java
@@ -20,19 +20,17 @@ package org.apache.isis.applib.services.metamodel;
 
 /**
  * Top level object classification.
+ * 
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public enum BeanSort {
-    // end::refguide[]
     /**
      * 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}
      */
-    // tag::refguide[]
     VIEW_MODEL,
-    // end::refguide[]
     /**
      * Persistable object, associated with a persistence layer/context.
      * <p>
@@ -40,47 +38,35 @@ public enum BeanSort {
      * with a persistence layer. <p>  see also {@link #VIEW_MODEL}
      *
      */
-    // tag::refguide[]
     ENTITY_JDO, ENTITY_JPA,
-    // end::refguide[]
     /**
      * Injectable object, associated with a lifecycle context
      * (application-scoped, request-scoped, ...).
      * <p>
      * to be introspected: YES
      */
-    // tag::refguide[]
     MANAGED_BEAN_CONTRIBUTING,
-    // end::refguide[]
     /**
      * Injectable object, associated with a lifecycle context
      * (application-scoped, request-scoped, ...).
      * <p>
      * to be introspected: NO
      */
-    // tag::refguide[]
     MANAGED_BEAN_NOT_CONTRIBUTING,
-    // end::refguide[]
     /**
      * Object associated with an 'entity' or 'bean' to act as contributer of
      * domain actions or properties. Might also be stateful similar to VIEW_MODEL.
      */
-    // tag::refguide[]
     MIXIN,
-    // end::refguide[]
     /**
      * Immutable, serializable object.
      */
-    // tag::refguide[]
     VALUE,
-    // end::refguide[]
     /**
      * Container of objects.
      */
-    // tag::refguide[]
     COLLECTION,
     UNKNOWN;
-    // end::refguide[]
 
     // -- SIMPLE PREDICATES
 
@@ -139,7 +125,5 @@ public enum BeanSort {
     }
 
 
-    // tag::refguide[]
     // ...
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/DomainMember.java b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/DomainMember.java
index eb6596b..100cbc4 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/DomainMember.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/DomainMember.java
@@ -18,7 +18,10 @@
  */
 package org.apache.isis.applib.services.metamodel;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 1.x {@index}
+ */
 public interface DomainMember extends Comparable<DomainMember> {
 
     String getClassType();
@@ -42,4 +45,3 @@ public interface DomainMember extends Comparable<DomainMember> {
     String getAutoComplete();
     String getDefault();
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/DomainModel.java b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/DomainModel.java
index 2a0127d..7472d3f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/DomainModel.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/DomainModel.java
@@ -20,10 +20,12 @@ package org.apache.isis.applib.services.metamodel;
 
 import java.util.List;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 1.x {@index}
+ */
 public interface DomainModel {
 
     List<DomainMember> getDomainMembers();
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java
index 840ea50..0812c00 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java
@@ -22,8 +22,6 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Set;
 
-import org.springframework.boot.autoconfigure.data.web.SpringDataWebProperties.Sort;
-
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.commanddto.processor.CommandDtoProcessor;
@@ -38,27 +36,22 @@ import lombok.val;
  * <p>
  * This API is currently extremely limited, but the intention is to extend it gradually as use cases emerge.
  * </p>
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public interface MetaModelService {
 
-    // end::refguide[]
     /**
      * Provides a reverse lookup of a domain class' object type, as defined by {@link DomainObject#objectType()} (or any other mechanism that corresponds to Isis' <code>ObjectSpecIdFacet</code>).
      */
-    // tag::refguide[]
-    Class<?> fromObjectType(final String objectType);   // <.>
+    Class<?> fromObjectType(final String objectType);
 
-    // end::refguide[]
     /**
      * Provides a lookup of a domain class' object type, as defined by {@link DomainObject#objectType()} (or any other mechanism that corresponds to Isis' <code>ObjectSpecIdFacet</code>).
      */
-    // tag::refguide[]
-    String toObjectType(final Class<?> domainType);     // <.>
+    String toObjectType(final Class<?> domainType);
 
-    void rebuild(final Class<?> domainType);            // <.>
+    void rebuild(final Class<?> domainType);
 
-    // end::refguide[]
     /**
      * Returns a list of representations of each of member of each domain class.
      *
@@ -71,42 +64,32 @@ public interface MetaModelService {
      * </p>
      *
      */
-    // tag::refguide[]
-    DomainModel getDomainModel();                       // <.>
+    DomainModel getDomainModel();
 
-    BeanSort sortOf(Class<?> domainType, Mode mode);    // <.>
+    BeanSort sortOf(Class<?> domainType, Mode mode);
 
-    BeanSort sortOf(Bookmark bookmark, Mode mode);      // <.>
+    BeanSort sortOf(Bookmark bookmark, Mode mode);
 
-    CommandDtoProcessor commandDtoProcessorFor(         // <.>
+    CommandDtoProcessor commandDtoProcessorFor(
                             String logicalMemberIdentifier);
 
-    // end::refguide[]
-    // tag::refguide-1[]
     enum Mode {
-        // end::refguide-1[]
         /**
          * If the {@link #sortOf(Class, Mode) sort of} object type is unknown, then throw an exception.
          */
-        // tag::refguide-1[]
         STRICT,
-        // end::refguide-1[]
         /**
          * If the {@link #sortOf(Class, Mode) sort of} object type is unknown, then return {@link BeanSort#UNKNOWN}.
          */
-        // tag::refguide-1[]
         RELAXED
     }
-    // end::refguide-1[]
 
-    // tag::refguide-2[]
     class Config {
         private static final int IGNORE_NOOP_FACETS = 1;
         private static final int IGNORE_INTERFACES = 2;
         private static final int IGNORE_ABSTRACT_CLASSES = 4;
         private static final int IGNORE_BUILT_IN_VALUE_TYPES = 8;
         private static final int IGNORE_MIXINS = 16;
-        // end::refguide-2[]
 
         private static final String WILDCARD = "*";
 
@@ -162,13 +145,11 @@ public interface MetaModelService {
          * this {@code Config}'s packagePrefixes.
          * @param packagePrefix - prefix to be added
          */
-        // tag::refguide-2[]
         public Config withPackagePrefix(final String packagePrefix) {
             val newPrefixes = _Sets.newHashSet(this.packagePrefixes);
             newPrefixes.add(packagePrefix);
             return new Config(mask, newPrefixes);
         }
-        // end::refguide-2[]
 
         public boolean isIgnoreNoop() {
             return hasFlag(IGNORE_NOOP_FACETS);
@@ -192,13 +173,9 @@ public interface MetaModelService {
             return (mask & x) == x;
         }
 
-        // tag::refguide-2[]
         // ...
     }
-    // end::refguide-2[]
 
-    // tag::refguide[]
-    MetamodelDto exportMetaModel(final Config config);  // <.>
+    MetamodelDto exportMetaModel(final Config config);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelServiceMenu.java b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelServiceMenu.java
index f08df3f..0dab57e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelServiceMenu.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelServiceMenu.java
@@ -47,16 +47,18 @@ import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Sets;
 import org.apache.isis.schema.metamodel.v2.MetamodelDto;
 
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 @Named("isisApplib.MetaModelServiceMenu")
 @DomainService(objectType = "isisApplib.MetaModelServiceMenu")
 @DomainServiceLayout(
         named = "Prototyping",
         menuBar = DomainServiceLayout.MenuBar.SECONDARY
 )
-// tag::refguide[]
 public class MetaModelServiceMenu {
 
-    // end::refguide[]
     public static abstract class ActionDomainEvent extends IsisModuleApplib.ActionDomainEvent<MetaModelServiceMenu> { }
 
     final MimeType mimeTypeTextCsv;
@@ -83,12 +85,10 @@ public class MetaModelServiceMenu {
             named = "Download Meta Model (CSV)"
             )
     @MemberOrder(sequence="500.500.2")
-    // tag::refguide[]
     // ...
     public Clob downloadMetaModelCsv(
             @ParameterLayout(named = ".csv file name")
             final String csvFileName) {
-        // end::refguide[]
 
         final DomainModel domainMembers =  metaModelService.getDomainModel();
         final List<String> list = asList(domainMembers);
@@ -98,11 +98,9 @@ public class MetaModelServiceMenu {
                 withSuffix(csvFileName, "csv"),
                 mimeTypeTextCsv, buf.toString().toCharArray());
 
-        // tag::refguide[]
         // ...
     }
 
-    // end::refguide[]
 
     public String default0DownloadMetaModelCsv() {
         return "metamodel.csv";
@@ -119,7 +117,6 @@ public class MetaModelServiceMenu {
             named = "Download Meta Model (XML)"
             )
     @MemberOrder(sequence="500.500.2")
-    // tag::refguide[]
     // ...
     public Clob downloadMetaModelXml(
             @ParameterLayout(named = ".xml file name")
@@ -131,7 +128,6 @@ public class MetaModelServiceMenu {
             @Parameter(optionality=Optionality.MANDATORY)
             final boolean ignoreInterfaces
             ) {
-        // end::refguide[]
 
         MetaModelService.Config config =
                 new MetaModelService.Config()
@@ -152,10 +148,8 @@ public class MetaModelServiceMenu {
         final String xml = jaxbService.toXml(metamodelDto);
         return new Clob(_Strings.asFileNameWithExtension(fileName,  ".xml"), "text/xml", xml);
 
-        // tag::refguide[]
         // ...
     }
-    // end::refguide[]
 
     public String validateDownloadMetaModelXml(
             final String fileName, final List<String> packagePrefixes, final boolean ignoreInterfaces) {
@@ -243,7 +237,6 @@ public class MetaModelServiceMenu {
         return fileName;
     }
 
-    // tag::refguide[]
 
     // ...
 
@@ -253,4 +246,3 @@ public class MetaModelServiceMenu {
     JaxbService jaxbService;
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/metrics/MetricsService.java b/api/applib/src/main/java/org/apache/isis/applib/services/metrics/MetricsService.java
index cdb128a..effcb2f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/metrics/MetricsService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/metrics/MetricsService.java
@@ -21,10 +21,12 @@ package org.apache.isis.applib.services.metrics;
 import org.apache.isis.applib.services.iactn.InteractionContext;
 import org.apache.isis.schema.ixn.v2.MemberExecutionDto;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public interface MetricsService {
 
-    // end::refguide[]
     /**
      * The number of entities that have, so far in this request, been loaded from the database.
      * <p>
@@ -32,10 +34,8 @@ public interface MetricsService {
      * <p>
      * Is captured within {@link MemberExecutionDto#getMetrics()} (accessible from {@link InteractionContext#currentInteraction()}).
      */
-    // tag::refguide[]
-    int numberEntitiesLoaded();      // <.>
+    int numberEntitiesLoaded();
 
-    // end::refguide[]
     /**
      * 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.
@@ -44,10 +44,8 @@ public interface MetricsService {
      * <p>
      * Is captured within {@link MemberExecutionDto#getMetrics()} (accessible from {@link InteractionContext#currentInteraction()}.
      */
-    // tag::refguide[]
-    int numberEntitiesDirtied();     // <.>
+    int numberEntitiesDirtied();
 
 }
-// end::refguide[]
 
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/CommandLogger.java b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/CommandLogger.java
index 42fa526..23c8e06 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/CommandLogger.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/CommandLogger.java
@@ -31,6 +31,10 @@ import org.apache.isis.applib.services.publishing.spi.CommandSubscriber;
 
 import lombok.extern.log4j.Log4j2;
 
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isisApplib.CommandLogger")
 @Order(OrderPrecedence.LATE)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/EntityChangesLogger.java b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/EntityChangesLogger.java
index 54977f2..2831e8f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/EntityChangesLogger.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/EntityChangesLogger.java
@@ -33,6 +33,10 @@ import org.apache.isis.schema.chg.v2.ChangesDto;
 
 import lombok.extern.log4j.Log4j2;
 
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isisApplib.EntityChangesLogger")
 @Order(OrderPrecedence.LATE)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/EntityPropertyChangeLogger.java b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/EntityPropertyChangeLogger.java
index fcf05ae..f9d1366 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/EntityPropertyChangeLogger.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/EntityPropertyChangeLogger.java
@@ -31,6 +31,10 @@ import org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscr
 
 import lombok.extern.log4j.Log4j2;
 
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isisApplib.EntityPropertyChangeLogger")
 @Order(OrderPrecedence.LATE)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/ExecutionLogger.java b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/ExecutionLogger.java
index da30481..17d76e9 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/ExecutionLogger.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/log/ExecutionLogger.java
@@ -33,6 +33,10 @@ import org.apache.isis.schema.ixn.v2.InteractionDto;
 
 import lombok.extern.log4j.Log4j2;
 
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isisApplib.ExecutionLogger")
 @Order(OrderPrecedence.LATE)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/CommandSubscriber.java b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/CommandSubscriber.java
index 64b4d06..27d5681 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/CommandSubscriber.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/CommandSubscriber.java
@@ -25,9 +25,8 @@ import org.apache.isis.commons.having.HasEnabling;
  * Part of the <i>Publishing SPI</i>. A component to receive {@link Command}s 
  * (with publishing enabled) that just completed.
  *  
- * @since 2.0
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public interface CommandSubscriber extends HasEnabling {
 
     /**
@@ -38,8 +37,6 @@ public interface CommandSubscriber extends HasEnabling {
      *     for example to persist a representation of it.
      * </p>
      */
-    // tag::refguide[]
-    void onCompleted(Command command);           // <.>
+    void onCompleted(Command command);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityChanges.java b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityChanges.java
index a2e343d..6460c4f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityChanges.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityChanges.java
@@ -24,21 +24,23 @@ import org.apache.isis.commons.having.HasUniqueId;
 import org.apache.isis.commons.having.HasUsername;
 import org.apache.isis.schema.chg.v2.ChangesDto;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public interface EntityChanges
-        extends HasUniqueId,            // <.>
-                HasUsername {           // <.>
+        extends HasUniqueId,
+                HasUsername {
 
-    Timestamp getCompletedAt();         // <.>
+    Timestamp getCompletedAt();
 
-    int getNumberLoaded();              // <.>
-    int getNumberCreated();             // <.>
-    int getNumberUpdated();             // <.>
-    int getNumberDeleted();             // <.>
+    int getNumberLoaded();
+    int getNumberCreated();
+    int getNumberUpdated();
+    int getNumberDeleted();
 
-    int getNumberPropertiesModified();  // <.>
+    int getNumberPropertiesModified();
 
-    ChangesDto getDto();                // <.>
+    ChangesDto getDto();
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityChangesSubscriber.java b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityChangesSubscriber.java
index 2c275a6..10c82f7 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityChangesSubscriber.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityChangesSubscriber.java
@@ -24,7 +24,8 @@ import org.apache.isis.commons.having.HasEnabling;
  * Part of the <i>Publishing SPI</i>. A component to receive the entire set of entities 
  * (with publishing enabled) that are about to change, serializable as ChangesDto.
  *  
- * @since 2.0
+ * 
+ * @since 2.0 {@index}
  */
 public interface EntityChangesSubscriber extends HasEnabling {
 
@@ -32,5 +33,5 @@ public interface EntityChangesSubscriber extends HasEnabling {
      * Receives all changing entities (with publishing enabled) at then end of the a 
      * transaction during the pre-commit phase.
      */
-    void onChanging(EntityChanges entityChanges);      // <.>
+    void onChanging(EntityChanges entityChanges);
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityPropertyChange.java b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityPropertyChange.java
index 490b9da..2ad033c 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityPropertyChange.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityPropertyChange.java
@@ -28,7 +28,7 @@ import lombok.Value;
 /**
  * Immutable data record for {@link EntityPropertyChangeSubscriber}s. 
  * 
- * @since 2.0
+ * @since 2.0 {@index}
  */
 @Value(staticConstructor = "of")
 public class EntityPropertyChange {
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityPropertyChangeSubscriber.java b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityPropertyChangeSubscriber.java
index 340e077..1e36de9 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityPropertyChangeSubscriber.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityPropertyChangeSubscriber.java
@@ -24,16 +24,14 @@ import org.apache.isis.commons.having.HasEnabling;
  * Part of the <i>Publishing SPI</i>. A component to receive pre-post property values 
  * for each changed entity (with publishing enabled).
  *  
- * @since 2.0
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public interface EntityPropertyChangeSubscriber extends HasEnabling {
 
     /**
      * Receives all pre-post property values for entities (with publishing enabled) 
      * at then end of the transaction during the pre-commit phase.
      */
-    void onChanging(EntityPropertyChange entityPropertyChange);     // <.>
+    void onChanging(EntityPropertyChange entityPropertyChange);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/ExecutionSubscriber.java b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/ExecutionSubscriber.java
index b224b1d..ed0cae9 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/ExecutionSubscriber.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/ExecutionSubscriber.java
@@ -26,11 +26,11 @@ import org.apache.isis.commons.having.HasEnabling;
  * SPI that allows individual interactions (action invocations or property edits) to be
  * {@link #publish(Interaction.Execution) published}.
  * Note that re-publishing is not part of this SPI.
+ * 
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public interface ExecutionSubscriber extends HasEnabling {
 
-    // end::refguide[]
     /**
      * Publish each {@link Interaction.Execution} immediately after it completes.
      * <p>
@@ -38,8 +38,6 @@ public interface ExecutionSubscriber extends HasEnabling {
      * XML representation of the execution. The easiest way to do this is using {@link InteractionDtoUtils#newInteractionDto(Interaction.Execution)}.  There is
      * some flexibility here, though.
      */
-    // tag::refguide[]
-    void onExecution(Interaction.Execution<?, ?> execution);  // <.>
+    void onExecution(Interaction.Execution<?, ?> execution);
     
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultCacheControl.java b/api/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultCacheControl.java
index 40f9ef0..03033be 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultCacheControl.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultCacheControl.java
@@ -18,10 +18,12 @@
  */
 package org.apache.isis.applib.services.queryresultscache;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public interface QueryResultCacheControl {
 
     boolean isIgnoreCache();
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCache.java b/api/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCache.java
index c0e6a75..b1d9689 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCache.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCache.java
@@ -38,62 +38,60 @@ import lombok.Getter;
  * This implementation has no UI and there is only one implementation (this class) in applib, it is annotated with
  * {@link org.apache.isis.applib.annotation.DomainService}.  This means that it is automatically registered and
  * available for use; no further configuration is required.
+ * 
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public interface QueryResultsCache extends DisposableBean {
 
-    <T> T execute(                                      // <.>
+    <T> T execute(
             Callable<T> callable,
             Class<?> callingClass, String methodName,
             Object... keys);
 
-    // end::refguide[]
 
     /**
      * Not API, for framework use only.
      */
-    void onTransactionEnded();                          // <.>
+    void onTransactionEnded();
 
-    <R> R execute(                                      // <.>
+    <R> R execute(
             MethodReferences.Call0<? extends R> action,
             Class<?> callingClass, String methodName);
 
-    <R, A0> R execute(                                  // <.>
+    <R, A0> R execute(
             MethodReferences.Call1<? extends R, A0> action,
             Class<?> callingClass, String methodName,
             A0 arg0);
 
-    <R, A0, A1> R execute(                              // <.>
+    <R, A0, A1> R execute(
             MethodReferences.Call2<? extends R, A0, A1> action,
             Class<?> callingClass, String methodName,
             A0 arg0, A1 arg1);
 
-    <R, A0, A1, A2> R execute(                          // <.>
+    <R, A0, A1, A2> R execute(
             MethodReferences.Call3<? extends R, A0, A1, A2> action,
             Class<?> callingClass, String methodName,
             A0 arg0, A1 arg1, A2 arg2);
 
-    <R, A0, A1, A2, A3> R execute(                      // <.>
+    <R, A0, A1, A2, A3> R execute(
             MethodReferences.Call4<? extends R, A0, A1, A2, A3> action,
             Class<?> callingClass, String methodName,
             A0 arg0, A1 arg1, A2 arg2, A3 arg3);
 
-    <R, A0, A1, A2, A3, A4> R execute(                  // <.>
+    <R, A0, A1, A2, A3, A4> 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);
 
-    // tag::refguide-1[]
     class Key {
 
         @Getter
-        private final Class<?> callingClass;            // <.>
+        private final Class<?> callingClass;
         @Getter
-        private final String methodName;                // <.>
+        private final String methodName;
         @Getter
-        private final Object[] keys;                    // <.>
+        private final Object[] keys;
 
-        // end::refguide-1[]
         public Key(Class<?> callingClass, String methodName, Object... keys) {
             this.callingClass = callingClass;
             this.methodName = methodName;
@@ -146,17 +144,11 @@ public interface QueryResultsCache extends DisposableBean {
         public String toString() {
             return callingClass.getName() + "#" + methodName  + Arrays.toString(keys);
         }
-        // tag::refguide-1[]
     }
-    // end::refguide-1[]
 
-    // tag::refguide-2[]
     @Data
     class Value<T> {
         private final T result;
     }
-    // end::refguide-2[]
 
-    // tag::refguide[]
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java b/api/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java
index 29d8f52..7af94a3 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java
@@ -38,10 +38,8 @@ import lombok.val;
 
 /**
  * 
- * @since 2.0
- *
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public interface ServiceRegistry {
 
     /**
@@ -52,7 +50,6 @@ public interface ServiceRegistry {
      * @param qualifiers
      * @return non-null
      */
-    // tag::refguide[]
     <T> Can<T> select(Class<T> type, Annotation[] qualifiers);
 
     /**
@@ -61,54 +58,41 @@ public interface ServiceRegistry {
      * @param type
      * @return non-null
      */
-    // tag::refguide[]
     default <T> Can<T> select(final Class<T> type){
-        // end::refguide[]
 
         return select(type, _Constants.emptyAnnotations);
 
-        // tag::refguide[]
         // ...
     }
 
-    // end::refguide[]
     /**
      * Streams all registered bean adapters implementing the requested type.
      */
-    // tag::refguide[]
     default Stream<_ManagedBeanAdapter> streamRegisteredBeansOfType(Class<?> requiredType) {
-        // end::refguide[]
 
         return streamRegisteredBeans()
                 .filter(beanAdapter->beanAdapter.isCandidateFor(requiredType));
 
-        // tag::refguide[]
         // ...
     }
 
-    // end::refguide[]
     /**
      * Returns all bean adapters that have been registered.
      */
-    // tag::refguide[]
     Stream<_ManagedBeanAdapter> streamRegisteredBeans();
 
-    // end::refguide[]
     /**
      * Returns a registered bean of given {@code name}.
      *
      * @param id - corresponds to the ObjectSpecificationId of the bean's type
      */
-    // tag::refguide[]
     Optional<_ManagedBeanAdapter> lookupRegisteredBeanById(String id);
 
-    // end::refguide[]
     /**
      * Returns a registered bean of given {@code name}, or throws when no such bean.
      *
      * @param id - corresponds to the ObjectSpecificationId of the bean's type
      */
-    // tag::refguide[]
     default _ManagedBeanAdapter lookupRegisteredBeanByIdElseFail(String id) {
         return lookupRegisteredBeanById(id).orElseThrow(
                 ()->_Exceptions.unrecoverable(
@@ -117,16 +101,13 @@ public interface ServiceRegistry {
 
     Optional<?> lookupBeanById(final String id);
 
-    // end::refguide[]
     /**
      * Returns a domain service implementing the requested type.
      * <p>
      * If this lookup is ambiguous, the service annotated with highest priority is returned.
      * see {@link Priority}
      */
-    // tag::refguide[]
     default <T> Optional<T> lookupService(final Class<T> serviceClass) {
-        // end::refguide[]
 
         val bin = select(serviceClass);
         if(bin.isEmpty()) {
@@ -146,21 +127,17 @@ public interface ServiceRegistry {
 
         return toMaxPrioReduction.getResult();
 
-        // tag::refguide[]
         // ...
     }
 
     default <T> T lookupServiceElseFail(final Class<T> serviceClass) {
-        // end::refguide[]
 
         return lookupService(serviceClass)
                 .orElseThrow(()->
                 new NoSuchElementException("Could not locate service of type '" + serviceClass + "'"));
 
-        // tag::refguide[]
         // ...
     }
-    // end::refguide[]
 
     // -- PRIORITY ANNOTATION HANDLING
 
@@ -200,6 +177,4 @@ public interface ServiceRegistry {
 
     }
 
-    // tag::refguide[]
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/repository/EntityState.java b/api/applib/src/main/java/org/apache/isis/applib/services/repository/EntityState.java
index d3379c2..994f8b6 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/repository/EntityState.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/repository/EntityState.java
@@ -23,15 +23,14 @@ package org.apache.isis.applib.services.repository;
  * 
  * @apiNote use the provided predicates rather then directly referencing the enum names
  *  
- * @since 2.0
+ * 
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public enum EntityState {
     NOT_PERSISTABLE,
     PERSISTABLE_ATTACHED,
     PERSISTABLE_DETACHED,
     PERSISTABLE_DESTROYED,
-    // end::refguide[]
     ;
 
     public boolean isPersistable() {
@@ -47,6 +46,4 @@ public enum EntityState {
         return this == PERSISTABLE_DESTROYED;
     }
 
-    // tag::refguide[]
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/repository/RepositoryService.java b/api/applib/src/main/java/org/apache/isis/applib/services/repository/RepositoryService.java
index 9b3057c..df2c3c2 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/repository/RepositoryService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/repository/RepositoryService.java
@@ -31,65 +31,55 @@ import lombok.NonNull;
 import lombok.SneakyThrows;
 import lombok.val;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 1.x revised for 2.0 {@index}
+ */
 public interface RepositoryService {
 
-    // end::refguide[]
     /**
      * Returns the EntityState of given {@code object}. Returns {@link EntityState#NOT_PERSISTABLE} for {@code object==null}.
      * @param object
      * @return (non-null)
      * @since 2.0
      */
-    // tag::refguide[]
-    EntityState getEntityState(@Nullable Object object);    // <.>
+    EntityState getEntityState(@Nullable Object object);
 
-    // end::refguide[]
     /**
      * Same as {@link org.apache.isis.applib.services.factory.FactoryService#detachedEntity(Object)}; provided as a
      * convenience because instantiating and {@link #persist(Object) persisting} are often done together.
      * @since 2.0
      */
-    // tag::refguide[]
-    <T> T detachedEntity(@NonNull T entity);                // <.>
+    <T> T detachedEntity(@NonNull T entity);
 
-    // end::refguide[]
     /**
      * Persist the specified object (or do nothing if already persistent).
      *
      * @see #isPersistent(Object)
      */
-    // tag::refguide[]
-    <T> T persist(T domainObject);                          // <.>
+    <T> T persist(T domainObject);
 
-    // end::refguide[]
     /**
      * Persist the specified object (or do nothing if already persistent) and flushes changes to the database.
      *
      * @see #persist(Object)
      */
-    // tag::refguide[]
-    <T> T persistAndFlush(T domainObject);                  // <.>
+    <T> T persistAndFlush(T domainObject);
 
-    // end::refguide[]
     /**
      * Deletes the domain object but only if is attached.
      *
      * @param domainObject
      */
-    // tag::refguide[]
-    void remove(Object domainObject);                       // <.>
+    void remove(Object domainObject);
 
-    // end::refguide[]
     /**
      * Deletes the domain object but only if is persistent, and flushes changes to the database.
      *
      * @param domainObject
      */
-    // tag::refguide[]
-    void removeAndFlush(Object domainObject);               // <.>
+    void removeAndFlush(Object domainObject);
 
-    // end::refguide[]
     /**
      * Removes all instances of the domain object.
      *
@@ -97,18 +87,14 @@ public interface RepositoryService {
      *     Intended primarily for testing purposes.
      * </p>
      */
-    // tag::refguide[]
-    <T> void removeAll(Class<T> cls);                       // <.>
+    <T> void removeAll(Class<T> cls);
 
-    // end::refguide[]
     /**
      * As {@link #allInstances(Class, long, long)}, but but returning all instances rather than just those
      *      * within the specified range..
      */
-    // tag::refguide[]
-    <T> List<T> allInstances(Class<T> ofType);              // <.>
+    <T> List<T> allInstances(Class<T> ofType);
 
-    // end::refguide[]
     /**
      * Returns all the instances of the specified type (including subtypes).
      * If the optional range parameters are used, the dataset returned starts
@@ -133,22 +119,18 @@ public interface RepositoryService {
      * @param <T>
      * @return
      */
-    // tag::refguide[]
-    <T> List<T> allInstances(                               // <.>
+    <T> List<T> allInstances(
             Class<T> ofType,
             long start, long count);
 
-    // end::refguide[]
     /**
      * As {@link #allMatches(Class, Predicate, long, long)}, but returning all instances rather than just those
      * within the specified range.
      */
-    // tag::refguide[]
-    <T> List<T> allMatches(                                 // <.>
+    <T> List<T> allMatches(
             Class<T> ofType,
             Predicate<? super T> predicate);
 
-    // end::refguide[]
     /**
      * Returns all the instances of the specified type (including subtypes) that
      * the predicate object accepts. If the optional range parameters are used, the
@@ -175,13 +157,11 @@ public interface RepositoryService {
      * @param <T>
      * @return
      */
-    // tag::refguide[]
-    <T> List<T> allMatches(                                 // <.>
+    <T> List<T> allMatches(
             Class<T> ofType,
             Predicate<? super T> predicate,
             long start, long count);
 
-    // end::refguide[]
     /**
      * Returns all the instances that match the given {@link Query}.
      *
@@ -196,10 +176,8 @@ public interface RepositoryService {
      *     This method is the recommended way of querying for multiple instances.
      * </p>
      */
-    // tag::refguide[]
-    <T> List<T> allMatches(Query<T> query);                 // <.>
+    <T> List<T> allMatches(Query<T> query);
 
-    // end::refguide[]
     /**
      * Find the only instance of the specified type (including subtypes) that
      * has the specified title.
@@ -214,12 +192,10 @@ public interface RepositoryService {
      * instances.  Use {@link #uniqueMatch(Query)} for production code.
      * </p>
      */
-    // tag::refguide[]
-    <T> Optional<T> uniqueMatch(                            // <.>
+    <T> Optional<T> uniqueMatch(
             Class<T> ofType,
             Predicate<T> predicate);
 
-    // end::refguide[]
     /**
      * Find the only instance that matches the provided query.
      *
@@ -234,10 +210,8 @@ public interface RepositoryService {
      *
      * @see #firstMatch(Query)
      */
-    // tag::refguide[]
-    <T> Optional<T> uniqueMatch(Query<T> query);            // <.>
+    <T> Optional<T> uniqueMatch(Query<T> query);
 
-    // end::refguide[]
     /**
      * Find the only instance of the specified type (including subtypes) that
      * has the specified title.
@@ -252,12 +226,10 @@ public interface RepositoryService {
      * instances.  Use {@link #firstMatch(Query)} for production code.
      * </p>
      */
-    // tag::refguide[]
-    <T> Optional<T> firstMatch(                             // <.>
+    <T> Optional<T> firstMatch(
             Class<T> ofType,
             Predicate<T> predicate);
 
-    // end::refguide[]
     /**
      * Find the only instance that matches the provided query, if any..
      *
@@ -268,16 +240,12 @@ public interface RepositoryService {
      *
      * @see #firstMatch(Query)
      */
-    // tag::refguide[]
-    <T> Optional<T> firstMatch(Query<T> query);             // <.>
-    // end::refguide[]
+    <T> Optional<T> firstMatch(Query<T> query);
     /**
      * Reloads the pojo.
      */
-    // tag::refguide[]
-    <T> T refresh(T pojo);                                // <.>
+    <T> T refresh(T pojo);
 
-    // end::refguide[]
     /**
      * Detach the entity from the current persistence session.
      *
@@ -286,10 +254,8 @@ public interface RepositoryService {
      *
      * @param entity - to detach
      */
-    // tag::refguide[]
-    <T> T detach(T entity);                            // <.>
+    <T> T detach(T entity);
 
-    // end::refguide[]
 
     // -- DEPRECATIONS
 
@@ -341,7 +307,5 @@ public interface RepositoryService {
         return entityState.isDestroyed();
     }
 
-    // tag::refguide[]
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/routing/RoutingService.java b/api/applib/src/main/java/org/apache/isis/applib/services/routing/RoutingService.java
index 677f715..c77a148 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/routing/RoutingService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/routing/RoutingService.java
@@ -20,13 +20,12 @@ package org.apache.isis.applib.services.routing;
 
 /**
  * Provides the ability to return (and therefore have rendered) an alternative object from an action invocation.
+ * @since 1.x {@index}
  */
-// tag::refguide[]
 public interface RoutingService {
 
-    boolean canRoute(Object original);  // <.>
+    boolean canRoute(Object original);
 
-    Object route(Object original);      // <.>
+    Object route(Object original);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/scratchpad/Scratchpad.java b/api/applib/src/main/java/org/apache/isis/applib/services/scratchpad/Scratchpad.java
index 366698e..1a6c223 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/scratchpad/Scratchpad.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/scratchpad/Scratchpad.java
@@ -18,23 +18,7 @@
  */
 package org.apache.isis.applib.services.scratchpad;
 
-import java.util.Map;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import javax.inject.Named;
-
 import org.springframework.beans.factory.DisposableBean;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.annotation.IsisInteractionScope;
-import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.commons.internal.collections._Maps;
-
-import lombok.extern.log4j.Log4j2;
 
 /**
  * This service (API and implementation) provides a mechanism to interchange information between multiple objects invoked in the same
@@ -45,25 +29,21 @@ import lombok.extern.log4j.Log4j2;
  * This implementation has only one implementation (this class) in applib, so it is annotated with
  * {@link org.apache.isis.applib.annotation.DomainService}.  This means that it is automatically registered and
  * available for use; no further configuration is required.
+ * 
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public interface Scratchpad
         extends DisposableBean {
 
-    // end::refguide[]
     /**
      * Obtain user-data, as set by a previous object being acted upon.
      */
-    // tag::refguide[]
     public Object get(Object key);
 
-    // end::refguide[]
     /**
      * Set user-data, for the use of a subsequent object being acted upon.
      */
-    // tag::refguide[]
     public void put(Object key, Object value);
 
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingService.java b/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingService.java
index 9ae9797..4635e46 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingService.java
@@ -24,8 +24,8 @@ import java.util.Date;
  * Similar to the {@link org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber}, 
  * this defines an API to track
  * the status of the current sessions (&quot;users logged on&quot;) on the system.
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public interface SessionLoggingService {
 
     enum Type {
@@ -44,11 +44,8 @@ public interface SessionLoggingService {
             String username,
             Date date,
             CausedBy causedBy,
-            String sessionId        // <.>
+            String sessionId
     );
-    // end::refguide[]
 
-    // tag::refguide[]
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingServiceLogging.java b/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingServiceLogging.java
index 1bba8c2..a359d7a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingServiceLogging.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingServiceLogging.java
@@ -31,13 +31,16 @@ import org.apache.isis.applib.annotation.OrderPrecedence;
 
 import lombok.extern.log4j.Log4j2;
 
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isisApplib.SessionLoggingServiceLogging")
 @Order(OrderPrecedence.LATE)
 @Primary
 @Qualifier("logging")
 @Log4j2
-// tag::refguide[]
 public class SessionLoggingServiceLogging implements SessionLoggingService {
 
     @Override
@@ -66,4 +69,3 @@ public class SessionLoggingServiceLogging implements SessionLoggingService {
         }
     }
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/sudo/SudoService.java b/api/applib/src/main/java/org/apache/isis/applib/services/sudo/SudoService.java
index 2bffe99..d7b00ef 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/sudo/SudoService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/sudo/SudoService.java
@@ -32,62 +32,51 @@ import lombok.NonNull;
  * Intended only for use by fixture scripts and integration tests, allows a block of code to execute
  * while the {@link UserService}'s {@link UserService#currentUser() getUser()} method returns the specified user/role
  * as the effective user.
+ * @since 1.x revised for 2.0 {@index}
  */
-// tag::refguide[]
 public interface SudoService {
 
-    // end::refguide[]
     /**
      * If included in the list of roles, then will disable security checks (can view and use all object members).
      */
-    // tag::refguide[]
-    RoleMemento ACCESS_ALL_ROLE =                                // <.>
+    RoleMemento ACCESS_ALL_ROLE =
             new RoleMemento(
                     SudoService.class.getName() + "#accessAll",
                     "Sudo, can view and use all object members.");
             
 
-    // end::refguide[]
     /**
      * Executes the supplied block, with the {@link UserService} returning the specified user.
      * @param sudoMapper - maps the current {@link ExecutionContext} to the sudo one
      * @since 2.0
      */
-    // tag::refguide[]
-    <T> T call(                                             // <.>
+    <T> T call(
             @NonNull UnaryOperator<ExecutionContext> sudoMapper,
             @NonNull Callable<T> supplier);
 
-    // end::refguide[]
     /**
      * Executes the supplied block, with the {@link UserService} returning the specified user.
      * @param sudoMapper - maps the current {@link ExecutionContext} to the sudo one
      * @since 2.0
      */
-    // tag::refguide[]
-    default void run(                                        // <.>
+    default void run(
             final @NonNull UnaryOperator<ExecutionContext> sudoMapper,
             final @NonNull ThrowingRunnable runnable) {
         call(sudoMapper, ThrowingRunnable.toCallable(runnable));
     }
 
-    // end::refguide[]
     
     
     /**
      * Allows the {@link SudoService} to notify other services/components that the effective user has been changed.
      * @since 2.0
      */
-    // tag::refguide-1[]
     interface Listener {
 
-        void beforeCall(@NonNull ExecutionContext before, @NonNull ExecutionContext after);          // <.>
+        void beforeCall(@NonNull ExecutionContext before, @NonNull ExecutionContext after);
 
-        void afterCall(@NonNull ExecutionContext before, @NonNull ExecutionContext after);          // <.>
+        void afterCall(@NonNull ExecutionContext before, @NonNull ExecutionContext after);
     }
-    // end::refguide-1[]
 
-    // tag::refguide[]
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/swagger/SwaggerService.java b/api/applib/src/main/java/org/apache/isis/applib/services/swagger/SwaggerService.java
index 66cebf9..37cfa84 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/swagger/SwaggerService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/swagger/SwaggerService.java
@@ -24,17 +24,17 @@ import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.RestrictTo;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 1.x {@index}
+ */
 public interface SwaggerService {
 
-    String generateSwaggerSpec(             // <.>
+    String generateSwaggerSpec(
             final Visibility visibility,
             final Format format);
 
-    // end::refguide[]
-    // tag::refguide[]
     enum Visibility {
-        // end::refguide[]
         /**
          * Specification for use by third-party clients, ie public use.
          *
@@ -44,9 +44,7 @@ public interface SwaggerService {
          * of {@link NatureOfService#VIEW_REST_ONLY}.
          * </p>
          */
-        // tag::refguide[]
-        PUBLIC,                             // <.>
-        // end::refguide[]
+        PUBLIC,
         /**
          * Specification for use only by internally-managed clients, ie private internal use.
          *
@@ -54,28 +52,22 @@ public interface SwaggerService {
          * Includes specifications of domain entities as well as view models.
          * </p>
          */
-        // tag::refguide[]
-        PRIVATE,                            // <.>
-        // end::refguide[]
+        PRIVATE,
         /**
          * As {@link #PRIVATE}, also including any prototype actions (where {@link Action#restrictTo()} set to
          * {@link RestrictTo#PROTOTYPING}).
          */
-        // tag::refguide[]
-        PRIVATE_WITH_PROTOTYPING            // <.>
-        // end::refguide[]
+        PRIVATE_WITH_PROTOTYPING
         ;
 
         public boolean isPublic() {
             return this == PUBLIC;
         }
-        // tag::refguide[]
     }
 
     enum Format {
-        JSON,                               // <.>
-        YAML                                // <.>
-        // end::refguide[]
+        JSON,
+        YAML
         ;
         /**
          * Implementation note: not using subclasses, otherwise the key in translations.po becomes more complex.
@@ -87,8 +79,6 @@ public interface SwaggerService {
                 return "application/yaml";
             }
         }
-        // tag::refguide[]
     }
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderForCollectionTypeAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderForCollectionTypeAbstract.java
index 33bc35d..b1f3205 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderForCollectionTypeAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderForCollectionTypeAbstract.java
@@ -22,7 +22,6 @@ import java.util.List;
 
 import lombok.RequiredArgsConstructor;
 
-// tag::refguide[]
 @RequiredArgsConstructor
 public abstract class TableColumnOrderForCollectionTypeAbstract<T>
         implements TableColumnOrderService {
@@ -62,4 +61,3 @@ public abstract class TableColumnOrderForCollectionTypeAbstract<T>
     }
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderService.java b/api/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderService.java
index a9cf899..97747f5 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderService.java
@@ -20,27 +20,20 @@ package org.apache.isis.applib.services.tablecol;
 
 import java.util.List;
 
-import javax.inject.Named;
-
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.annotation.OrderPrecedence;
-
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public interface TableColumnOrderService {
 
-    List<String> orderParented(                 // <.>
+    List<String> orderParented(
             final Object parent,
             final String collectionId,
             final Class<?> collectionType,
             final List<String> propertyIds);
 
-    List<String> orderStandalone(               // <.>
+    List<String> orderStandalone(
             final Class<?> collectionType,
             final List<String> propertyIds);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/title/TitleService.java b/api/applib/src/main/java/org/apache/isis/applib/services/title/TitleService.java
index 46ba64a..525adc1 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/title/TitleService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/title/TitleService.java
@@ -19,24 +19,22 @@
 
 package org.apache.isis.applib.services.title;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 1.x {@index}
+ */
 public interface TitleService {
 
-    // end::refguide[]
     /**
      * Return the title of the object, as rendered in the UI by the
      * Isis viewers.
      */
-    // tag::refguide[]
-    String titleOf(Object domainObject);        // <.>
+    String titleOf(Object domainObject);
 
-    // end::refguide[]
     /**
      * Return the icon name of the object, as rendered in the UI by the
      * Isis viewers.
      */
-    // tag::refguide[]
-    String iconNameOf(Object domainObject);     // <.>
+    String iconNameOf(Object domainObject);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingService.java b/api/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingService.java
index b1a9f3b..e51fa0c 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingService.java
@@ -20,18 +20,20 @@ package org.apache.isis.applib.services.urlencoding;
 
 import java.nio.charset.StandardCharsets;
 
-import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.memento._Mementos.EncoderDecoder;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public interface UrlEncodingService extends EncoderDecoder {
 
     @Override
-    String encode(final byte[] bytes);                  // <.>
+    String encode(final byte[] bytes);
 
     @Override
-    byte[] decode(String str);                          // <.>
+    byte[] decode(String str);
 
     default String encodeString(final String str) {
         return encode(_Strings.toBytes(str, StandardCharsets.UTF_8));
@@ -42,4 +44,3 @@ public interface UrlEncodingService extends EncoderDecoder {
     }
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java b/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
index 95df8e7..9db8a35 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
@@ -34,7 +34,7 @@ import lombok.NonNull;
 
 /**
  * Immutable serializable value holding details about a user and its roles.
- * @since 2.0 {@index}
+ * @since 1.x revised in 2.0 {@index}
  */
 public final class UserMemento implements Serializable {
     
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/user/UserService.java b/api/applib/src/main/java/org/apache/isis/applib/services/user/UserService.java
index 48a56ce..ccf90a4 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/user/UserService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/user/UserService.java
@@ -32,7 +32,7 @@ import org.apache.isis.commons.internal.exceptions._Exceptions;
  * If {@link SudoService} has been used to temporarily override the user and/or roles, 
  * then this service will report the overridden values instead.
  *
- * @since 2.0 {@index}
+ * @since 1.x revised in 2.0 {@index}
  */
 public interface UserService {
 
@@ -73,6 +73,9 @@ public interface UserService {
                 .map(UserMemento::getName);
     }
     
+    /**
+     * Returns either the current user's name or else {@literal Nobody}.    
+     */
     default String currentUserNameElseNobody() {
         return currentUserName()
                 .orElse("Nobody");
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/userprof/UserProfileService.java b/api/applib/src/main/java/org/apache/isis/applib/services/userprof/UserProfileService.java
index 238f094..2b951b2 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/userprof/UserProfileService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/userprof/UserProfileService.java
@@ -25,11 +25,11 @@ package org.apache.isis.applib.services.userprof;
  *     Used by the Wicket viewer in its {@link org.apache.isis.applib.annotation.DomainServiceLayout.MenuBar#TERTIARY tertiary}
  *     &quot;Me&quot; menu bar.
  * </p>
+ * 
+ * @since 1.x {@index}
  */
-// tag::refguide[]
 public interface UserProfileService {
 
-    // end::refguide[]
     /**
      * Used as the menu name of the {@link org.apache.isis.applib.annotation.DomainServiceLayout.MenuBar#TERTIARY tertiary}
      * &quot;Me&quot; menu bar.
@@ -38,8 +38,6 @@ public interface UserProfileService {
      *     If returns <tt>null</tt>, then the current user name is used instead.
      * </p>
      */
-    // tag::refguide[]
-    String userProfileName();   // <.>
+    String userProfileName();
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/userreg/EmailNotificationService.java b/api/applib/src/main/java/org/apache/isis/applib/services/userreg/EmailNotificationService.java
index 349baf9..8337029 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/userreg/EmailNotificationService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/userreg/EmailNotificationService.java
@@ -20,9 +20,6 @@ package org.apache.isis.applib.services.userreg;
 
 import java.io.Serializable;
 
-import javax.annotation.PostConstruct;
-
-import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.services.userreg.events.EmailRegistrationEvent;
 import org.apache.isis.applib.services.userreg.events.PasswordResetEvent;
 
@@ -33,21 +30,18 @@ import org.apache.isis.applib.services.userreg.events.PasswordResetEvent;
  *     The framework provides a default implementation which in turn uses the
  *     {@link org.apache.isis.applib.services.email.EmailService}, namely <code>EmailServiceDefault</code>.
  * </p>
+ * @since 1.x {@index}
  */
-// tag::refguide[]
 public interface EmailNotificationService
         extends Serializable {
 
-    boolean send(EmailRegistrationEvent ev);    // <.>
+    boolean send(EmailRegistrationEvent ev);
 
-    boolean send(PasswordResetEvent ev);        // <.>
+    boolean send(PasswordResetEvent ev);
 
-    // end::refguide[]
     /**
      * Whether this service has been configured and thus available for use.
      */
-    // tag::refguide[]
-    boolean isConfigured();                     // <.>
+    boolean isConfigured();
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/userreg/UserDetails.java b/api/applib/src/main/java/org/apache/isis/applib/services/userreg/UserDetails.java
index 167a599..e2607d5 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/userreg/UserDetails.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/userreg/UserDetails.java
@@ -25,8 +25,8 @@ import lombok.Setter;
 
 /**
  * A model object for the signup page
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public class UserDetails
                 implements Serializable {
 
@@ -42,4 +42,3 @@ public class UserDetails
     private String emailAddress;
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/userreg/UserRegistrationService.java b/api/applib/src/main/java/org/apache/isis/applib/services/userreg/UserRegistrationService.java
index a8b50f4..4569f6b 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/userreg/UserRegistrationService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/userreg/UserRegistrationService.java
@@ -18,8 +18,6 @@
  */
 package org.apache.isis.applib.services.userreg;
 
-import org.apache.isis.applib.annotation.Programmatic;
-
 /**
  * Required API to enable users to register an account on the system (aka &quot;sign up&quot;).
  *
@@ -30,17 +28,17 @@ import org.apache.isis.applib.annotation.Programmatic;
  *     The email service (<code>EmailServiceDefault</code>) <i>does</i> require a couple of configuration properties
  *     to be set (specifying the SMTP mail server/accounts/password).
  * </p>
+ * 
+ * @since 1.x {@index}
  */
-// tag::refguide[]
 public interface UserRegistrationService {
 
-    boolean usernameExists(String username);                                // <.>
+    boolean usernameExists(String username);
 
-    boolean emailExists(String emailAddress);                               // <.>
+    boolean emailExists(String emailAddress);
 
-    void registerUser(UserDetails userDetails);                             // <.>
+    void registerUser(UserDetails userDetails);
 
-    boolean updatePasswordByEmail(String emailAddress, String password);    // <.>
+    boolean updatePasswordByEmail(String emailAddress, String password);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/userreg/events/EmailRegistrationEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/userreg/events/EmailRegistrationEvent.java
index 2238414..0ecac91 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/userreg/events/EmailRegistrationEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/userreg/events/EmailRegistrationEvent.java
@@ -20,6 +20,8 @@ package org.apache.isis.applib.services.userreg.events;
 
 /**
  * An event send to all services interested in user registration
+ * 
+ * @since 1.x {@index}
  */
 public class EmailRegistrationEvent extends EmailEventAbstract {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/userreg/events/PasswordResetEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/userreg/events/PasswordResetEvent.java
index f6b1fac..b727f8f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/userreg/events/PasswordResetEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/userreg/events/PasswordResetEvent.java
@@ -20,6 +20,7 @@ package org.apache.isis.applib.services.userreg.events;
 
 /**
  * An event send to all services interested in user password reset
+ * @since 1.x {@index}
  */
 public class PasswordResetEvent extends EmailEventAbstract {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/DisabledException.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/DisabledException.java
index 6f1fcca..51b8f7e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/DisabledException.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/DisabledException.java
@@ -25,6 +25,9 @@ import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
 /**
  * Superclass of exceptions which indicate an attempt to interact with a class
  * member that is disabled.
+ * 
+ * 
+ * @since 1.x {@index}
  */
 public class DisabledException extends InteractionException {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/HiddenException.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/HiddenException.java
index ecfc5af..12d2eaa 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/HiddenException.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/HiddenException.java
@@ -25,6 +25,7 @@ import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 /**
  * Superclass of exceptions which indicate an attempt to interact with a class
  * member that is in some way hidden or invisible.
+ * @since 2.0 {@index}
  */
 public class HiddenException extends InteractionException {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/InvalidException.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/InvalidException.java
index 4ec7ab7..75a2d9b 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/InvalidException.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/InvalidException.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
  *
  * <p>
  *
+ * @since 1.x {@index}
  */
 public class InvalidException extends InteractionException {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/WrapperFactory.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/WrapperFactory.java
index 28b44c4..c47d589 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/WrapperFactory.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/WrapperFactory.java
@@ -66,17 +66,11 @@ import org.apache.isis.applib.services.wrapper.listeners.InteractionListener;
  * <p>
  * If the object has (see {@link #isWrapper(Object)} already been wrapped),
  * then should just return the object back unchanged.
+ * 
+ * @since 1.x {@index}
  */
-// tag::refguide[]
-// tag::refguide-unwrap[]
-// tag::refguide-async[]
-// tag::refguide-listeners[]
 public interface WrapperFactory {
 
-    // end::refguide[]
-    // end::refguide-unwrap[]
-    // end::refguide-async[]
-    // end::refguide-listeners[]
     /**
      * Provides the &quot;wrapper&quot; of a domain object against which to invoke the action.
      *
@@ -97,20 +91,16 @@ public interface WrapperFactory {
      * Otherwise, will do all the validations (raise exceptions as required
      * etc.), but doesn't modify the model.
      */
-    // tag::refguide[]
-    <T> T wrap(T domainObject,                                      // <.>
+    <T> T wrap(T domainObject,
                SyncControl syncControl);
 
-    // end::refguide[]
     /**
      * A convenience overload for {@link #wrap(Object, SyncControl)},
      * returning a wrapper to invoke the action synchronously, enforcing business rules.
      * Any exceptions will be propagated, not swallowed.
      */
-    // tag::refguide[]
-    <T> T wrap(T domainObject);                                     // <.>
+    <T> T wrap(T domainObject);
 
-    // end::refguide[]
     /**
      * Provides the wrapper for a {@link FactoryService#mixin(Class, Object) mixin}, against which to invoke the action.
      *
@@ -119,20 +109,16 @@ public interface WrapperFactory {
      *     whether the action is executed.  See {@link #wrap(Object, SyncControl)} for more details on this.
      * </p>
      */
-    // tag::refguide[]
-    <T> T wrapMixin(Class<T> mixinClass, Object mixedIn,            // <.>
+    <T> T wrapMixin(Class<T> mixinClass, Object mixedIn,
                     SyncControl syncControl);
 
-    // end::refguide[]
     /**
      * A convenience overload for {@link #wrapMixin(Class, Object, SyncControl)},
      * returning a wrapper to invoke the action synchronously, enforcing business rules.
      * Any exceptions will be propagated, not swallowed.
      */
-    // tag::refguide[]
-    <T> T wrapMixin(Class<T> mixinClass, Object mixedIn);           // <.>
+    <T> T wrapMixin(Class<T> mixinClass, Object mixedIn);
 
-    // end::refguide[]
     /**
      * Obtains the underlying domain object, if wrapped.
      *
@@ -140,10 +126,8 @@ public interface WrapperFactory {
      * If the object {@link #isWrapper(Object) is not wrapped}, then
      * should just return the object back unchanged.
      */
-    // tag::refguide-unwrap[]
-    <T> T unwrap(T possibleWrappedDomainObject);                    // <.>
+    <T> T unwrap(T possibleWrappedDomainObject);
 
-    // end::refguide-unwrap[]
     /**
      * Whether the supplied object is a wrapper around a domain object.
      *
@@ -152,10 +136,8 @@ public interface WrapperFactory {
      *            - object that might or might not be a wrapper.
      * @return
      */
-    // tag::refguide-unwrap[]
-    <T> boolean isWrapper(T possibleWrappedDomainObject);           // <.>
+    <T> boolean isWrapper(T possibleWrappedDomainObject);
 
-    // end::refguide-unwrap[]
 
 
     //
@@ -174,11 +156,9 @@ public interface WrapperFactory {
      *
      * @since 2.0
      */
-    // tag::refguide-async[]
-    <T,R> T asyncWrap(T domainObject,                      // <.>
+    <T,R> T asyncWrap(T domainObject,
                       AsyncControl<R> asyncControl);
 
-    // end::refguide-async[]
     /**
      * Returns a proxy object for the provided {@code mixinClass},
      * through which can execute the action asynchronously.
@@ -190,12 +170,10 @@ public interface WrapperFactory {
      *
      * @since 2.0
      */
-    // tag::refguide-async[]
-    <T,R> T asyncWrapMixin(                                // <.>
+    <T,R> T asyncWrapMixin(
                    Class<T> mixinClass, Object mixedIn,
                    AsyncControl<R> asyncControl);
 
-    // end::refguide-async[]
 
 
     //
@@ -206,11 +184,9 @@ public interface WrapperFactory {
      * All {@link InteractionListener}s that have been registered using
      * {@link #addInteractionListener(InteractionListener)}.
      */
-    // tag::refguide-listeners[]
     // ...
-    List<InteractionListener> getListeners();                       // <.>
+    List<InteractionListener> getListeners();
 
-    // end::refguide-listeners[]
     /**
      * Registers an {@link InteractionListener}, to be notified of interactions
      * on all wrappers.
@@ -224,10 +200,8 @@ public interface WrapperFactory {
      * @param listener
      * @return
      */
-    // tag::refguide-listeners[]
-    boolean addInteractionListener(InteractionListener listener);   // <.>
+    boolean addInteractionListener(InteractionListener listener);
 
-    // end::refguide-listeners[]
     /**
      * Remove an {@link InteractionListener}, to no longer be notified of
      * interactions on wrappers.
@@ -241,18 +215,10 @@ public interface WrapperFactory {
      * @param listener
      * @return
      */
-    // tag::refguide-listeners[]
-    boolean removeInteractionListener(                              // <.>
+    boolean removeInteractionListener(
                     InteractionListener listener);
 
-    void notifyListeners(InteractionEvent ev);                      // <.>
-    // tag::refguide-async[]
-    // tag::refguide-unwrap[]
-    // tag::refguide[]
+    void notifyListeners(InteractionEvent ev);
     // ...
 
 }
-// end::refguide[]
-// end::refguide-unwrap[]
-// end::refguide-async[]
-// end::refguide-listeners[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/WrappingObject.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/WrappingObject.java
index 8a1d3d8..1b91b98 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/WrappingObject.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/WrappingObject.java
@@ -24,12 +24,12 @@ import org.apache.isis.commons.collections.ImmutableEnumSet;
 
 /**
  * Implemented by all objects that have been viewed as per
- * {@link org.apache.isis.applib.services.wrapper.WrapperFactory#wrap(Object)}.
+ * {@link WrapperFactory#wrap(Object)}.
+ * 
+ * @since 1.x {@index}
  */
-// tag::refguide[]
 public interface WrappingObject {
 
-    // end::refguide[]
     /**
      * Programmatic equivalent of invoking save for a transient object .
      *
@@ -38,10 +38,8 @@ public interface WrappingObject {
      * intended to reduce the risk of a collision.
      * </p>
      */
-    // tag::refguide[]
     void __isis_save();
 
-    // end::refguide[]
     /**
      * Provide access to the underlying, wrapped object.
      *
@@ -59,22 +57,18 @@ public interface WrappingObject {
      * <b>NOTE: there is a string-literal reference to this name
      * <tt>DomainObjectInvocationHandler</tt>, so it should not be changed.</b>.
      */
-    // tag::refguide[]
     Object __isis_wrapped();
 
-    // end::refguide[]
     /**
      * The {@link EnumSet<ExecutionMode> execution modes} inferred from the
-     * {@link org.apache.isis.applib.services.wrapper.control.SyncControl} with which this wrapper was
-     * {@link WrapperFactory#wrap(Object, org.apache.isis.applib.services.wrapper.control.SyncControl) created}.
+     * {@link SyncControl} with which this wrapper was
+     * {@link WrapperFactory#wrap(Object, SyncControl) created}.
      *
      * <p>
      * NOTE: domain classes may not have a method with this name.  The <tt>__isis_</tt> prefix is
      * intended to reduce the risk of a collision.
      * </p>
      */
-    // tag::refguide[]
     ImmutableEnumSet<ExecutionMode> __isis_executionModes();
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/AsyncControl.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/AsyncControl.java
index c95027e..e7fb5c8 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/AsyncControl.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/AsyncControl.java
@@ -35,114 +35,94 @@ import lombok.extern.log4j.Log4j2;
 /**
  *
  * @param <R> - return value.
+ * 
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 @Log4j2
 public class AsyncControl<R> extends ControlAbstract<AsyncControl<R>> {
 
-    public static AsyncControl<Void> returningVoid() {                        // <.>
+    public static AsyncControl<Void> returningVoid() {
         return new AsyncControl<>(Void.class);
     }
-    public static <X> AsyncControl<X> returning(final Class<X> cls) {     // <.>
+    public static <X> AsyncControl<X> returning(final Class<X> cls) {
         return new AsyncControl<X>(cls);
     }
 
     @Getter
-    private final Class<R> returnType;                                  // <.>
+    private final Class<R> returnType;
 
     private AsyncControl(final Class<R> returnType) {
         this.returnType = returnType;
-        with(exception -> {                                             // <.>
+        with(exception -> {
             log.error(logMessage(), exception);
             return null;
         });
     }
 
     @Getter @NonNull
-    private ExecutorService executorService =                           // <.>
+    private ExecutorService executorService =
                             ForkJoinPool.commonPool();
     public AsyncControl<R> with(ExecutorService executorService) {
-        // end::refguide[]
         this.executorService = executorService;
         return this;
-        // tag::refguide[]
         // ...
     }
 
-    // end::refguide[]
     /**
      * Defaults to the system clock, if not overridden
      */
-    // tag::refguide[]
     @Getter
-    private VirtualClock clock;                                         // <.>
+    private VirtualClock clock;
     public AsyncControl<R> withClock(final @NonNull VirtualClock clock) {
-        // end::refguide[]
         this.clock = clock;
         return this;
-        // tag::refguide[]
         // ...
     }
 
-    // end::refguide[]
     /**
      * Defaults to the system locale, if not overridden
      */
-    // tag::refguide[]
     @Getter
-    private Locale locale;                                         // <.>
+    private Locale locale;
     public AsyncControl<R> withLocale(final @NonNull Locale locale) {
-        // end::refguide[]
         this.locale = locale;
         return this;
-        // tag::refguide[]
         // ...
     }
 
-    // end::refguide[]
     /**
      * Defaults to the system time zone, if not overridden
      */
-    // tag::refguide[]
     @Getter
-    private TimeZone timeZone;                                         // <.>
+    private TimeZone timeZone;
     public AsyncControl<R> withTimeZone(final @NonNull TimeZone timeZone) {
-        // end::refguide[]
         this.timeZone = timeZone;
         return this;
-        // tag::refguide[]
         // ...
     }
 
-    // end::refguide[]
 
 
     /**
      * Defaults to user initiating the action, if not overridden
      */
-    // tag::refguide[]
     @Getter
-    private UserMemento user;                                           // <.>
+    private UserMemento user;
     public AsyncControl<R> withUser(final @NonNull UserMemento user) {
-        // end::refguide[]
         this.user = user;
         return this;
-        // tag::refguide[]
         // ...
     }
 
-    // end::refguide[]
     /**
      * Set by framework.
      *
      * Contains the result of the invocation.  However, if an entity is returned, then the object is automatically
      * detached because the persistence session within which it was obtained will have been closed already.
      */
-    // tag::refguide[]
     @Getter @Setter
-    private Future<R> future;                                           // <.>
+    private Future<R> future;
 
-    // end::refguide[]
     private String logMessage() {
         StringBuilder buf = new StringBuilder("Failed to execute ");
         if(getMethod() != null) {
@@ -158,7 +138,5 @@ public class AsyncControl<R> extends ControlAbstract<AsyncControl<R>> {
         return buf.toString();
     }
 
-    // tag::refguide[]
     // ...
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ControlAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ControlAbstract.java
index 885c150..95c4e53 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ControlAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ControlAbstract.java
@@ -30,10 +30,12 @@ import lombok.AccessLevel;
 import lombok.Getter;
 import lombok.Setter;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public class ControlAbstract<T extends ControlAbstract<T>> {
 
-    // end::refguide[]
     protected ControlAbstract() {
     }
 
@@ -49,38 +51,30 @@ public class ControlAbstract<T extends ControlAbstract<T>> {
     @Getter(AccessLevel.PACKAGE) @Setter
     private Bookmark bookmark;
 
-    // tag::refguide[]
-    private boolean checkRules = true;                          // <.>
+    private boolean checkRules = true;
     public T withCheckRules() {
-        // end::refguide[]
         checkRules = true;
         return _Casts.uncheckedCast(this);
-        // tag::refguide[]
         // ...
     }
     public T withSkipRules() {
-        // end::refguide[]
         checkRules = false;
         return _Casts.uncheckedCast(this);
-        // tag::refguide[]
         // ...
     }
     
     private ExceptionHandler exceptionHandler;
    
-    public Optional<ExceptionHandler> getExceptionHandler() { // <.>
+    public Optional<ExceptionHandler> getExceptionHandler() {
         return Optional.ofNullable(exceptionHandler);
     }
                       
     public T with(ExceptionHandler exceptionHandler) {
-        // end::refguide[]
         this.exceptionHandler = exceptionHandler;
         return _Casts.uncheckedCast(this);
-        // tag::refguide[]
         // ...
     }
 
-    // end::refguide[]
     /**
      * Not API.
      */
@@ -92,6 +86,4 @@ public class ControlAbstract<T extends ControlAbstract<T>> {
         return ImmutableEnumSet.from(modes);
     }
 
-    // tag::refguide[]
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExceptionHandler.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExceptionHandler.java
index bda7a5b..864a31d 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExceptionHandler.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExceptionHandler.java
@@ -19,12 +19,12 @@
 package org.apache.isis.applib.services.wrapper.control;
 
 /**
+ * 
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 @FunctionalInterface
 public interface ExceptionHandler {
 
-    // end::refguide[]
     /**
      * Handle the exception in some way.
      *
@@ -35,8 +35,6 @@ public interface ExceptionHandler {
      * @param ex - the exception that has occurred
      * @return - optionally, the value to return.
      */
-    // tag::refguide[]
     Object handle(Exception ex) throws Exception;
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExceptionHandlerAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExceptionHandlerAbstract.java
index c6ae2bd..b66a914 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExceptionHandlerAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExceptionHandlerAbstract.java
@@ -22,13 +22,9 @@ import org.apache.logging.log4j.Logger;
 
 import lombok.extern.log4j.Log4j2;
 
-/**
- */
-// tag::refguide[]
 @Log4j2
 public abstract class ExceptionHandlerAbstract implements ExceptionHandler {
     public static Logger getLog() {
         return log;
     }
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExecutionMode.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExecutionMode.java
index 3048f61..d5db4b5 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExecutionMode.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/ExecutionMode.java
@@ -29,25 +29,20 @@ import lombok.RequiredArgsConstructor;
  * underlying domain object.
  *
  * @see WrapperFactory#wrap(Object, org.apache.isis.applib.services.wrapper.control.SyncControl)
+ * 
+ * @since 2.0 {@index}
  */
 @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
-// tag::refguide[]
 public enum ExecutionMode {
-    // end::refguide[]
     /**
      * Skip all business rules.
      */
-    // tag::refguide[]
     SKIP_RULE_VALIDATION,
-    // end::refguide[]
     /**
      * Skip actual execution.
      *
      * <p>
      * This is not supported for {@link WrapperFactory#asyncWrap(Object, AsyncControl)}; instead just invoke {@link WrapperFactory#wrap(Object, ImmutableEnumSet)}.
      */
-    // tag::refguide[]
     SKIP_EXECUTION,
-    // end::refguide[]
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/SyncControl.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/SyncControl.java
index 071ba73..847967d 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/SyncControl.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/control/SyncControl.java
@@ -23,8 +23,9 @@ import java.util.EnumSet;
 import org.apache.isis.commons.collections.ImmutableEnumSet;
 
 /**
+ * 
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public class SyncControl extends ControlAbstract<SyncControl> {
 
     public static SyncControl control() {
@@ -32,28 +33,23 @@ public class SyncControl extends ControlAbstract<SyncControl> {
     }
 
     private SyncControl() {
-        with(exception -> {                 // <.>
+        with(exception -> {
             throw exception;
         });
     }
 
-    private boolean execute = true;         // <.>
+    private boolean execute = true;
     public SyncControl withExecute() {
-        // end::refguide[]
         execute = true;
         return this;
-        // tag::refguide[]
         // ...
     }
     public SyncControl withNoExecute() {
-        // end::refguide[]
         execute = false;
         return this;
-        // tag::refguide[]
         // ...
     }
 
-    // end::refguide[]
     /**
      * Not API.
      */
@@ -64,7 +60,5 @@ public class SyncControl extends ControlAbstract<SyncControl> {
         }
         return ImmutableEnumSet.from(modes);
     }
-    // tag::refguide[]
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionArgumentEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionArgumentEvent.java
index d452be3..dd9839e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionArgumentEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionArgumentEvent.java
@@ -31,7 +31,8 @@ import org.apache.isis.applib.Identifier;
  *
  * <p>
  * Called once per argument, and before {@link ActionInvocationEvent}.
- *
+ * 
+ * @since 1.x {@index}
  */
 public class ActionArgumentEvent extends ValidityEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionInvocationEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionInvocationEvent.java
index 8053ef5..3f0caf8 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionInvocationEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionInvocationEvent.java
@@ -22,7 +22,8 @@ package org.apache.isis.applib.services.wrapper.events;
 import org.apache.isis.applib.Identifier;
 
 /**
- * <i>Supported only by {@link org.apache.isis.applib.services.wrapper.WrapperFactory} service, </i> represents a check as to whether a particular argument for an action is valid
+ * <i>Supported only by {@link WrapperFactory} service, </i> represents a check 
+ * as to whether a particular argument for an action is valid
  * or not.
  *
  * <p>
@@ -31,6 +32,8 @@ import org.apache.isis.applib.Identifier;
  *
  * <p>
  * Called after each of the {@link ActionArgumentEvent}s.
+ * 
+ * @since 1.x {@index}
  */
 public class ActionInvocationEvent extends ValidityEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionUsabilityEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionUsabilityEvent.java
index 79780de..e13bd17 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionUsabilityEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionUsabilityEvent.java
@@ -27,7 +27,7 @@ import org.apache.isis.applib.Identifier;
  * <p>
  * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
  * action is disabled; otherwise action is enabled.
- *
+ * @since 1.x {@index}
  */
 public class ActionUsabilityEvent extends UsabilityEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionVisibilityEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionVisibilityEvent.java
index 0c0b225..28bb5ed 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionVisibilityEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionVisibilityEvent.java
@@ -22,12 +22,14 @@ package org.apache.isis.applib.services.wrapper.events;
 import org.apache.isis.applib.Identifier;
 
 /**
- * <i>Supported only by {@link org.apache.isis.applib.services.wrapper.WrapperFactory} service, </i> represents a check as to whether an action is visible or has been hidden.
+ * <i>Supported only by {@link WrapperFactory} service, </i> represents a check as 
+ * to whether an action is visible or has been hidden.
  *
  * <p>
  * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
  * action is invisible; otherwise action is visible.
- *
+ * 
+ * @since 1.x {@index}
  */
 public class ActionVisibilityEvent extends VisibilityEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionAccessEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionAccessEvent.java
index 65eed05..d05fb9d 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionAccessEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionAccessEvent.java
@@ -30,6 +30,7 @@ import org.apache.isis.applib.Identifier;
  * always be <tt>null</tt>. (If access is not allowed then a vetoing
  * {@link CollectionVisibilityEvent} would have been fired).
  *
+ * @since 1.x {@index}
  */
 public class CollectionAccessEvent extends AccessEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionAddToEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionAddToEvent.java
index 74a9851..c696f0a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionAddToEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionAddToEvent.java
@@ -30,7 +30,8 @@ import org.apache.isis.applib.Identifier;
  * object is invalid; otherwise the object is valid.
  *
  * @see CollectionRemoveFromEvent
- *
+ * 
+ * @since 1.x {@index}
  */
 public class CollectionAddToEvent extends ValidityEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionMethodEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionMethodEvent.java
index ac809de..f0b76f5 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionMethodEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionMethodEvent.java
@@ -24,6 +24,7 @@ import org.apache.isis.applib.Identifier;
 /**
  * <i>Supported only by {@link org.apache.isis.applib.services.wrapper.WrapperFactory} service, </i> represents an interaction with a collection object itself.
  *
+ * @since 1.x {@index}
  */
 public class CollectionMethodEvent extends AccessEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionRemoveFromEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionRemoveFromEvent.java
index 44bd2d4..2af1263 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionRemoveFromEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionRemoveFromEvent.java
@@ -30,9 +30,9 @@ import org.apache.isis.applib.Identifier;
  * object is invalid; otherwise the object is valid.
  *
  * @see CollectionAddToEvent
- *
+ * @since 1.x {@index}
  */
-public class CollectionRemoveFromEvent extends ValidityEvent {
+ public class CollectionRemoveFromEvent extends ValidityEvent {
 
     private final Object proposed;
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionUsabilityEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionUsabilityEvent.java
index 7723551..1e5f3e5 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionUsabilityEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionUsabilityEvent.java
@@ -28,6 +28,8 @@ import org.apache.isis.applib.Identifier;
  * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
  * collection is disabled; otherwise collection is enabled.
  *
+ * 
+ * @since 1.x {@index}
  */
 public class CollectionUsabilityEvent extends UsabilityEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/InteractionEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/InteractionEvent.java
index ea74096..3e5a462 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/InteractionEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/InteractionEvent.java
@@ -33,6 +33,7 @@ import org.apache.isis.applib.events.EventObjectBase;
  * Many of the interactions are checks for {@link VisibilityEvent visibility},
  * {@link UsabilityEvent usability} and {@link ValidityEvent validity}.
  *
+ * @since 2.0 {@index}
  */
 public abstract class InteractionEvent extends EventObjectBase<Object> {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectTitleEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectTitleEvent.java
index fb27c98..6658e3e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectTitleEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectTitleEvent.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.Identifier;
  * The {@link #getReason()} will always be <tt>null</tt>; access is always
  * allowed.
  *
+ * @since 1.x {@index}
  */
 public class ObjectTitleEvent extends AccessEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectValidityEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectValidityEvent.java
index 240030e..de4c66b 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectValidityEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectValidityEvent.java
@@ -29,7 +29,8 @@ import org.apache.isis.applib.Identifier;
  * <p>
  * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
  * object is invalid, otherwise ok.
- *
+ * 
+ * @since 1.x {@index}
  */
 public class ObjectValidityEvent extends ValidityEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectVisibilityEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectVisibilityEvent.java
index aa36628..9945777 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectVisibilityEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectVisibilityEvent.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.Identifier;
  * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
  * object is invisible; otherwise action is visible.
  *
+ * @since 1.x {@index}
  */
 public class ObjectVisibilityEvent extends VisibilityEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ParseValueEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ParseValueEvent.java
index 71b575e..6cb5160 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ParseValueEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ParseValueEvent.java
@@ -28,7 +28,8 @@ import org.apache.isis.applib.Identifier;
  * <p>
  * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
  * proposed value is invalid, otherwise the new value is acceptable.
- *
+ * 
+ * @since 1.x {@index}
  */
 public class ParseValueEvent extends ValidityEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyAccessEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyAccessEvent.java
index 252e348..cf2e7e0 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyAccessEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyAccessEvent.java
@@ -29,6 +29,7 @@ import org.apache.isis.applib.Identifier;
  * will always be <tt>null</tt>. (If access is not allowed then a
  * {@link PropertyVisibilityEvent} would have been fired).
  *
+ * @since 1.x {@index}
  */
 public class PropertyAccessEvent extends AccessEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyModifyEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyModifyEvent.java
index 8f75f91..6c3588e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyModifyEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyModifyEvent.java
@@ -28,7 +28,7 @@ import org.apache.isis.applib.Identifier;
  * <p>
  * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
  * value is invalid; otherwise the value is valid.
- *
+ * @since 1.x {@index}
  */
 public class PropertyModifyEvent extends ValidityEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyUsabilityEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyUsabilityEvent.java
index 03e6e31..b79913b 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyUsabilityEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyUsabilityEvent.java
@@ -27,7 +27,7 @@ import org.apache.isis.applib.Identifier;
  * <p>
  * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
  * property is disabled; otherwise property is enabled.
- *
+ * @since 1.x {@index}
  */
 public class PropertyUsabilityEvent extends UsabilityEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyVisibilityEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyVisibilityEvent.java
index 4792330..747f0d2 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyVisibilityEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyVisibilityEvent.java
@@ -27,7 +27,7 @@ import org.apache.isis.applib.Identifier;
  * <p>
  * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
  * property is invisible; otherwise property is visible.
- *
+ * @since 1.x {@index}
  */
 public class PropertyVisibilityEvent extends VisibilityEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ProposedHolderEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ProposedHolderEvent.java
index 2c9a386..f91ed61 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ProposedHolderEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ProposedHolderEvent.java
@@ -23,7 +23,7 @@ package org.apache.isis.applib.services.wrapper.events;
  * <i>Supported only by {@link org.apache.isis.applib.services.wrapper.WrapperFactory} service, </i> makes it easier to process different events that hold a single proposed
  * argument (such as {@link CollectionAddToEvent} and
  * {@link PropertyModifyEvent}).
- *
+ * @since 1.x {@index}
  */
 public interface ProposedHolderEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/UsabilityEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/UsabilityEvent.java
index 8314dce..cb552a3 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/UsabilityEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/UsabilityEvent.java
@@ -32,7 +32,7 @@ import org.apache.isis.applib.Identifier;
  * @see AccessEvent
  * @see VisibilityEvent
  * @see ValidityEvent
- *
+ * @since 1.x {@index}
  */
 public abstract class UsabilityEvent extends InteractionEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ValidityEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ValidityEvent.java
index 28fecbb..13983ae 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ValidityEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ValidityEvent.java
@@ -41,7 +41,7 @@ import org.apache.isis.applib.Identifier;
  * @see AccessEvent
  * @see VisibilityEvent
  * @see UsabilityEvent
- *
+ * @since 1.x {@index}
  */
 public abstract class ValidityEvent extends InteractionEvent implements ProposedHolderEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/VisibilityEvent.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/VisibilityEvent.java
index f839360..706da59 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/VisibilityEvent.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/VisibilityEvent.java
@@ -22,7 +22,8 @@ package org.apache.isis.applib.services.wrapper.events;
 import org.apache.isis.applib.Identifier;
 
 /**
- * <i>Supported only by {@link org.apache.isis.applib.services.wrapper.WrapperFactory} service, </i> represents a check to determine whether a member of an object is visible or
+ * <i>Supported only by {@link WrapperFactory} service, </i> represents a 
+ * check to determine whether a member of an object is visible or
  * has been hidden.
  *
  * <p>
@@ -32,7 +33,7 @@ import org.apache.isis.applib.Identifier;
  * @see AccessEvent
  * @see UsabilityEvent
  * @see ValidityEvent
- *
+ * @since 1.x {@index}
  */
 public abstract class VisibilityEvent extends InteractionEvent {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/listeners/InteractionAdapter.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/listeners/InteractionAdapter.java
index 8cd899f..b7e2a89 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/listeners/InteractionAdapter.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/listeners/InteractionAdapter.java
@@ -39,6 +39,7 @@ import org.apache.isis.applib.services.wrapper.events.PropertyVisibilityEvent;
 /**
  * Provides no-op implementations of each of the methods within
  * {@link InteractionListener}, to simplify the creation of new listeners.
+ * @since 2.0 {@index}
  */
 public class InteractionAdapter implements InteractionListener {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/listeners/InteractionListener.java b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/listeners/InteractionListener.java
index a9e1188..1a8b55e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/listeners/InteractionListener.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/wrapper/listeners/InteractionListener.java
@@ -36,6 +36,10 @@ import org.apache.isis.applib.services.wrapper.events.PropertyModifyEvent;
 import org.apache.isis.applib.services.wrapper.events.PropertyUsabilityEvent;
 import org.apache.isis.applib.services.wrapper.events.PropertyVisibilityEvent;
 
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public interface InteractionListener {
 
     /**
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/xactn/Transaction.java b/api/applib/src/main/java/org/apache/isis/applib/services/xactn/Transaction.java
index 7ba0a5f..fa36288 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/xactn/Transaction.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/xactn/Transaction.java
@@ -19,17 +19,14 @@
 
 package org.apache.isis.applib.services.xactn;
 
-import org.apache.isis.applib.annotation.Programmatic;
-
 /**
  * Representation of the current transaction, which conceptually wraps the underlying transaction context's transaction.
+ * @since 1.x {@index}
  */
-// tag::refguide[]
 public interface Transaction {
 
     TransactionId getId();
 
-    // end::refguide[]
     /**
      * Flush all changes to the object store.
      *
@@ -42,10 +39,8 @@ public interface Transaction {
      *     Equivalent to {@link TransactionService#flushTransaction()}.
      * </p>
      */
-    // tag::refguide[]
     void flush();
 
     TransactionState getTransactionState();
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionId.java b/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionId.java
index 93a52ba..3120cf1 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionId.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionId.java
@@ -24,25 +24,23 @@ import org.apache.isis.commons.having.HasUniqueId;
 
 import lombok.Data;
 
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 @Data(staticConstructor = "of")
-// tag::refguide[]
 public final class TransactionId implements HasUniqueId {
     private final UUID uniqueId;
-    // end::refguide[]
     /**
      * The {@link HasUniqueId#getUniqueId()} is actually an identifier for the request/
      * interaction, and there can actually be multiple transactions within such a request/interaction.
      * The sequence (0-based) is used to distinguish such.
      */
-    // tag::refguide[]
     private final int sequence;
-    // end::refguide[]
     private static final TransactionId EMPTY = TransactionId.of(UUID.fromString("0000-00-00-00-000000"), 0);
 
     public static TransactionId empty() {
         return EMPTY;
     }
 
-    // tag::refguide[]
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionService.java b/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionService.java
index f308df4..5bde8e6 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionService.java
@@ -22,29 +22,24 @@ package org.apache.isis.applib.services.xactn;
 import java.util.function.Supplier;
 
 /**
- * @since 2.0
+ * 
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public interface TransactionService {
 
-    // end::refguide[]
     /**
      * When called within an existing transactional boundary returns the unique identifier to the transaction,
      * {@code null} otherwise.
      *
      * @return nullable
      */
-    // tag::refguide[]
-    TransactionId currentTransactionId();                   // <.>
+    TransactionId currentTransactionId();
 
-    // end::refguide[]
     /**
      * @return - the state of the current transaction.  If there is no current transaction, then returns {@link TransactionState#NONE}.
      */
-    // tag::refguide[]
-    TransactionState currentTransactionState();             // <.>
+    TransactionState currentTransactionState();
 
-    // end::refguide[]
     /**
      * Flush all changes to the object store.
      *
@@ -53,41 +48,31 @@ public interface TransactionService {
      * are flushed to the database prior to a subsequent repository query.
      * </p>
      */
-    // tag::refguide[]
-    void flushTransaction();                                // <.>
+    void flushTransaction();
 
-    // end::refguide[]
 
     /**
      * Commits the current transaction (if there is one), and begins a new one.
      *
      * If there is no current transaction, then is a no-op.
      */
-    // tag::refguide[]
-    void nextTransaction();                                 // <.>
+    void nextTransaction();
 
-    // end::refguide[]
     /**
      * Runs given {@code task} within an existing transactional boundary, or in the absence of such a
      * boundary creates a new one.
      *
      * @param task
      */
-    // tag::refguide[]
-    void executeWithinTransaction(Runnable task);           // <.>
+    void executeWithinTransaction(Runnable task);
 
-    // end::refguide[]
     /**
      * Runs given {@code task} within an existing transactional boundary, or in the absence of such a
      * boundary creates a new one.
      *
      * @param task
      */
-    // tag::refguide[]
-    <T> T executeWithinTransaction(Supplier<T> task);       // <.>
-    // end::refguide[]
+    <T> T executeWithinTransaction(Supplier<T> task);
 
 
-    // tag::refguide[]
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionState.java b/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionState.java
index 4585d03..05d23e5 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionState.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionState.java
@@ -18,24 +18,22 @@
  */
 package org.apache.isis.applib.services.xactn;
 
-// tag::refguide[]
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 public enum TransactionState {
-    // end::refguide[]
     /**
      * No transaction exists.
      */
-    // tag::refguide[]
     NONE,
-    // end::refguide[]
     /**
      * Started, still in progress.
      * <p/>
      * <p/>
      * May flush, commit or abort.
      */
-    // tag::refguide[]
     IN_PROGRESS,
-    // end::refguide[]
     /**
      * Started, but has hit an exception.
      * <p/>
@@ -46,27 +44,21 @@ public enum TransactionState {
      * <p/>
      * Similar to <tt>setRollbackOnly</tt> in EJBs.
      */
-    // tag::refguide[]
     MUST_ABORT,
-    // end::refguide[]
     /**
      * Completed, having successfully committed.
      * <p/>
      * <p/>
      * May not flush or abort or commit (will throw {@link IllegalStateException}).
      */
-    // tag::refguide[]
     COMMITTED,
-    // end::refguide[]
     /**
      * Completed, having aborted.
      * <p/>
      * <p/>
      * May not flush, commit or abort (will throw {@link IllegalStateException}).
      */
-    // tag::refguide[]
     ABORTED
-    // end::refguide[]
     ;
 
     private TransactionState() {
@@ -104,6 +96,4 @@ public enum TransactionState {
         return this == MUST_ABORT;
     }
 
-    // tag::refguide[]
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/xml/XmlService.java b/api/applib/src/main/java/org/apache/isis/applib/services/xml/XmlService.java
index 189c423..577171e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/xml/XmlService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/xml/XmlService.java
@@ -21,71 +21,37 @@ package org.apache.isis.applib.services.xml;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
-import org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotService;
-
 /**
  * This service provides a number of utility services for interacting with XML {@link Document}s
+ * 
+ * @since 1.x {@index}
  */
-// tag::refguide[]
 public interface XmlService {
 
-    // end::refguide[]
-
-    // tag::refguide-3[]
-    class Exception extends RuntimeException {
-
-        private static final long serialVersionUID = 1L;
-
-        public Exception() {
-            super();
-        }
-
-        public Exception(String message, Throwable cause) {
-            super(message, cause);
-        }
-
-        public Exception(String message) {
-            super(message);
-        }
-
-        public Exception(Throwable cause) {
-            super(cause);
-        }
-    }
-    // end::refguide-3[]
-
 
     /**
      * Converts xml string into an {@link Document W3C Document}.
      *
      * @see #asString(Document)
      */
-    // tag::refguide[]
-    Document asDocument(String xmlStr);                         // <.>
+    Document asDocument(String xmlStr);
 
-    // end::refguide[]
     /**
      * Serializes a {@link Document W3C Document} back into a string.
      *
      * @see #asDocument(String)
      */
-    // tag::refguide[]
-    public String asString(final Document doc);                 // <.>
+    public String asString(final Document doc);
 
-    // end::refguide[]
     /**
      * Convenience method to walk XML document.
      */
-    // tag::refguide[]
-    Element getChildElement(                                    // <.>
+    Element getChildElement(
                     final Element el, final String tagname);
 
-    // end::refguide[]
     /**
      * Convenience method to obtain value of child text node.
      */
-    // tag::refguide[]
-    String getChildTextValue(final Element el);                 // <.>
+    String getChildTextValue(final Element el);
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/xmlsnapshot/XmlSnapshotService.java b/api/applib/src/main/java/org/apache/isis/applib/services/xmlsnapshot/XmlSnapshotService.java
index 7a872ca..4c40f25 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/xmlsnapshot/XmlSnapshotService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/xmlsnapshot/XmlSnapshotService.java
@@ -31,81 +31,59 @@ import org.w3c.dom.Element;
  * </p>
  * @since 1.x {@index}
  */
-// tag::refguide[]
 public interface XmlSnapshotService {
 
-    // end::refguide[]
     /**
      * @since 1.x {@index}
      */
-    // tag::refguide-1[]
     interface Snapshot {
-        // end::refguide-1[]
         /**
          *  Converts the snapshotted state into an XML document.
          */
-        // tag::refguide-1[]
-        Document getXmlDocument();          // <.>
-        // end::refguide-1[]
+        Document getXmlDocument();
         /**
          *  Creates a corresponding XSD that describes the structure of the exported XML.
          */
-        // tag::refguide-1[]
-        Document getXsdDocument();          // <.>
-        // end::refguide-1[]
+        Document getXsdDocument();
         /**
          * @since 1.x {@index}
          */
-        // tag::refguide-2[]
         interface Builder {
-            // end::refguide-2[]
             /**
              * Enrich the snapshot to include the state of these referenced objects 
              */
-            // tag::refguide-2[]
-            void includePath(final String path);                    // <.>
-            // end::refguide-2[]
+            void includePath(final String path);
             /**
              * Ditto, but add an XML annotation attribute to the included element(s).
              */
-            // tag::refguide-2[]
-            void includePathAndAnnotation(                          // <.>
+            void includePathAndAnnotation(
                 final String path, final String annotation);
-            // end::refguide-2[]
             /**
              * Builds the Snapshot.
              */
-            // tag::refguide-2[]
-            XmlSnapshotService.Snapshot build();                    // <.>
+            XmlSnapshotService.Snapshot build();
         }
-        // end::refguide-2[]
-        // tag::refguide-1[]
     }
-    // end::refguide-1[]
 
     /**
      *  Exports the state of a domain object into a Snapshot (which can then be converted into XML, for example).
      */
-    // tag::refguide[]
-    XmlSnapshotService.Snapshot snapshotFor(                    // <.>
+    XmlSnapshotService.Snapshot snapshotFor(
                                     final Object domainObject);
 
     /**
      *  Creates a Snapshot.Builder that allows the contents of the snapshot to include other related state. 
      */
-    XmlSnapshotService.Snapshot.Builder builderFor(             // <.>
+    XmlSnapshotService.Snapshot.Builder builderFor(
                                     final Object domainObject);
 
-    // end::refguide[]
 
     /**
      * Convenience method to extract value of an XML element, based on its type.
      */
-    // tag::refguide[]
-    <T> T getChildElementValue(                                 // <.>
+    <T> T getChildElementValue(
             final Element el, final String tagname,
             final Class<T> expectedCls);
 
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/xmlsnapshot/XmlSnapshotServiceAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/services/xmlsnapshot/XmlSnapshotServiceAbstract.java
deleted file mode 100644
index 05d3b61..0000000
--- a/api/applib/src/main/java/org/apache/isis/applib/services/xmlsnapshot/XmlSnapshotServiceAbstract.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.applib.services.xmlsnapshot;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
-import java.util.Locale;
-
-import javax.inject.Inject;
-
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
-
-import org.apache.isis.applib.services.xml.XmlService;
-
-public abstract class XmlSnapshotServiceAbstract implements XmlSnapshotService {
-
-
-}
diff --git a/commons/src/main/java/org/apache/isis/commons/internal/base/_Text.java b/commons/src/main/java/org/apache/isis/commons/internal/base/_Text.java
index b1932e3..e21f829 100644
--- a/commons/src/main/java/org/apache/isis/commons/internal/base/_Text.java
+++ b/commons/src/main/java/org/apache/isis/commons/internal/base/_Text.java
@@ -19,9 +19,12 @@
 
 package org.apache.isis.commons.internal.base;
 
+import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileOutputStream;
 import java.io.InputStream;
+import java.io.OutputStreamWriter;
 import java.net.URL;
 import java.nio.charset.Charset;
 import java.util.ArrayList;
@@ -128,6 +131,21 @@ public final class _Text {
         } 
     }
 
+    // -- WRITING
+    
+    @SneakyThrows
+    public static void writeLinesToFile(
+            final @NonNull Iterable<String> lines,
+            final @NonNull File file, 
+            final @NonNull Charset charset) {
+        
+        try(val bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), charset))) {
+            for(val line : lines) {
+                bw.append(line).append("\n");    
+            }
+        } 
+    }
+    
     // -- NORMALIZING
     
     public static String normalize(final @Nullable String text) {
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/xml/XmlServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/xml/XmlServiceDefault.java
index 720347b..eedfc57 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/xml/XmlServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/xml/XmlServiceDefault.java
@@ -20,11 +20,6 @@ package org.apache.isis.core.runtimeservices.xml;
 
 import java.io.StringReader;
 import java.io.StringWriter;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
-import java.util.Locale;
 
 import javax.inject.Named;
 import javax.xml.transform.OutputKeys;
@@ -46,21 +41,22 @@ import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 import org.w3c.dom.Text;
 
-import org.apache.isis.applib.annotation.IsisInteractionScope;
 import org.apache.isis.applib.annotation.OrderPrecedence;
 import org.apache.isis.applib.services.xml.XmlService;
-import org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotService;
 import org.apache.isis.commons.exceptions.IsisException;
 import org.apache.isis.commons.internal.codec._DocumentFactories;
+import org.apache.isis.commons.internal.exceptions._Exceptions;
 
-import lombok.extern.log4j.Log4j2;
-
+/**
+ * 
+ * @since 2.0 {@index}
+ */
 @Service
 @Named("isisRuntimeServices.XmlService")
 @Order(OrderPrecedence.EARLY)
 @Primary
 @Qualifier("Default")
-@Log4j2
+//@Log4j2
 public class XmlServiceDefault implements XmlService {
 
     @Override
@@ -81,7 +77,7 @@ public class XmlServiceDefault implements XmlService {
             final Node node = result.getNode();
             return (Document) node;
         } catch (TransformerException e) {
-            throw new Exception(e);
+            throw _Exceptions.unrecoverable(e);
         }
     }
 
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/xmlsnapshot/XmlSnapshotServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/xmlsnapshot/XmlSnapshotServiceDefault.java
index 17f26c5..cea0354 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/xmlsnapshot/XmlSnapshotServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/xmlsnapshot/XmlSnapshotServiceDefault.java
@@ -36,7 +36,6 @@ import org.w3c.dom.Element;
 import org.apache.isis.applib.annotation.OrderPrecedence;
 import org.apache.isis.applib.services.xml.XmlService;
 import org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotService;
-import org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotServiceAbstract;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.util.snapshot.XmlSnapshot;
@@ -49,6 +48,7 @@ import org.apache.isis.core.metamodel.util.snapshot.XmlSnapshot;
  * This implementation has no UI and there are no other implementations of the service API, and so it annotated
  * with {@link 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.
+ * @since 2.0 {@index}
  */
 @Service
 @Named("isisRuntimeServices.XmlSnapshotServiceDefault")
diff --git a/core/runtimeservices/src/test/java/org/apache/isis/core/runtimeservices/xmlsnapshot/XmlSnapshotServiceDefault_Test.java b/core/runtimeservices/src/test/java/org/apache/isis/core/runtimeservices/xmlsnapshot/XmlSnapshotServiceDefault_Test.java
index 08f0398..746cb64 100644
--- a/core/runtimeservices/src/test/java/org/apache/isis/core/runtimeservices/xmlsnapshot/XmlSnapshotServiceDefault_Test.java
+++ b/core/runtimeservices/src/test/java/org/apache/isis/core/runtimeservices/xmlsnapshot/XmlSnapshotServiceDefault_Test.java
@@ -30,8 +30,6 @@ import org.w3c.dom.Element;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 
-import org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotService;
-import org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotServiceAbstract;
 import org.apache.isis.commons.internal.resources._Resources;
 import org.apache.isis.core.runtimeservices.xml.XmlServiceDefault;
 
diff --git a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/doclet/AdocIncludeTagFilter.java b/tooling/cli/src/main/java/org/apache/isis/tooling/cli/doclet/AdocIncludeTagFilter.java
index a996d88..43f1cb5 100644
--- a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/doclet/AdocIncludeTagFilter.java
+++ b/tooling/cli/src/main/java/org/apache/isis/tooling/cli/doclet/AdocIncludeTagFilter.java
@@ -24,33 +24,63 @@ import java.util.stream.Collectors;
 
 import org.apache.isis.commons.internal.base._Text;
 
-final class AdocIncludeTagFilter {
+import lombok.val;
+
+public final class AdocIncludeTagFilter {
     
     public static String read(File source) {
         return _Text.readLinesFromFile(source, StandardCharsets.UTF_8).stream()
         //.filter(line->!containsIncludeTag(line))
         .filter(line->!isAllLineComment(line))
-        .map(AdocIncludeTagFilter::removeFootNote)
+        .map(AdocIncludeTagFilter::removeFootNoteReference)
         .collect(Collectors.joining("\n"));
     }
     
+    public static void removeAdocExampleTags(File source) {
+        val fixedLines = _Text.readLinesFromFile(source, StandardCharsets.UTF_8)
+        .filter(line->!isIncludeTagComment(line))
+        .map(AdocIncludeTagFilter::removeFootNoteReference);
+        
+        _Text.writeLinesToFile(fixedLines, source, StandardCharsets.UTF_8);
+    }
+    
     // -- HELPER
 
-//    private static boolean containsIncludeTag(String line) {
-//        line = line.trim();
-//        if(!line.startsWith("//")) {
-//            return false;
-//        }
-//        return line.contains(" tag::")
-//                || line.contains(" end::");
-//    }
+    private static boolean isIncludeTagComment(String line) {
+        line = line.trim();
+        if(!line.startsWith("//")) {
+            return false;
+        }
+        return line.contains(" tag::")
+                || line.contains(" end::");
+    }
 
     private static boolean isAllLineComment(String line) {
         return line.trim().startsWith("//");
     }
     
-    private static String removeFootNote(String line) {
-        return line.replace("// <.>", "").stripTrailing();
+    private static String removeFootNoteReference(String line) {
+        if(!line.contains("// <")) {
+            return line;
+        }
+        return line.replace("// <.>", "")
+                .replace("// <1>", "")
+                .replace("// <2>", "")
+                .replace("// <3>", "")
+                .replace("// <4>", "")
+                .replace("// <5>", "")
+                .replace("// <6>", "")
+                .replace("// <7>", "")
+                .replace("// <8>", "")
+                .replace("// <9>", "")
+                .replace("// <10>", "")
+                .replace("// <11>", "")
+                .replace("// <12>", "")
+                .replace("// <13>", "")
+                .replace("// <14>", "")
+                .replace("// <15>", "")
+                .replace("// <16>", "")
+                .stripTrailing();
     }
     
 }
diff --git a/tooling/cli/src/test/java/org/apache/isis/tooling/cli/test/doclet/AdocletTest.java b/tooling/cli/src/test/java/org/apache/isis/tooling/cli/test/doclet/AdocletTest.java
index 2283eb1..ca1d12d 100644
--- a/tooling/cli/src/test/java/org/apache/isis/tooling/cli/test/doclet/AdocletTest.java
+++ b/tooling/cli/src/test/java/org/apache/isis/tooling/cli/test/doclet/AdocletTest.java
@@ -31,6 +31,7 @@ import org.apache.isis.commons.internal.base._Files;
 import org.apache.isis.commons.internal.base._Text;
 import org.apache.isis.commons.internal.collections._Sets;
 import org.apache.isis.commons.internal.functions._Predicates;
+import org.apache.isis.tooling.cli.doclet.AdocIncludeTagFilter;
 import org.apache.isis.tooling.cli.doclet.AdocletContext;
 import org.apache.isis.tooling.javamodel.AnalyzerConfigFactory;
 
@@ -72,7 +73,22 @@ class AdocletTest {
     }
     
     @Test //@Disabled
-    void testAdocDocMining() throws IOException {
+    void removeAdocExampleTags() throws IOException {
+        
+        val analyzerConfig = AnalyzerConfigFactory
+                .maven(ProjectSampler.apacheIsisApplib(), Language.JAVA)
+                .main();
+        
+        analyzerConfig.getSources(JAVA)
+        .stream()
+        .peek(source->System.out.println("parsing source: " + source))
+        .filter(source->source.toString().contains("\\applib\\services\\"))
+        .forEach(AdocIncludeTagFilter::removeAdocExampleTags);
+        
+    }
+    
+    @Test @Disabled
+    void adocDocMining() throws IOException {
         
         val adocFiles = 
                 _Files.searchFiles(
@@ -97,10 +113,11 @@ class AdocletTest {
         .forEach(line->{
             //System.out.println("--- " + file);
             
-            val shortRef = line.substring(line.indexOf("/")+1);
+            //val shortRef = line.substring(line.indexOf("/")+1);
+            val shortRef = line.substring(line.lastIndexOf("/")+1);
             val shortName = shortRef.substring(0, shortRef.lastIndexOf(".java"));
             
-            onShortName.accept(shortName+".java");
+            onShortName.accept(shortName);//+".java");
         });