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 16:16:38 UTC

[isis] branch master updated: ISIS-2473: service examples copy script: provide explicit list of files to copy, so we can migrate one by one to use the auto generated files instead

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 c44a686  ISIS-2473: service examples copy script: provide explicit list of files to copy, so we can migrate one by one to use the auto generated files instead
c44a686 is described below

commit c44a686fc5ca6075afea75f8843b64160b3388f1
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Dec 10 17:16:22 2020 +0100

    ISIS-2473: service examples copy script: provide explicit list of files
    to copy,
    so we can migrate one by one to use the auto generated files instead
    
    the list of examples fils was autogenerated by parsing all the adoc
    files locking for any
    references to "refguide:applib-svc:example$services/..."
---
 .../src/main/adoc/modules/applib-svc/examples.sh   |  92 ++++-
 .../examples/services/DomainChangeRecord.java      | 157 ---------
 .../DomainChangeRecord_openTargetObject.java       |  79 -----
 .../examples/services/MethodReferences.java        |  95 -----
 .../RepresentsInteractionMemberExecution.java      |  38 --
 .../services/TransactionScopeListener.java         |  52 ---
 .../examples/services/appfeat/package-info.java    |  27 --
 .../services/bookmark/BookmarkHolder_lookup.java   |  52 ---
 .../services/bookmark/BookmarkHolder_object.java   |  47 ---
 .../examples/services/bookmark/package-info.java   |  27 --
 .../examples/services/clock/package-info.java      |  25 --
 .../examples/services/command/Command.java         | 384 ---------------------
 .../services/command/CommandExecutorService.java   |  74 ----
 .../services/command/CommandOutcomeHandler.java    |  42 ---
 .../examples/services/command/package-info.java    |  20 --
 .../services/commanddto/HasCommandDto.java         |  30 --
 .../conmap/ContentMappingServiceForCommandDto.java | 107 ------
 .../ContentMappingServiceForCommandsDto.java       |  95 -----
 .../services/commanddto/conmap/UserDataKeys.java   |  34 --
 .../CommandDtoProcessorForActionAbstract.java      |  39 ---
 .../CommandDtoProcessorForPropertyAbstract.java    |  33 --
 .../spi/CommandDtoProcessorServiceIdentity.java    |  41 ---
 .../confview/ConfigurationProperty.layout.xml      |  57 ---
 .../services/confview/ConfigurationProperty.png    | Bin 927 -> 0 bytes
 .../examples/services/confview/package-info.java   |  26 --
 .../examples/services/conmap/package-info.java     |  27 --
 .../examples/services/email/EmailService.java      |  53 ---
 .../examples/services/email/package-info.java      |  26 --
 .../examples/services/error/package-info.java      |  28 --
 .../examples/services/eventbus/package-info.java   |  26 --
 .../exceprecog/ExceptionRecognizerAbstract.java    | 131 -------
 .../exceprecog/ExceptionRecognizerForType.java     | 182 ----------
 .../services/exceprecog/TranslatableException.java |  59 ----
 .../examples/services/exceprecog/package-info.java |  28 --
 .../examples/services/factory/FactoryService.java  |   5 +
 .../examples/services/factory/package-info.java    |  26 --
 .../examples/services/grid/package-info.java       |  26 --
 .../examples/services/health/Health.java           |  45 ---
 .../examples/services/hint/package-info.java       |  28 --
 .../examples/services/homepage/package-info.java   |  24 --
 .../examples/services/i18n/TranslatableString.java | 292 ----------------
 .../examples/services/i18n/package-info.java       |  28 --
 .../examples/services/iactn/ExecutionContext.java  |  83 -----
 .../services/iactn/InteractionContext.java         |  10 +-
 .../examples/services/iactn/package-info.java      |  29 --
 .../jaxb/CatalogingSchemaOutputResolver.java       | 153 --------
 .../services/jaxb/StreamResultWithWriter.java      |  47 ---
 .../examples/services/jaxb/package-info.java       |  26 --
 .../examples/services/layout/package-info.java     |  27 --
 .../examples/services/linking/package-info.java    |  26 --
 .../examples/services/message/package-info.java    |  26 --
 .../examples/services/metamodel/package-info.java  |  26 --
 .../examples/services/metrics/MetricsService.java  |   4 +-
 .../examples/services/metrics/package-info.java    |  27 --
 .../applib-svc/examples/services/package-info.java |  24 --
 .../services/publishing/log/CommandLogger.java     |  57 ---
 .../publishing/log/EntityChangesLogger.java        |  59 ----
 .../publishing/log/EntityPropertyChangeLogger.java |  52 ---
 .../services/publishing/log/ExecutionLogger.java   |  60 ----
 .../examples/services/publishing/package-info.java |  34 --
 .../services/publishing/spi/CommandSubscriber.java |  45 ---
 .../services/publishing/spi/EntityChanges.java     |  44 ---
 .../publishing/spi/EntityChangesSubscriber.java    |  36 --
 .../publishing/spi/EntityPropertyChange.java       |  59 ----
 .../spi/EntityPropertyChangeSubscriber.java        |  39 ---
 .../publishing/spi/ExecutionSubscriber.java        |  45 ---
 .../services/queryresultscache/package-info.java   |  27 --
 .../services/registry/ServiceRegistry.java         | 205 -----------
 .../examples/services/registry/package-info.java   |  27 --
 .../examples/services/repository/package-info.java |  27 --
 .../examples/services/routing/package-info.java    |  26 --
 .../examples/services/scratchpad/package-info.java |  26 --
 .../session/SessionLoggingServiceLogging.java      |  69 ----
 .../examples/services/session/package-info.java    |  24 --
 .../examples/services/sudo/SudoService.java        |   7 +-
 .../examples/services/sudo/package-info.java       |  29 --
 .../examples/services/swagger/package-info.java    |  26 --
 .../TableColumnOrderForCollectionTypeAbstract.java |  65 ----
 .../examples/services/title/package-info.java      |  25 --
 ...rlEncodingServiceUsingBaseEncodingAbstract.java |  44 ---
 .../services/urlencoding/package-info.java         |  29 --
 .../examples/services/user/RoleMemento.java        |  14 +-
 .../examples/services/user/UserMemento.java        |  16 +-
 .../examples/services/user/UserService.java        |  36 +-
 .../examples/services/user/package-info.java       |  37 --
 .../examples/services/userprof/package-info.java   |  28 --
 .../examples/services/userreg/UserDetails.java     |  45 ---
 .../userreg/events/EmailEventAbstract.java         |  50 ---
 .../userreg/events/EmailRegistrationEvent.java     |  33 --
 .../userreg/events/PasswordResetEvent.java         |  33 --
 .../examples/services/userreg/package-info.java    |  27 --
 .../services/wrapper/DisabledException.java        |  42 ---
 .../examples/services/wrapper/HiddenException.java |  42 ---
 .../services/wrapper/InteractionException.java     |  75 ----
 .../services/wrapper/InvalidException.java         |  45 ---
 .../examples/services/wrapper/WrappingObject.java  |  80 -----
 .../wrapper/control/ExceptionHandlerAbstract.java  |  34 --
 .../services/wrapper/control/ExecutionMode.java    |  53 ---
 .../services/wrapper/events/AccessEvent.java       |  44 ---
 .../wrapper/events/ActionArgumentEvent.java        |  72 ----
 .../wrapper/events/ActionInvocationEvent.java      |  60 ----
 .../wrapper/events/ActionUsabilityEvent.java       |  38 --
 .../wrapper/events/ActionVisibilityEvent.java      |  38 --
 .../wrapper/events/CollectionAccessEvent.java      |  40 ---
 .../wrapper/events/CollectionAddToEvent.java       |  54 ---
 .../wrapper/events/CollectionMethodEvent.java      |  92 -----
 .../wrapper/events/CollectionRemoveFromEvent.java  |  49 ---
 .../wrapper/events/CollectionUsabilityEvent.java   |  38 --
 .../wrapper/events/CollectionVisibilityEvent.java  |  38 --
 .../services/wrapper/events/InteractionEvent.java  | 194 -----------
 .../services/wrapper/events/ObjectTitleEvent.java  |  45 ---
 .../wrapper/events/ObjectValidityEvent.java        |  45 ---
 .../wrapper/events/ObjectVisibilityEvent.java      |  38 --
 .../services/wrapper/events/ParseValueEvent.java   |  61 ----
 .../wrapper/events/PropertyAccessEvent.java        |  46 ---
 .../wrapper/events/PropertyModifyEvent.java        |  52 ---
 .../wrapper/events/PropertyUsabilityEvent.java     |  38 --
 .../wrapper/events/PropertyVisibilityEvent.java    |  38 --
 .../wrapper/events/ProposedHolderEvent.java        |  34 --
 .../services/wrapper/events/UsabilityEvent.java    |  43 ---
 .../services/wrapper/events/ValidityEvent.java     |  61 ----
 .../services/wrapper/events/VisibilityEvent.java   |  43 ---
 .../services/wrapper/events/package-info.java      |  26 --
 .../wrapper/listeners/InteractionAdapter.java      | 109 ------
 .../wrapper/listeners/InteractionListener.java     | 194 -----------
 .../examples/services/wrapper/package-info.java    |  28 --
 .../examples/services/xactn/Transaction.java       |  51 ---
 .../examples/services/xactn/package-info.java      |  26 --
 .../examples/services/xml/package-info.java        |  24 --
 .../services/xmlsnapshot/XmlSnapshotService.java   |  38 ++
 .../xmlsnapshot/XmlSnapshotServiceAbstract.java    |  38 --
 .../services/xmlsnapshot/package-info.java         |  26 --
 .../isis/tooling/cli/test/doclet/AdocletTest.java  |  23 +-
 .../isis/tooling/javamodel/CompilationUnits.java   |  18 +-
 134 files changed, 190 insertions(+), 6803 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 51b5e0d..aab6e74 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/examples.sh
+++ b/api/applib/src/main/adoc/modules/applib-svc/examples.sh
@@ -20,13 +20,99 @@ SRC_MAIN_JAVA=../../../java
 SCRIPT_DIR=$( dirname "$0" )
 cd $SCRIPT_DIR || exit 1
 
-
-
 SRC_APPLIB=$SRC_MAIN_JAVA/org/apache/isis/applib
 
 for dir in services
 do
   rm -rf examples/$dir
   mkdir -p examples/$dir
-  cp -R $SRC_APPLIB/$dir/* examples/$dir
+  #cp -R $SRC_APPLIB/$dir/* examples/$dir
+done
+
+export javaFiles="
+acceptheader/AcceptHeaderService.java
+appfeat/ApplicationFeatureRepository.java
+appfeat/ApplicationMemberType.java
+audit/AuditerService.java
+bookmark/Bookmark.java
+bookmark/BookmarkHolder.java
+bookmark/BookmarkService.java
+bookmarkui/BookmarkUiService.java
+clock/ClockService.java
+commanddto/processor/CommandDtoProcessor.java
+commanddto/processor/spi/CommandDtoProcessorService.java
+confview/ConfigurationMenu.java
+confview/ConfigurationProperty.java
+confview/ConfigurationViewService.java
+conmap/ContentMappingService.java
+error/ErrorDetails.java
+error/ErrorReportingService.java
+error/Ticket.java
+eventbus/EventBusService.java
+exceprecog/ExceptionRecognizer.java
+exceprecog/ExceptionRecognizerService.java
+factory/FactoryService.java
+grid/GridLoaderService.java
+grid/GridService.java
+grid/GridSystemService.java
+health/HealthCheckService.java
+hint/HintStore.java
+homepage/HomePageResolverService.java
+i18n/LocaleProvider.java
+i18n/TranslationService.java
+i18n/TranslationsResolver.java
+iactn/Interaction.java
+iactn/InteractionContext.java
+inject/ServiceInjector.java
+jaxb/JaxbService.java
+layout/LayoutService.java
+layout/LayoutServiceMenu.java
+linking/DeepLinkService.java
+menu/MenuBarsLoaderService.java
+menu/MenuBarsService.java
+message/MessageService.java
+metamodel/BeanSort.java
+metamodel/DomainMember.java
+metamodel/DomainModel.java
+metamodel/MetaModelService.java
+metamodel/MetaModelServiceMenu.java
+metrics/MetricsService.java
+publish/PublishedObjects.java
+publish/PublisherService.java
+queryresultscache/QueryResultCacheControl.java
+queryresultscache/QueryResultsCache.java
+repository/EntityState.java
+repository/RepositoryService.java
+routing/RoutingService.java
+scratchpad/Scratchpad.java
+session/SessionLoggingService.java
+sudo/SudoService.java
+swagger/SwaggerService.java
+tablecol/TableColumnOrderService.java
+title/TitleService.java
+urlencoding/UrlEncodingService.java
+user/RoleMemento.java
+user/UserMemento.java
+user/UserService.java
+userprof/UserProfileService.java
+userreg/EmailNotificationService.java
+userreg/UserRegistrationService.java
+wrapper/WrapperFactory.java
+wrapper/control/AsyncControl.java
+wrapper/control/ControlAbstract.java
+wrapper/control/ExceptionHandler.java
+wrapper/control/SyncControl.java
+xactn/TransactionId.java
+xactn/TransactionService.java
+xactn/TransactionState.java
+xml/XmlService.java
+xmlsnapshot/XmlSnapshotService.java
+"
+
+for javaFile in $javaFiles
+do
+  mkdir -p "$(dirname "examples/services/$javaFile")"
+  cp "$SRC_APPLIB/services/$javaFile" "examples/services/$javaFile"
 done
+
+
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/DomainChangeRecord.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/DomainChangeRecord.java
deleted file mode 100644
index af23836..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/DomainChangeRecord.java
+++ /dev/null
@@ -1,157 +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;
-
-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.
- */
-public interface DomainChangeRecord extends HasUniqueId, HasUsername {
-
-    enum ChangeType {
-        COMMAND,
-        AUDIT_ENTRY,
-        PUBLISHED_INTERACTION;
-        @Override
-        public String toString() {
-            return name().replace("_", " ");
-        }
-    }
-
-    /**
-     * Distinguishes commands from audit entries from published events/interactions (when these are shown mixed together in a (standalone) table).
-     */
-    @Property
-    @PropertyLayout(hidden = Where.ALL_EXCEPT_STANDALONE_TABLES)
-    @MemberOrder(name="Identifiers", sequence = "1")
-    ChangeType getType();
-
-
-    /**
-     * The unique identifier (a GUID) of the transaction in which this change occurred.
-     */
-    @Property
-    @MemberOrder(name="Identifiers",sequence = "50")
-    UUID getUniqueId();
-
-
-    /**
-     * The user that caused the change.
-     */
-    @Property
-    @MemberOrder(name="Identifiers", sequence = "10")
-    String getUsername();
-
-
-    /**
-     * The time that the change occurred.
-     */
-    @Property
-    @MemberOrder(name="Identifiers", sequence = "20")
-    Timestamp getTimestamp();
-
-
-    /**
-     * The object type of the domain object being changed.
-     */
-    @Property
-    @PropertyLayout(named="Object Type")
-    @MemberOrder(name="Target", sequence = "10")
-    default String getTargetObjectType() {
-        return getTarget().getObjectType();
-    }
-
-
-
-    /**
-     * The {@link Bookmark} identifying the domain object that has changed.
-     */
-    @Property
-    @PropertyLayout(named="Object")
-    @MemberOrder(name="Target", sequence="30")
-    Bookmark getTarget();
-
-
-    /**
-     * The member interaction (ie action invocation or property edit) which caused the domain object to be changed.
-     *
-     * <p>
-     *     Populated for commands and for published events that represent action invocations or property edits.
-     * </p>
-     */
-    @Property(optionality = Optionality.OPTIONAL)
-    @PropertyLayout(named="Member", hidden = Where.ALL_EXCEPT_STANDALONE_TABLES)
-    @MemberOrder(name="Target", sequence = "20")
-    String getTargetMember();
-
-
-    /**
-     * The value of the property prior to it being changed.
-     *
-     * <p>
-     * Populated only for audit entries.
-     * </p>
-     */
-    @Property(optionality = Optionality.OPTIONAL)
-    @PropertyLayout(hidden = Where.ALL_EXCEPT_STANDALONE_TABLES)
-    @MemberOrder(name="Detail",sequence = "6")
-    String getPreValue();
-
-
-    /**
-     * The value of the property after it has changed.
-     *
-     * <p>
-     * Populated only for audit entries.
-     * </p>
-     */
-    @Property(optionality = Optionality.MANDATORY)
-    @PropertyLayout(hidden = Where.ALL_EXCEPT_STANDALONE_TABLES)
-    @MemberOrder(name="Detail",sequence = "7")
-    String getPostValue();
-
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/DomainChangeRecord_openTargetObject.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/DomainChangeRecord_openTargetObject.java
deleted file mode 100644
index dc506dc..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/DomainChangeRecord_openTargetObject.java
+++ /dev/null
@@ -1,79 +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;
-
-import javax.inject.Inject;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.SemanticsOf;
-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;
-
-@Action(
-        semantics = SemanticsOf.SAFE
-        , associateWith = "target"
-        , associateWithSequence = "1"
-)
-@ActionLayout(named = "Open")
-public class DomainChangeRecord_openTargetObject {
-
-    private final DomainChangeRecord domainChangeRecord;
-    public DomainChangeRecord_openTargetObject(DomainChangeRecord domainChangeRecord) {
-        this.domainChangeRecord = domainChangeRecord;
-    }
-
-    @Action(semantics = SemanticsOf.SAFE, associateWith = "target", associateWithSequence = "1")
-    @ActionLayout(named = "Open")
-    public Object openTargetObject() {
-        try {
-            return bookmarkService != null
-                    ? bookmarkService.lookup(domainChangeRecord.getTarget())
-                    : null;
-        } catch(RuntimeException ex) {
-            if(ex.getClass().getName().contains("ObjectNotFoundException")) {
-                messageService.warnUser("Object not found - has it since been deleted?");
-                return null;
-            }
-            throw ex;
-        }
-    }
-
-    public boolean hideOpenTargetObject() {
-        return domainChangeRecord.getTarget() == null;
-    }
-
-    public String disableOpenTargetObject() {
-        final Object targetObject = domainChangeRecord.getTarget();
-        if (targetObject == null) {
-            return null;
-        }
-        final BeanSort sortOfObject = metaModelService.sortOf(domainChangeRecord.getTarget(), MetaModelService.Mode.RELAXED);
-        return !(sortOfObject.isViewModel() || sortOfObject.isEntity())
-                ? "Can only open view models or entities"
-                : null;
-    }
-
-    @Inject BookmarkService bookmarkService;
-    @Inject MessageService messageService;
-    @Inject MetaModelService metaModelService;
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/MethodReferences.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/MethodReferences.java
deleted file mode 100644
index f7ecdea..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/MethodReferences.java
+++ /dev/null
@@ -1,95 +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;
-
-import lombok.experimental.UtilityClass;
-
-/**
- * 
- * @since 2.0
- *
- */
-@UtilityClass
-public class MethodReferences {
-
-    // -- METHOD REFERENCE MATCHERS (WITHOUT RETURN VALUE)
-    
-    @FunctionalInterface
-    public static interface Run0 {
-        void run();
-    }
-    
-    @FunctionalInterface
-    public static interface Run1<A0> {
-        void run(A0 arg0);
-    }
-    
-    @FunctionalInterface
-    public static interface Run2<A0, A1> {
-        void run(A0 arg0, A1 arg1);
-    }
-    
-    @FunctionalInterface
-    public static interface Run3<A0, A1, A2> {
-        void run(A0 arg0, A1 arg1, A2 arg2);
-    }
-    
-    @FunctionalInterface
-    public static interface Run4<A0, A1, A2, A3> {
-        void run(A0 arg0, A1 arg1, A2 arg2, A3 arg3);
-    }
-    
-    @FunctionalInterface
-    public static interface Run5<A0, A1, A2, A3, A4> {
-        void run(A0 arg0, A1 arg1, A2 arg2, A3 arg3, A4 arg4);
-    }
-    
-    // -- METHOD REFERENCE MATCHERS (WITH RETURN VALUE)
-    
-    @FunctionalInterface
-    public static interface Call0<R> {
-        R call();
-    }
-    
-    @FunctionalInterface
-    public static interface Call1<R, A0> {
-        R call(A0 arg0);
-    }
-    
-    @FunctionalInterface
-    public static interface Call2<R, A0, A1> {
-        R call(A0 arg0, A1 arg1);
-    }
-    
-    @FunctionalInterface
-    public static interface Call3<R, A0, A1, A2> {
-        R call(A0 arg0, A1 arg1, A2 arg2);
-    }
-    
-    @FunctionalInterface
-    public static interface Call4<R, A0, A1, A2, A3> {
-        R call(A0 arg0, A1 arg1, A2 arg2, A3 arg3);
-    }
-    
-    @FunctionalInterface
-    public static interface Call5<R, A0, A1, A2, A3, A4> {
-        R call(A0 arg0, A1 arg1, A2 arg2, A3 arg3, A4 arg4);
-    }
-    
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/RepresentsInteractionMemberExecution.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/RepresentsInteractionMemberExecution.java
deleted file mode 100644
index 4834752..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/RepresentsInteractionMemberExecution.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;
-
-import org.apache.isis.applib.services.wrapper.WrapperFactory;
-import org.apache.isis.commons.having.HasUniqueId;
-import org.apache.isis.schema.ixn.v2.InteractionDto;
-
-/**
- * Extends {@link HasUniqueId}, where the {@link HasUniqueId#getUniqueId()} is interpreted as an
- * interaction (cf {@link InteractionDto}) that has at least one member execution (cf
- * {@link org.apache.isis.schema.ixn.v1.MemberExecutionDto}) and may (by way of {@link WrapperFactory}) contain
- * several.
- *
- * <p>
- *     Examples could include SPI services that persist published events and status messages.
- * </p>
- */
-public interface RepresentsInteractionMemberExecution extends HasUniqueId {
-
-    int getSequence();
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/TransactionScopeListener.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/TransactionScopeListener.java
deleted file mode 100644
index b6fe41c..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/TransactionScopeListener.java
+++ /dev/null
@@ -1,52 +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;
-
-import org.apache.isis.applib.annotation.IsisInteractionScope;
-
-/**
- * Domain services that need to be aware of transaction boundaries can
- * implement this interface.
- * 
- * @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)
- */
-// tag::refguide[]
-public interface TransactionScopeListener {
-    
-    enum PreCommitPhase {
-        PRE_PUBLISHING,
-        WHILE_PUBLISHING,
-        POST_PUBLISHING
-    }
-    
-    default void onTransactionStarted() {
-        // default: do nothing
-    }
-
-    /** triggered during the pre-commit phase in a transaction*/
-    default void onPreCommit(PreCommitPhase preCommitPhase) {
-        // default: do nothing
-    }
-    
-}
-// end::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/appfeat/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/appfeat/package-info.java
deleted file mode 100644
index 23f328b..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/appfeat/package-info.java
+++ /dev/null
@@ -1,27 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository} provides the access to string
- * representations of the packages, classes and class members (collectively: "application features") of the
- * domain classes within the Apache Isis' internal metamodel.
- *
- *
- */
-package org.apache.isis.applib.services.appfeat;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/bookmark/BookmarkHolder_lookup.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/bookmark/BookmarkHolder_lookup.java
deleted file mode 100644
index 007cb0c..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/bookmark/BookmarkHolder_lookup.java
+++ /dev/null
@@ -1,52 +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.bookmark;
-
-import javax.inject.Inject;
-
-import org.apache.isis.applib.IsisModuleApplib;
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-
-@Action(
-        domainEvent = BookmarkHolder_lookup.ActionDomainEvent.class,
-        semantics = SemanticsOf.SAFE
-)
-@ActionLayout(
-        cssClassFa = "fa-bookmark"
-)
-@RequiredArgsConstructor
-public class BookmarkHolder_lookup {
-
-    private final BookmarkHolder bookmarkHolder;
-
-    public static class ActionDomainEvent extends IsisModuleApplib.ActionDomainEvent<BookmarkHolder_lookup> {}
-
-    public Object act() {
-        return bookmarkService.lookup(bookmarkHolder);
-    }
-    
-    // -- DEPENDENCIES
-    
-    @Inject private BookmarkService bookmarkService;
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/bookmark/BookmarkHolder_object.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/bookmark/BookmarkHolder_object.java
deleted file mode 100644
index c8aeda3..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/bookmark/BookmarkHolder_object.java
+++ /dev/null
@@ -1,47 +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.bookmark;
-
-import javax.inject.Inject;
-
-import org.apache.isis.applib.IsisModuleApplib;
-import org.apache.isis.applib.annotation.Property;
-
-import lombok.RequiredArgsConstructor;
-
-@Property(
-        domainEvent = BookmarkHolder_object.PropertyDomainEvent.class
-)
-@RequiredArgsConstructor
-public class BookmarkHolder_object {
-
-    private final BookmarkHolder bookmarkHolder;
-
-    public static class PropertyDomainEvent 
-    extends IsisModuleApplib.PropertyDomainEvent<BookmarkHolder_object, Object> { }
-
-    public Object prop() {
-        return bookmarkService.lookup(bookmarkHolder);
-    }
-
-    // -- DEPENDENCIES
-    
-    @Inject private BookmarkService bookmarkService;
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/bookmark/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/bookmark/package-info.java
deleted file mode 100644
index 6c3c413..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/bookmark/package-info.java
+++ /dev/null
@@ -1,27 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.bookmark.BookmarkService} API provides the ability to obtain a
- * serializable {@link org.apache.isis.applib.services.bookmark.Bookmark} for any (persisted) domain object, and to
- * lookup domain objects given a Bookmark. This can then in turn be converted to and from a string.
- *
- *
- */
-package org.apache.isis.applib.services.bookmark;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/clock/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/clock/package-info.java
deleted file mode 100644
index 9f26221..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/clock/package-info.java
+++ /dev/null
@@ -1,25 +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.
- */
-
-/**
- * This domain service provides current time.
- *
- *
- */
-package org.apache.isis.applib.services.clock;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/command/Command.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/command/Command.java
deleted file mode 100644
index 435e67d..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/command/Command.java
+++ /dev/null
@@ -1,384 +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.command;
-
-import java.sql.Timestamp;
-import java.util.UUID;
-
-import org.apache.isis.applib.events.domain.ActionDomainEvent;
-import org.apache.isis.applib.jaxb.JavaSqlXMLGregorianCalendarMarshalling;
-import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.commanddto.HasCommandDto;
-import org.apache.isis.applib.services.iactn.Interaction;
-import org.apache.isis.applib.services.wrapper.WrapperFactory;
-import org.apache.isis.applib.services.wrapper.control.AsyncControl;
-import org.apache.isis.commons.having.HasUniqueId;
-import org.apache.isis.commons.having.HasUsername;
-import org.apache.isis.schema.cmd.v2.CommandDto;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import lombok.ToString;
-import lombok.val;
-import lombok.extern.log4j.Log4j2;
-
-/**
- * Represents the <i>intention to</i> invoke either an action or modify a property.  There can be only one such
- * intention per (web) request, so a command is in effect interaction-scoped.
- *
- * <p>
- * Each Command holds a {@link CommandDto} (see Apache Isis <a href="http://isis.apache.org/schema/cmd/">cmd</a> schema)
- * which reifies all the details in a serializable form.
- * </p>
- *
- * <p>
- *     It also captures details of the corresponding action invocation (or property edit),
- *     specifically when that action/edit {@link Command#getStartedAt() started} or
- *     {@link Command#getCompletedAt() completed}, and its result, either a {@link Command#getResult() return value}
- *     or an {@link Command#getException() exception}.  Also captures a stack of {@link ActionDomainEvent}s.
- * </p>
- *
- * <p>
- *     Note that when invoking an action, other actions may be invoked courtesy
- *     of the {@link WrapperFactory}.  These "sub-actions" do <i>not</i> modify
- *     the contents of the current command object; in other words think of the command
- *     object as representing the outer-most originating action.
- * </p>
- *
- * <p>
- *     That said, if the sub-action is invoked asynchronously (using
- *     {@link WrapperFactory#asyncWrap(Object, AsyncControl)} or
- *     {@link WrapperFactory#asyncWrapMixin(Class, Object, AsyncControl)}), then
- *     a separate {@link Command} object
- *     is created, and the originating {@link Command} is set to be its
- *     {@link Command#getParent() parent}.
- * </p>
- */
-@RequiredArgsConstructor
-@ToString
-@Log4j2
-// tag::refguide[]
-public class Command implements HasUniqueId, HasUsername, HasCommandDto {
-
-    // end::refguide[]
-    /**
-     * Unique identifier for the command.
-     *
-     * <p>
-     *     Derived from {@link #getCommandDto()}'s {@link CommandDto#getTransactionId()}
-     * </p>
-     */
-    // tag::refguide[]
-    @Getter
-    // end::refguide[]
-        (onMethod_ = {@Override})
-    // tag::refguide[]
-    private final UUID uniqueId;              // <.>
-    // end::refguide[]
-    
-    /**
-     * The user that created the command.
-     *
-     * <p>
-     *     Derived from {@link #getCommandDto()}'s {@link CommandDto#getUser()}
-     * </p>
-     */
-    @Override
-    // tag::refguide[]
-    public String getUsername() {               // <.>
-        // ...
-        // end::refguide[]
-        return commandDto != null
-                ? commandDto.getUser()
-                : null;
-    }
-
-    /**
-     * The date/time at which this command was created.
-     *
-     * <p>
-     *     Derived from {@link #getCommandDto()}'s {@link CommandDto#getTimestamp()}.
-     * </p>
-     */
-    // tag::refguide[]
-    public Timestamp getTimestamp() {           // <.>
-        // ...
-        // end::refguide[]
-        return commandDto != null
-                ? JavaSqlXMLGregorianCalendarMarshalling.toTimestamp(commandDto.getTimestamp())
-                : null;
-    }
-
-    /**
-     * Serializable representation of the action invocation/property edit.
-     *
-     * <p>
-     *     When the framework sets this (through an internal API), it is
-     *     expected to have {@link CommandDto#getTransactionId()},
-     *     {@link CommandDto#getUser()}, {@link CommandDto#getTimestamp()},
-     *     {@link CommandDto#getTargets()} and {@link CommandDto#getMember()}
-     *     to be populated.  The {@link #getUniqueId()}, {@link #getUsername()},
-     *     {@link #getTimestamp()} and {@link #getTarget()} are all derived
-     *     from the provided {@link CommandDto}.
-     * </p>
-     */
-    @ToString.Exclude
-    // tag::refguide[]
-    @Getter
-    private CommandDto commandDto;              // <.>
-    // end::refguide[]
-
-    /**
-     * 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() {               // <.>
-        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() {    // <.>
-        return commandDto != null
-                    ? commandDto.getMember().getLogicalMemberIdentifier()
-                    : null;
-    }
-    // end::refguide[]
-
-    /**
-     * For async commands created through the {@link WrapperFactory},
-     * captures the parent command.
-     *
-     * <p>
-     *     Will return <code>null</code> if there is no parent.
-     * </p>
-     *
-     * @see WrapperFactory#asyncWrap(Object, AsyncControl)
-     * @see WrapperFactory#asyncWrapMixin(Class, Object, AsyncControl)
-     *
-     */
-    @ToString.Exclude
-    // tag::refguide[]
-    @Getter
-    private Command parent;                     // <.>
-    // end::refguide[]
-
-    /**
-     * For an command that has actually been executed, holds the date/time at
-     * which the {@link Interaction} that executed the command started.
-     *
-     * @see Interaction#getCurrentExecution()
-     * @see Interaction.Execution#getStartedAt()
-     */
-    // tag::refguide[]
-    @Getter
-    private Timestamp startedAt;                // <.>
-    // end::refguide[]
-
-    /**
-     * For an command that has actually been executed, holds the date/time at which the {@link Interaction} that
-     * executed the command completed.
-     *
-     * <p>
-     *     Previously this field was deprecated (on the basis that the completedAt is also held in
-     *     {@link Interaction.Execution#getCompletedAt()}). However, this property is now used in master/slave
-     *     replay scenarios which may query a persisted Command.
-     * </p>
-     *
-     * See also {@link Interaction#getCurrentExecution()} and
-     * {@link Interaction.Execution#getCompletedAt()}.
-     */
-    // tag::refguide[]
-    @Getter
-    private Timestamp completedAt;              // <.>
-    // end::refguide[]
-
-    /**
-     * For a command that has actually been executed, holds a {@link Bookmark}
-     * to the object returned by the corresponding action/property modification.
-     *
-     * <p>
-     *     This property is used in replay scenarios to verify the outcome of
-     *     the replayed command, eg for regression testing.
-     * </p>
-     *
-     * See also  {@link Interaction#getCurrentExecution()} and
-     * {@link org.apache.isis.applib.services.iactn.Interaction.Execution#getReturned()}.
-     */
-    // tag::refguide[]
-    @Getter
-    private Bookmark result;                    // <.>
-    // end::refguide[]
-
-    /**
-     * For a command that has actually been executed, holds the exception stack
-     * trace if the action invocation/property modification threw an exception.
-     *
-     * <p>
-     *     This property is used in replay scenarios to verify the outcome of
-     *     the replayed command, eg for regression testing.
-     * </p>
-     *
-     * See also {@link Interaction#getCurrentExecution()} and
-     * {@link org.apache.isis.applib.services.iactn.Interaction.Execution#getThrew()}.
-     */
-    // tag::refguide[]
-    @Getter
-    private Throwable exception;                    // <.>
-    // end::refguide[]
-
-    /**
-     * Whether this command resulted in a change of state to the system.
-     *
-     * <p>
-     *     This can be used as a hint to decide whether to persist the command
-     *     to a datastore, for example for auditing (though
-     *     {@link org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber} is
-     *     an alternative for that use case) or so that it can be retrieved
-     *     and replayed on another system, eg for regression testing.
-     * </p>
-     *
-     */
-    // tag::refguide[]
-    @Getter
-    private boolean systemStateChanged;                // <.>
-    // end::refguide[]
-
-
-    /**
-     * 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();
-
-    public class Updater implements CommandOutcomeHandler {
-
-        /**
-         * <b>NOT API</b>: intended to be called only by the framework.
-         *
-         * <p>
-         * Implementation notes: set when the action is invoked (in the <tt>ActionInvocationFacet</tt>).
-         * @param commandDto
-         */
-        public void setCommandDto(final CommandDto commandDto) {
-            Command.this.commandDto = commandDto;
-            
-            // even though redundant, but must ensure commandUniqueId == dtoUniqueId
-            val commandUniqueId = Command.this.getUniqueId().toString(); 
-            val dtoUniqueId = commandDto.getTransactionId();
-            
-            if(!commandUniqueId.equals(dtoUniqueId)) {
-                log.warn("setting CommandDto on a Command has side-effects when "
-                        + "both their UniqueIds don't match"); 
-                commandDto.setTransactionId(commandUniqueId);    
-            }
-            
-        }
-        /**
-         * <b>NOT API</b>: intended to be called only by the framework.
-         *
-         * <p>
-         *     Only populated for async commands created through the
-         *     {@link WrapperFactory}.
-         * </p>
-         */
-        public void setParent(Command parent) {
-            Command.this.parent = parent;
-        }
-        /**
-         * <b>NOT API</b>: intended to be called only by the framework.
-         */
-        @Override
-        public Timestamp getStartedAt() {
-            return Command.this.getStartedAt();
-        }
-        /**
-         * <b>NOT API</b>: intended to be called only by the framework.
-         */
-        @Override
-        public void setStartedAt(Timestamp startedAt) {
-            Command.this.startedAt = startedAt;
-        }
-        /**
-         * <b>NOT API</b>: intended to be called only by the framework.
-         */
-        @Override
-        public void setCompletedAt(final Timestamp completed) {
-            Command.this.completedAt = completed;
-        }
-        /**
-         * <b>NOT API</b>: intended to be called only by the framework.
-         */
-        @Override
-        public void setResult(final Bookmark result) {
-            Command.this.result = result;
-        }
-
-        /**
-         * <b>NOT API</b>: intended to be called only by the framework.
-         */
-        @Override
-        public void setException(final Throwable exception) {
-            Command.this.exception = exception;
-        }
-        /**
-         * <b>NOT API</b>: intended to be called only by the framework.
-         *
-         * <p>
-         * Hint that this {@link Command} has resulted in a change of state to the system.
-         * Implementations can use this to persist the command, for example.
-         * </p>
-         */
-        public void setSystemStateChanged(boolean systemStateChanged) {
-            Command.this.systemStateChanged = systemStateChanged;
-        }
-
-        /**
-         * <b>NOT API</b>: intended to be called only by the framework.
-         */
-        public void setPublishingEnabled(boolean publishingEnabled) {
-            Command.this.publishingEnabled = publishingEnabled;
-        }
-
-    };
-
-    /**
-     * <b>NOT API</b>: intended to be called only by the framework.
-     */
-    public Updater updater() {
-        return UPDATER;
-    }
-
-
-// tag::refguide[]
-
-}
-// end::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/command/CommandExecutorService.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/command/CommandExecutorService.java
deleted file mode 100644
index 4fce410..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/command/CommandExecutorService.java
+++ /dev/null
@@ -1,74 +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.command;
-
-import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.schema.cmd.v2.CommandDto;
-
-// tag::refguide[]
-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.
-     *
-     * @param sudoPolicy
-     * @param command
-     * @return - any exception raised by the command.
-     */
-    // tag::refguide[]
-    Bookmark executeCommand(
-            SudoPolicy sudoPolicy,                  // <.>
-            Command command                         // <.>
-    );
-
-    Bookmark executeCommand(
-            SudoPolicy sudoPolicy,                  // <.>
-            CommandDto commandDto,                  // <.>
-            CommandOutcomeHandler outcomeHandler);  // <.>
-
-    Bookmark executeCommand(
-            Command command                         // <.>
-    );
-
-    Bookmark executeCommand(
-            CommandDto commandDto,                  // <.>
-            CommandOutcomeHandler outcomeHandler);  // <.>
-
-}
-// end::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/command/CommandOutcomeHandler.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/command/CommandOutcomeHandler.java
deleted file mode 100644
index b8b8e1c..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/command/CommandOutcomeHandler.java
+++ /dev/null
@@ -1,42 +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.command;
-
-import java.sql.Timestamp;
-
-import org.apache.isis.applib.services.bookmark.Bookmark;
-
-public interface CommandOutcomeHandler {
-
-    CommandOutcomeHandler NULL = new CommandOutcomeHandler() {
-        @Override public Timestamp getStartedAt() { return null; }
-        @Override public void setStartedAt(Timestamp startedAt) { }
-        @Override public void setCompletedAt(Timestamp completedAt) { }
-        @Override public void setResult(Bookmark resultBookmark) { }
-        @Override public void setException(Throwable throwable) { }
-    };
-
-    Timestamp getStartedAt();
-    void setStartedAt(Timestamp startedAt);
-
-    void setCompletedAt(Timestamp completedAt);
-
-    void setResult(Bookmark resultBookmark);
-    void setException(Throwable throwable);
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/command/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/command/package-info.java
deleted file mode 100644
index e044456..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/command/package-info.java
+++ /dev/null
@@ -1,20 +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.command;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/HasCommandDto.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/HasCommandDto.java
deleted file mode 100644
index e485b7a..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/HasCommandDto.java
+++ /dev/null
@@ -1,30 +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.commanddto;
-
-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}.
- */
-public interface HasCommandDto {
-
-    CommandDto getCommandDto();
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/conmap/ContentMappingServiceForCommandDto.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/conmap/ContentMappingServiceForCommandDto.java
deleted file mode 100644
index 2651643..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/conmap/ContentMappingServiceForCommandDto.java
+++ /dev/null
@@ -1,107 +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.commanddto.conmap;
-
-import java.util.List;
-
-import javax.annotation.Nullable;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.ws.rs.core.MediaType;
-
-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;
-import org.apache.isis.applib.services.commanddto.HasCommandDto;
-import org.apache.isis.applib.services.commanddto.processor.CommandDtoProcessor;
-import org.apache.isis.applib.services.commanddto.processor.spi.CommandDtoProcessorService;
-import org.apache.isis.applib.services.conmap.ContentMappingService;
-import org.apache.isis.applib.services.metamodel.MetaModelService;
-import org.apache.isis.schema.cmd.v2.CommandDto;
-
-import lombok.val;
-
-@Service
-@Named("isisApplib.ContentMappingServiceForCommandDto")
-@Order(OrderPrecedence.EARLY)
-@Primary
-@Qualifier("CommandDto")
-public class ContentMappingServiceForCommandDto implements ContentMappingService {
-
-    @Override @Nullable
-    public Object map(final Object object, final List<MediaType> acceptableMediaTypes) {
-        final boolean supported = Util.isSupported(CommandDto.class, acceptableMediaTypes);
-        if(!supported) {
-            return null;
-        }
-
-        return asProcessedDto(object);
-    }
-
-    @Nullable
-    CommandDto asProcessedDto(final Object object) {
-        val commandDto = asCommandDto(object);
-        return asProcessedDto(object, commandDto);
-    }
-
-    @Nullable
-    private CommandDto asCommandDto(final Object object) {
-        if(object instanceof CommandDto) {
-            return (CommandDto) object;
-        }
-        if(object instanceof HasCommandDto) {
-            return ((HasCommandDto) object).getCommandDto();
-        }
-        return null;
-    }
-
-    @Nullable
-    private CommandDto asProcessedDto(final Object domainObject, @Nullable CommandDto commandDto) {
-
-        if(commandDto == null) {
-            return null;
-        }
-        
-        // global processors
-        for (val commandDtoProcessorService : commandDtoProcessorServices) {
-            commandDto = commandDtoProcessorService.process(domainObject, commandDto);
-            if(commandDto == null) {
-                // any processor could return null, effectively breaking the chain.
-                return null;
-            }
-        }
-
-        // specific processor for this specific member (action or property)
-        val logicalMemberId = commandDto.getMember().getLogicalMemberIdentifier();
-        final CommandDtoProcessor commandDtoProcessor =
-                metaModelService.commandDtoProcessorFor(logicalMemberId);
-        if (commandDtoProcessor == null) {
-            return commandDto;
-        }
-        return commandDtoProcessor.process(commandDto);
-    }
-
-
-    @Inject MetaModelService metaModelService;
-    @Inject List<CommandDtoProcessorService> commandDtoProcessorServices;
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/conmap/ContentMappingServiceForCommandsDto.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/conmap/ContentMappingServiceForCommandsDto.java
deleted file mode 100644
index 4d491b2..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/conmap/ContentMappingServiceForCommandsDto.java
+++ /dev/null
@@ -1,95 +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.commanddto.conmap;
-
-import java.util.List;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.ws.rs.core.MediaType;
-
-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;
-import org.apache.isis.applib.services.conmap.ContentMappingService;
-import org.apache.isis.schema.cmd.v2.CommandDto;
-import org.apache.isis.schema.cmd.v2.CommandsDto;
-
-@Service
-@Named("isisApplib.ContentMappingServiceForCommandsDto")
-@Order(OrderPrecedence.EARLY)
-@Primary
-@Qualifier("CommandsDto")
-public class ContentMappingServiceForCommandsDto implements ContentMappingService {
-
-    @Override
-    public Object map(Object object, final List<MediaType> acceptableMediaTypes) {
-        final boolean supported = Util.isSupported(CommandsDto.class, acceptableMediaTypes);
-        if(!supported) {
-            return null;
-        }
-
-        return map(object);
-    }
-
-    /**
-     * Not part of the {@link ContentMappingService} API.
-     */
-    public CommandsDto map(final Object object) {
-        if(object instanceof CommandsDto) {
-            return ((CommandsDto) object);
-        }
-
-        CommandDto commandDto = asDto(object);
-        if(commandDto != null) {
-            final CommandsDto commandsDto = new CommandsDto();
-            commandsDto.getCommandDto().add(commandDto);
-            return commandsDto;
-        }
-
-        if (object instanceof List) {
-            final List<?> list = (List<?>) object;
-            final CommandsDto commandsDto = new CommandsDto();
-            for (final Object obj : list) {
-                final CommandDto objAsCommandDto = asDto(obj);
-                if(objAsCommandDto != null) {
-                    commandsDto.getCommandDto().add(objAsCommandDto);
-                } else {
-                    // simply ignore.
-                    // this is the means by which we can avoid replicating commands.
-                }
-            }
-            return commandsDto;
-        }
-
-        // else
-        return new CommandsDto();
-    }
-
-    private CommandDto asDto(final Object object) {
-        return contentMappingServiceForCommandDto.asProcessedDto(object);
-    }
-
-    @Inject
-    ContentMappingServiceForCommandDto contentMappingServiceForCommandDto;
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/conmap/UserDataKeys.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/conmap/UserDataKeys.java
deleted file mode 100644
index 4fc4e59..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/conmap/UserDataKeys.java
+++ /dev/null
@@ -1,34 +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.commanddto.conmap;
-
-import org.apache.isis.schema.cmd.v2.CommandDto;
-
-import lombok.experimental.UtilityClass;
-
-/**
- * Keys used in {@link CommandDto#getUserData()} to marshall the command's results
- */
-@UtilityClass
-public class UserDataKeys {
-
-    public static String RESULT = UserDataKeys.class.getName() + "#" + "RESULT";
-    public static String EXCEPTION = UserDataKeys.class.getName() + "#" + "EXCEPTION";
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/processor/CommandDtoProcessorForActionAbstract.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/processor/CommandDtoProcessorForActionAbstract.java
deleted file mode 100644
index b887323..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/processor/CommandDtoProcessorForActionAbstract.java
+++ /dev/null
@@ -1,39 +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.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;
-import org.apache.isis.schema.cmd.v2.ParamsDto;
-
-/**
- * Convenience adapter for command processors for action invocations.
- */
-public abstract class CommandDtoProcessorForActionAbstract implements CommandDtoProcessor {
-    protected ActionDto getActionDto(final CommandDto commandDto) {
-        return (ActionDto) commandDto.getMember();
-    }
-    protected ParamDto getParamDto(final CommandDto commandDto, final int paramNum) {
-        final ActionDto actionDto = getActionDto(commandDto);
-        final ParamsDto parameters = actionDto.getParameters();
-        return parameters.getParameter().get(paramNum);
-    }
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/processor/CommandDtoProcessorForPropertyAbstract.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/processor/CommandDtoProcessorForPropertyAbstract.java
deleted file mode 100644
index e833809..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/processor/CommandDtoProcessorForPropertyAbstract.java
+++ /dev/null
@@ -1,33 +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.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;
-
-/**
- * Convenience adapter for command processors for property edits.
- */
-public abstract class CommandDtoProcessorForPropertyAbstract
-implements CommandDtoProcessor {
-    protected PropertyDto getPropertyDto(final CommandDto commandDto) {
-        return (PropertyDto) commandDto.getMember();
-    }
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/processor/spi/CommandDtoProcessorServiceIdentity.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/processor/spi/CommandDtoProcessorServiceIdentity.java
deleted file mode 100644
index bf43bc1..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/commanddto/processor/spi/CommandDtoProcessorServiceIdentity.java
+++ /dev/null
@@ -1,41 +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.commanddto.processor.spi;
-
-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.schema.cmd.v2.CommandDto;
-
-/**
- * At least one implementation is required.
- */
-@Service
-@Named("isisApplib.CommandDtoProcessorServiceIdentity")
-@Order(OrderPrecedence.LAST)
-public class CommandDtoProcessorServiceIdentity implements CommandDtoProcessorService {
-
-    @Override
-    public CommandDto process(final Object domainObject, final CommandDto commandDto) {
-        return commandDto;
-    }
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/confview/ConfigurationProperty.layout.xml b/api/applib/src/main/adoc/modules/applib-svc/examples/services/confview/ConfigurationProperty.layout.xml
deleted file mode 100644
index 3eb63c8..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/confview/ConfigurationProperty.layout.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!--
-  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.
--->
-<bs3:grid xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd" xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3" xmlns:cpt="http://isis.apache.org/applib/layout/component" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-    <bs3:row>
-        <bs3:col span="12" unreferencedActions="true">
-            <cpt:domainObject/>
-            <cpt:action hidden="EVERYWHERE" id="clearHints"/>
-        </bs3:col>
-    </bs3:row>
-    <bs3:row>
-        <bs3:col span="12">
-            <bs3:tabGroup>
-                <bs3:tab name="General">
-                    <bs3:row>
-                        <bs3:col span="8">
-                            <cpt:fieldSet name="Property" id="key">
-                                <cpt:action id="downloadLayoutXml" position="PANEL_DROPDOWN"/>
-                                <cpt:action id="rebuildMetamodel" position="PANEL_DROPDOWN"/>
-                                <cpt:property id="key"/>
-                                <cpt:property id="value" multiLine="5"/>
-                            </cpt:fieldSet>
-                        </bs3:col>
-                    </bs3:row>
-                </bs3:tab>
-                <bs3:tab name="Other">
-                    <bs3:row>
-                        <bs3:col span="12">
-                            <cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
-                        </bs3:col>
-                    </bs3:row>
-                </bs3:tab>
-            </bs3:tabGroup>
-        </bs3:col>
-    </bs3:row>
-    <bs3:row>
-        <bs3:col span="12">
-            <bs3:tabGroup unreferencedCollections="true"/>
-        </bs3:col>
-    </bs3:row>
-</bs3:grid>
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/confview/ConfigurationProperty.png b/api/applib/src/main/adoc/modules/applib-svc/examples/services/confview/ConfigurationProperty.png
deleted file mode 100644
index 9d9e1c3..0000000
Binary files a/api/applib/src/main/adoc/modules/applib-svc/examples/services/confview/ConfigurationProperty.png and /dev/null differ
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/confview/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/confview/package-info.java
deleted file mode 100644
index 9a44951..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/confview/package-info.java
+++ /dev/null
@@ -1,26 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.confview.ConfigurationViewService} allows domain objects to read the
- * configuration properties aggregated from the various configuration files.
- *
- *
- */
-package org.apache.isis.applib.services.confview;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/conmap/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/conmap/package-info.java
deleted file mode 100644
index 3d346b3..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/conmap/package-info.java
+++ /dev/null
@@ -1,27 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.conmap.ContentMappingService} supports the (default implementation of the)
- * <code>ContentNegotiationService</code> enabling the RestfulObjects viewer to represent domain objects in some other
- * format as specified by the HTTP <code>Accept</code> header.
- *
- *
- */
-package org.apache.isis.applib.services.conmap;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/email/EmailService.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/email/EmailService.java
deleted file mode 100644
index e5960e7..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/email/EmailService.java
+++ /dev/null
@@ -1,53 +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.email;
-
-import java.io.Serializable;
-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.
- *
- * <p>
- * 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>
- */
-// tag::refguide[]
-public interface EmailService extends Serializable {
-
-    @PostConstruct
-    public void init() ;
-
-    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/adoc/modules/applib-svc/examples/services/email/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/email/package-info.java
deleted file mode 100644
index 8871910..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/email/package-info.java
+++ /dev/null
@@ -1,26 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.email.EmailService} provides the ability to send HTML emails, with
- * attachments, to one or more recipients.
- *
- *
- */
-package org.apache.isis.applib.services.email;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/error/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/error/package-info.java
deleted file mode 100644
index eb7531b..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/error/package-info.java
+++ /dev/null
@@ -1,28 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.error.ErrorReportingService} service is an optional SPI that provides
- * the ability to record any errors/exceptions that might occur in the application into an external incident recording
- * system (such as JIRA). The service also allows a user-friendly (jargon-free) error message to be returned and
- * rendered to the end.
- *
- *
- */
-package org.apache.isis.applib.services.error;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/eventbus/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/eventbus/package-info.java
deleted file mode 100644
index 8d79227..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/eventbus/package-info.java
+++ /dev/null
@@ -1,26 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.eventbus.EventBusService} allows domain objects to emit events to
- * subscribing domain services using an in-memory event bus.
- *
- *
- */
-package org.apache.isis.applib.services.eventbus;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/exceprecog/ExceptionRecognizerAbstract.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/exceprecog/ExceptionRecognizerAbstract.java
deleted file mode 100644
index 3c18948..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/exceprecog/ExceptionRecognizerAbstract.java
+++ /dev/null
@@ -1,131 +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.exceprecog;
-
-import java.util.Objects;
-import java.util.Optional;
-import java.util.function.Function;
-import java.util.function.Predicate;
-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;
-import org.apache.isis.commons.internal.exceptions._Exceptions;
-
-import lombok.Getter;
-import lombok.Setter;
-import lombok.extern.log4j.Log4j2;
-
-/**
- * Abstract implementation of {@link ExceptionRecognizer} that looks
- * exceptions meeting the {@link Predicate} supplied in the constructor
- * and, if found anywhere in the causal chain,
- * then returns a non-null message indicating that the exception has been recognized.
- *
- * <p>
- * If a messaging-parsing {@link Function} is provided through the constructor,
- * then the message can be altered.  Otherwise the exception's {@link Throwable#getMessage() message} is returned as-is.
- */
-@Log4j2
-public abstract class ExceptionRecognizerAbstract implements ExceptionRecognizer {
-    
-    @Inject protected TranslationService translationService;
-    
-    @Getter @Setter private boolean disabled = false;
-
-    /**
-     * Convenience for subclass implementations that always return a fixed message.
-     */
-    protected static Function<String, String> constant(final String message) {
-        return input -> message;
-    }
-
-    /**
-     * Convenience for subclass implementations that always prefixes the exception message
-     * with the supplied text
-     */
-    protected static UnaryOperator<String> prefix(final String prefix) {
-        return $->prefix + ": " + $;
-    }
-
-    private final Category category;
-    private final Predicate<Throwable> predicate;
-    private final Function<String,String> messageParser;
-
-    protected boolean logRecognizedExceptions;
-
-    public ExceptionRecognizerAbstract(final Category category, Predicate<Throwable> predicate, final Function<String,String> messageParser) {
-        Objects.requireNonNull(predicate);
-        this.category = category;
-        this.predicate = predicate;
-        this.messageParser = messageParser != null ? messageParser : Function.identity();
-    }
-
-    public ExceptionRecognizerAbstract(Predicate<Throwable> predicate, final Function<String,String> messageParser) {
-        this(Category.OTHER, predicate, messageParser);
-    }
-
-    public ExceptionRecognizerAbstract(Category category, Predicate<Throwable> predicate) {
-        this(category, predicate, null);
-    }
-
-    public ExceptionRecognizerAbstract(Predicate<Throwable> predicate) {
-        this(Category.OTHER, predicate);
-    }
-
-
-
-    private Optional<String> recognizeRootCause(Throwable ex) {
-
-        return _Exceptions.streamCausalChain(ex)
-                .filter(predicate)
-                .map(throwable->{
-                    if(logRecognizedExceptions) {
-                        log.info("Recognized exception, stacktrace : ", throwable);
-                    }
-                    if(ex instanceof TranslatableException) {
-                        final TranslatableException translatableException = (TranslatableException) ex;
-                        final TranslatableString translatableMessage = translatableException.getTranslatableMessage();
-                        final String translationContext = translatableException.getTranslationContext();
-                        if(translatableMessage != null && translationContext != null) {
-                            return translatableMessage.translate(translationService, translationContext);
-                        }
-                    }
-                    final Throwable rootCause = _Exceptions.getRootCause(throwable);
-                    final String rootCauseMessage = rootCause.getMessage();
-                    final String parsedMessage = messageParser.apply(rootCauseMessage);
-                    return parsedMessage;
-                })
-                .filter(_NullSafe::isPresent)
-                .findFirst();
-    }
-
-    @Override
-    public Optional<Recognition> recognize(Throwable ex) {
-        if(disabled) {
-            return Optional.empty();
-        }
-        return Recognition.of(category, recognizeRootCause(ex).orElse(null));
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/exceprecog/ExceptionRecognizerForType.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/exceprecog/ExceptionRecognizerForType.java
deleted file mode 100644
index da0231c..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/exceprecog/ExceptionRecognizerForType.java
+++ /dev/null
@@ -1,182 +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.exceprecog;
-
-import java.util.List;
-import java.util.function.Function;
-import java.util.function.Predicate;
-import java.util.function.UnaryOperator;
-import java.util.stream.Stream;
-
-import org.apache.isis.commons.internal.exceptions._Exceptions;
-
-import static org.apache.isis.commons.internal.exceptions._Exceptions.containsAnyOfTheseMessages;
-import static org.apache.isis.commons.internal.exceptions._Exceptions.getCausalChain;
-
-import lombok.val;
-
-/**
- * A specific implementation of {@link ExceptionRecognizer} that looks for an
- * exception of the type provided in the constructor
- * and, if found anywhere in the causal chain,
- * then returns a non-null message indicating that the exception has been recognized.
- *
- * <p>
- * If a messaging-parsing {@link Function} is provided through the constructor,
- * then the message can be altered.  Otherwise the exception's {@link Throwable#getMessage() message} is returned as-is.
- */
-public class ExceptionRecognizerForType extends ExceptionRecognizerAbstract {
-
-    /**
-     * Introduced in support of eg. <code>JDODataStoreException</code>
-     * @since 2.0
-     */
-    @FunctionalInterface
-    public static interface NestedExceptionResolver {
-        Stream<Throwable> streamNestedExceptionsOf(Throwable throwable); 
-        
-        public static final NestedExceptionResolver NOOP = __->Stream.empty();
-    }
-    
-    protected static final Predicate<Throwable> ofTypeExcluding(
-            final Class<? extends Throwable> exceptionType, 
-            final NestedExceptionResolver nestedExceptionResolver,
-            final String... messages) {
-        
-        return ofType(exceptionType).and(excluding(nestedExceptionResolver, messages));
-    }
-
-    protected static final Predicate<Throwable> ofTypeIncluding(
-            final Class<? extends Throwable> exceptionType,
-            final NestedExceptionResolver nestedExceptionResolver,
-            final String... messages) {
-        
-        return ofType(exceptionType).and(including(nestedExceptionResolver, messages));
-    }
-
-    protected static final Predicate<Throwable> ofType(
-            final Class<? extends Throwable> exceptionType) {
-        
-        return input->exceptionType.isAssignableFrom(input.getClass());
-    }
-
-    /**
-     * A {@link Predicate} that {@link Predicate#apply(Object) applies} only if the message(s)
-     * supplied do <i>NOT</i> appear in the {@link Throwable} or any of its {@link Throwable#getCause() cause}s
-     * (recursively).
-     *
-     * <p>
-     * Intended to prevent too eager matching of an overly general exception type.
-     */
-    protected static final Predicate<Throwable> excluding(
-            final NestedExceptionResolver nestedExceptionResolver,
-            final String... messages) {
-        
-        return input->{
-            final List<Throwable> causalChain = getCausalChain(input);
-            
-            for (Throwable throwable : causalChain) {
-                
-                if(containsAnyOfTheseMessages(throwable, messages)) {
-                    return false; 
-                }
-                
-                val isAnyNestedRecognized = nestedExceptionResolver.streamNestedExceptionsOf(throwable)
-                .anyMatch(nested->_Exceptions.containsAnyOfTheseMessages(throwable, messages));
-                
-                if(isAnyNestedRecognized) {
-                    return false;
-                }
-
-            }
-            
-            return true;
-        };
-
-    }
-    
-
-    /**
-     * A {@link Predicate} that {@link Predicate#apply(Object) applies} only if at least one of the message(s)
-     * supplied <i>DO</i> appear in the {@link Throwable} or any of its {@link Throwable#getCause() cause}s
-     * (recursively).
-     *
-     * <p>
-     * Intended to prevent more precise matching of a specific general exception type.
-     */
-    protected static final Predicate<Throwable> including(
-            final NestedExceptionResolver nestedExceptionResolver,
-            final String... messages) {
-        
-        return input->{
-            final List<Throwable> causalChain = getCausalChain(input);
-           
-            for (Throwable throwable : causalChain) {
-                if(containsAnyOfTheseMessages(throwable, messages)) {
-                    return true; 
-                }
-                
-                val isAnyNestedRecognized = nestedExceptionResolver.streamNestedExceptionsOf(throwable)
-                        .anyMatch(nested->_Exceptions.containsAnyOfTheseMessages(throwable, messages));
-                        
-                if(isAnyNestedRecognized) {
-                    return true;
-                }
-                
-            }
-            
-            return false;
-        };
-    }
-
-    public ExceptionRecognizerForType(
-            Category category,
-            final Class<? extends Exception> exceptionType,
-            final UnaryOperator<String> messageParser) {
-        this(category, ofType(exceptionType), messageParser);
-    }
-
-    public ExceptionRecognizerForType(
-            Category category,
-            final Predicate<Throwable> predicate,
-            final UnaryOperator<String> messageParser) {
-        super(category, predicate, messageParser);
-    }
-
-    public ExceptionRecognizerForType(Category category, Class<? extends Exception> exceptionType) {
-        this(category, exceptionType, null);
-    }
-
-    public ExceptionRecognizerForType(
-            final Class<? extends Exception> exceptionType,
-            final UnaryOperator<String> messageParser) {
-        this(Category.OTHER, exceptionType, messageParser);
-    }
-
-    public ExceptionRecognizerForType(
-            final Predicate<Throwable> predicate,
-            final UnaryOperator<String> messageParser) {
-        this(Category.OTHER, predicate, messageParser);
-    }
-
-    public ExceptionRecognizerForType(Class<? extends Exception> exceptionType) {
-        this(Category.OTHER, exceptionType);
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/exceprecog/TranslatableException.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/exceprecog/TranslatableException.java
deleted file mode 100644
index 1e70cbc..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/exceprecog/TranslatableException.java
+++ /dev/null
@@ -1,59 +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.exceprecog;
-
-import org.apache.isis.applib.services.i18n.TranslatableString;
-
-/**
- * Exceptions that provide translations should implement this interface.
- *
- * <p>
- *     The {@link org.apache.isis.applib.services.exceprecog.ExceptionRecognizer} will automatically
- *     detect and use the translation.  In addition, the integration testing support provides a
- *     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>
- */
-// 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.
-     *
-     * <p>
-     *     If returns <code>null</code>, then {@link Exception#getMessage()} will be used as a fallback.
-     *     This design allows the Isis-provided {@link org.apache.isis.applib.RecoverableException} and
-     *     {@link org.apache.isis.applib.NonRecoverableException} to provide constructors that
-     *     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/adoc/modules/applib-svc/examples/services/exceprecog/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/exceprecog/package-info.java
deleted file mode 100644
index ef40d73..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/exceprecog/package-info.java
+++ /dev/null
@@ -1,28 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.exceprecog.ExceptionRecognizer} service provides the mechanism for both
- * the domain programmer and also for components to be able to recognize and handle certain exceptions that may be
- * thrown by the system. Rather than display an obscure error to the end-user, the application can instead display a
- * user-friendly message
- *
- *
- */
-package org.apache.isis.applib.services.exceprecog;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/factory/FactoryService.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/factory/FactoryService.java
index c3ac249..1047915 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/factory/FactoryService.java
+++ b/api/applib/src/main/adoc/modules/applib-svc/examples/services/factory/FactoryService.java
@@ -28,6 +28,11 @@ import org.apache.isis.commons.exceptions.IsisException;
 
 import lombok.NonNull;
 
+/**
+ * 
+ * @since 2.x {@index}
+ *
+ */
 // tag::refguide[]
 public interface FactoryService {
 
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/factory/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/factory/package-info.java
deleted file mode 100644
index 35e07de..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/factory/package-info.java
+++ /dev/null
@@ -1,26 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.factory.FactoryService} collects together methods for instantiating
- * domain objects.
- *
- *
- */
-package org.apache.isis.applib.services.factory;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/grid/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/grid/package-info.java
deleted file mode 100644
index 50e7826..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/grid/package-info.java
+++ /dev/null
@@ -1,26 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.grid.GridService} encapsulates a single layout grid system which
- * can be used to customize the layout of domain objects.
- *
- *
- */
-package org.apache.isis.applib.services.grid;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/health/Health.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/health/Health.java
deleted file mode 100644
index a125837..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/health/Health.java
+++ /dev/null
@@ -1,45 +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.health;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-// tag::refguide[]
-@AllArgsConstructor
-public class Health {
-
-    public static Health ok() {
-        return new Health(null, null);
-    }
-    public static Health error(final Throwable throwable) {
-        return new Health(throwable.getMessage(), throwable);
-    }
-    public static Health error(String message) {
-        return new Health(message, null);
-    }
-
-    @Getter
-    private final String message;
-    @Getter
-    private final Throwable cause;
-
-    public boolean getResult() { return message == null && cause == null; }
-}
-// end::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/hint/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/hint/package-info.java
deleted file mode 100644
index 18ca5c6..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/hint/package-info.java
+++ /dev/null
@@ -1,28 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.hint.HintStore} service defines an SPI for the Wicket viewer to store
- * UI hints on a per-object basis. For example, the viewer remembers which tabs are selected, and for collections
- * which view is selected (eg table or hidden), which page of a table to render, or whether "show all" (rows) is
- * toggled.
- *
- *
- */
-package org.apache.isis.applib.services.hint;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/homepage/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/homepage/package-info.java
deleted file mode 100644
index 2bb38af..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/homepage/package-info.java
+++ /dev/null
@@ -1,24 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.homepage.HomePageResolverService} returns the view model, if any
- * annotated with {@link org.apache.isis.applib.annotation.HomePage}.
- */
-package org.apache.isis.applib.services.homepage;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/i18n/TranslatableString.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/i18n/TranslatableString.java
deleted file mode 100644
index b3c950d..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/i18n/TranslatableString.java
+++ /dev/null
@@ -1,292 +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.i18n;
-
-import java.util.HashMap;
-import java.util.List;
-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[]
-@Value
-public final class TranslatableString {
-
-    // end::refguide[]
-    // -- tr, trn (factory methods); constructor
-
-    /**
-     * A translatable string with a single pattern for both singular and plural forms.
-     *
-     * @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
-     *
-     * @param singularPattern - pattern for the singular form, with <code>${xxx}</code> placeholders
-     * @param pluralPattern - pattern for the singular form, with <code>${xxx}</code> placeholders
-     * @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,
-            final int number,
-            final Object... paramArgs) {
-
-        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}
-     */
-    private static Map<String, Object> asMap(final Object[] paramArgs) {
-        final HashMap<String, Object> map = new HashMap<String, Object>();
-        boolean param = true;
-        String paramStr = null;
-        for (final Object paramArg : paramArgs) {
-            if (param) {
-                if (paramArg instanceof String) {
-                    paramStr = (String) paramArg;
-                } else {
-                    throw new IllegalArgumentException("Parameter must be a string");
-                }
-            } else {
-                final Object arg = paramArg;
-                map.put(paramStr, arg);
-                paramStr = null;
-            }
-            param = !param;
-        }
-        if (paramStr != null) {
-            throw new IllegalArgumentException("Must have equal number of parameters and arguments");
-        }
-        return map;
-    }
-
-    private TranslatableString(
-            final Type type,
-            final String singularText,
-            final String pluralText,
-            final int number,
-            final Map<String, Object> argumentsByParameterName) {
-
-        this.type = type;
-        this.singularText = singularText;
-        this.pluralText = pluralText;
-        this.number = number;
-        this.argumentsByParameterName = argumentsByParameterName;
-    }
-
-
-
-    // -- singularText, pluralText, pluralForm
-
-    private final String singularText;
-    private final String pluralText;
-
-    /**
-     * The text as provided in (either of the {@link #tr(String, Object...) factory} {@link #trn(String, String, int, Object...) method}s,
-     * with placeholders rather than substituted arguments; if {@link #isPluralForm()} is <code>true</code> then used only
-     * for the singular form.
-     */
-    String getSingularText() {
-        return singularText;
-    }
-
-    /**
-     * The plural text as provided in the {@link #trn(String, String, int, Object...) factory method}, with placeholders
-     * rather than substituted arguments; but will be <code>null</code> if {@link #isPluralForm()} is <code>false</code>.
-     */
-    String getPluralText() {
-        return pluralText;
-    }
-
-    private enum Type {
-        /**
-         * No plurals
-         */
-        TR {
-            @Override
-            public String toString(final TranslatableString trString) {
-                return "tr: " + trString.singularText;
-            }
-        },
-        /**
-         * With plurals
-         */
-        TRN {
-            @Override
-            public String toString(final TranslatableString trString) {
-                return "trn: " + trString.pluralText;
-            }
-        };
-
-        public abstract String toString(final TranslatableString trString);
-    }
-
-
-    private final Type type;
-    private final int number;
-
-    boolean isPluralForm() {
-        return type == Type.TRN;
-    }
-
-
-    // -- argumentsByParameterName
-    private final Map<String, Object> argumentsByParameterName;
-
-    /**
-     * The arguments; excluded from {@link #equals(Object)} comparison.
-     */
-    Map<String, Object> getArgumentsByParameterName() {
-        return argumentsByParameterName;
-    }
-
-
-    // -- translate
-
-    /**
-     * Translates this string using the provided {@link org.apache.isis.applib.services.i18n.TranslationService}, selecting
-     * either the single or plural form as per {@link #getPattern()}.
-     * @param translationService
-     * @param context
-     * @return
-     */
-    // tag::refguide[]
-    public String translate(final TranslationService translationService, final String context) {
-
-        final String translatedText =
-                !isPluralForm()
-                ? translationService.translate(context, getSingularText())
-                        : translationService.translate(context, getSingularText(), getPluralText(), number);
-                return translated(translatedText);
-    }
-
-    // end::refguide[]
-    /**
-     * The text to be translated; depends on whether {@link #isPluralForm()} and whether to be translated.
-     *
-     * <p>
-     *     Any placeholders will <i>not</i> have been replaced.
-     * </p>
-     *
-     * <p>
-     *     NB: this method is exposed only so that implementations of
-     *     {@link org.apache.isis.applib.services.exceprecog.TranslatableException} can return a non-null
-     *     {@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);
-    }
-
-    static String format(String format, Map<String, Object> values)
-    {
-        StringBuilder formatter = new StringBuilder(format);
-        List<Object> valueList = _Lists.newArrayList();
-
-        Matcher matcher = Pattern.compile("\\{(\\w+)}").matcher(format);
-
-        while (matcher.find())
-        {
-            String key = matcher.group(1);
-
-            String formatKey = String.format("{%s}", key);
-            int index = formatter.indexOf(formatKey);
-
-            if (index != -1)
-            {
-                formatter.replace(index, index + formatKey.length(), "%s");
-                valueList.add(values.get(key));
-            }
-        }
-
-        return String.format(formatter.toString(), valueList.toArray());
-    }
-
-
-
-    // -- equals, hashCode, toString
-
-    @Override
-    public boolean equals(final Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        final TranslatableString that = (TranslatableString) o;
-
-        if (pluralText != null ? !pluralText.equals(that.pluralText) : that.pluralText != null)
-            return false;
-        if (singularText != null ? !singularText.equals(that.singularText) : that.singularText != null)
-            return false;
-        if (type != that.type) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = type != null ? type.hashCode() : 0;
-        result = 31 * result + (singularText != null ? singularText.hashCode() : 0);
-        result = 31 * result + (pluralText != null ? pluralText.hashCode() : 0);
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return type.toString(this);
-    }
-
-    // tag::refguide[]
-}
-// end::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/i18n/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/i18n/package-info.java
deleted file mode 100644
index bb1aacc..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/i18n/package-info.java
+++ /dev/null
@@ -1,28 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.i18n.TranslationService} is the cornerstone of Apache Isis' i18n support.
- * Its role is to be able to provide translated versions of the various elements within the Apache Isis metamodel
- * (service and object classes, properties, collections, actions, action parameters) and also to translate business
- * rule (disable/valid) messages, and exceptions. These translations provide for both singular and plural forms.
- *
- *
- */
-package org.apache.isis.applib.services.i18n;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/ExecutionContext.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/ExecutionContext.java
deleted file mode 100644
index 2265b69..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/ExecutionContext.java
+++ /dev/null
@@ -1,83 +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.iactn;
-
-import java.io.Serializable;
-import java.util.Locale;
-import java.util.TimeZone;
-
-import org.apache.isis.applib.clock.VirtualClock;
-import org.apache.isis.applib.services.user.UserMemento;
-
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.RequiredArgsConstructor;
-import lombok.Value;
-import lombok.With;
-
-/**
- * Provides the user and scenario specific environment for an {@link Interaction.Execution}
- * 
- * @since 2.0
- */
-@Value @Builder
-@RequiredArgsConstructor
-public final class ExecutionContext implements Serializable {
-    
-    private static final long serialVersionUID = -220896735209733865L;
-    
-    // -- IMMUTABLE FIELDS
-
-    /**
-     * The (programmatically) simulated (or actual) user.
-     * 
-     * @apiNote immutable, allows an {@link Interaction} to (logically) run with its 
-     * own simulated (or actual) user 
-     */
-    @With @Getter @Builder.Default 
-    private final @NonNull UserMemento user = UserMemento.system();
-    
-    /**
-     * The (programmatically) simulated (or actual) clock.
-     * 
-     * @apiNote immutable, allows an {@link Interaction} to (logically) run with its 
-     * own simulated (or actual) clock 
-     */
-    @With @Getter @Builder.Default 
-    private final @NonNull VirtualClock clock = VirtualClock.system();
-    
-    @With @Getter @Builder.Default 
-    private final @NonNull Locale locale = Locale.getDefault();
-    
-    @With @Getter @Builder.Default 
-    private final @NonNull TimeZone timeZone = TimeZone.getDefault();
-    
-    // -- FACTORIES
-    
-    /**
-     * Creates a new {@link ExecutionContext} with the specified user and 
-     * system defaults for clock, locale and time-zone.
-     */
-    public static ExecutionContext ofUserWithSystemDefaults(
-            final @NonNull UserMemento user) {
-        return new ExecutionContext(user, VirtualClock.system(), Locale.getDefault(), TimeZone.getDefault());
-    }   
-    
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/InteractionContext.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/InteractionContext.java
index 98a4aa8..e065578 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/InteractionContext.java
+++ b/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/InteractionContext.java
@@ -35,18 +35,14 @@ public interface InteractionContext {
      * Optionally, the currently active {@link Interaction} for the calling thread.
      */
     // tag::refguide[]
-    Optional<Interaction> getInteraction();    // <.>
+    Optional<Interaction> currentInteraction();    // <.>
     // end::refguide[]
 
     // -- SHORTCUTS
     
-    default Interaction getInteractionIfAny() {
-    	return currentInteraction().orElse(null);
-    }
-    
-    default Interaction getInteractionElseFail() {
+    default Interaction currentInteractionElseFail() {
     	return currentInteraction().orElseThrow(()->_Exceptions
-    			.unrecoverable("needs an InteractionSession on current thread"));
+    			.illegalState("No InteractionSession on current thread"));
     }
     
     // tag::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/package-info.java
deleted file mode 100644
index f0cc5eb..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/package-info.java
+++ /dev/null
@@ -1,29 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.iactn.InteractionContext} is a request-scoped domain service that is used
- * to obtain the current {@link org.apache.isis.applib.services.iactn.Interaction}.
- * An Interaction in turn generally consists of a single top-level Execution, either to invoke an action or to edit
- * a property. If that top-level action or property uses the {@link org.apache.isis.applib.services.wrapper.WrapperFactory} to invoke child actions/properties, then
- * those sub-executions are captured as a call-graph. The Execution is thus a graph structure.
- *
- *
- */
-package org.apache.isis.applib.services.iactn;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/jaxb/CatalogingSchemaOutputResolver.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/jaxb/CatalogingSchemaOutputResolver.java
deleted file mode 100644
index 8df647b..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/jaxb/CatalogingSchemaOutputResolver.java
+++ /dev/null
@@ -1,153 +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.jaxb;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.bind.SchemaOutputResolver;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.transform.Result;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-
-import org.apache.isis.commons.internal.codec._DocumentFactories;
-import org.apache.isis.commons.internal.collections._Lists;
-import org.apache.isis.commons.internal.collections._Maps;
-
-/**
- * An implementation of {@link SchemaOutputResolver} that keeps track of all the schemas for which it has
- * {@link #createOutput(String, String) created} an output {@link StreamResult} containing the content of the schema.
- */
-class CatalogingSchemaOutputResolver extends SchemaOutputResolver {
-
-    private static final String SCHEMA_LOCATION_INCORRECT = "http://isis.apache.org/schema/common";
-    private static final String SCHEMA_LOCATION_CORRECT = "http://isis.apache.org/schema/common/common.xsd";
-
-    private final JaxbService.IsisSchemas isisSchemas;
-    private final List<String> namespaceUris = _Lists.newArrayList();
-
-    public CatalogingSchemaOutputResolver(final JaxbService.IsisSchemas isisSchemas) {
-        this.isisSchemas = isisSchemas;
-    }
-
-    public List<String> getNamespaceUris() {
-        return namespaceUris;
-    }
-
-    private Map<String, StreamResultWithWriter> schemaResultByNamespaceUri = _Maps.newLinkedHashMap();
-
-    public String getSchemaTextFor(final String namespaceUri) {
-        final StreamResultWithWriter streamResult = schemaResultByNamespaceUri.get(namespaceUri);
-        if (streamResult == null) {
-            return null;
-        }
-        String xsd = streamResult.asString();
-
-        try {
-            
-            final DocumentBuilder parser = _DocumentFactories.documentBuilder();
-            final Document document = parser.parse(new InputSource(new StringReader(xsd)));
-
-            final Element el = document.getDocumentElement();
-            replaceCommonSchemaLocationIfAny(el);
-
-            final Transformer transformer = _DocumentFactories.transformer();
-            final StringWriter writer = new StringWriter();
-            transformer.transform(new DOMSource(document), new StreamResult(writer));
-            xsd = writer.toString();
-
-        } catch(Exception ex) {
-            // ignore
-        }
-
-        return xsd;
-    }
-
-    // replace <xs:import namespace="..." schemaLocation="http://isis.apache.org/schema/common"/>
-    // with    <xs:import namespace="..." schemaLocation="http://isis.apache.org/schema/common/common.xsd"/>
-    private static void replaceCommonSchemaLocationIfAny(final Node node) {
-        if(schemaLocationReplacedIn(node)) {
-            return;
-        }
-        final NodeList nodeList = node.getChildNodes();
-        for (int i = 0; i < nodeList.getLength(); i++) {
-            final Node currentNode = nodeList.item(i);
-            if (currentNode.getNodeType() == Node.ELEMENT_NODE) {
-                replaceCommonSchemaLocationIfAny(currentNode);
-            }
-        }
-    }
-
-    private static boolean schemaLocationReplacedIn(final Node node) {
-        if(node instanceof Element) {
-            final Element importEl = (Element) node;
-            final Attr schemaLocationAttr = importEl.getAttributeNode("schemaLocation");
-            if(schemaLocationAttr != null) {
-                final String value = schemaLocationAttr.getValue();
-                if(SCHEMA_LOCATION_INCORRECT.endsWith(value)) {
-                    schemaLocationAttr.setValue(SCHEMA_LOCATION_CORRECT);
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public Result createOutput(
-            final String namespaceUri, final String suggestedFileName) throws IOException {
-
-        final StreamResultWithWriter result = new StreamResultWithWriter();
-
-        result.setSystemId(namespaceUri);
-
-        if (isisSchemas.shouldIgnore(namespaceUri)) {
-            // skip
-        } else {
-            namespaceUris.add(namespaceUri);
-            schemaResultByNamespaceUri.put(namespaceUri, result);
-        }
-
-        return result;
-    }
-
-    public Map<String, String> asMap() {
-        final Map<String,String> map = _Maps.newLinkedHashMap();
-        final List<String> namespaceUris = getNamespaceUris();
-
-        for (String namespaceUri : namespaceUris) {
-            map.put(namespaceUri, getSchemaTextFor(namespaceUri));
-        }
-
-        return Collections.unmodifiableMap(map);
-    }
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/jaxb/StreamResultWithWriter.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/jaxb/StreamResultWithWriter.java
deleted file mode 100644
index b98338e..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/jaxb/StreamResultWithWriter.java
+++ /dev/null
@@ -1,47 +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.jaxb;
-
-import java.io.StringWriter;
-
-import javax.xml.transform.stream.StreamResult;
-
-/**
- * A {@link StreamResult} that contains its own writer.
- *
- * <p>
- *     The point is that the writer is only ever queried lazily AFTER the result has been generated.
- * </p>
- */
-class StreamResultWithWriter extends StreamResult {
-    private final StringWriter writer;
-
-    public StreamResultWithWriter() {
-        this(new StringWriter());
-    }
-
-    private StreamResultWithWriter(StringWriter writer) {
-        super(writer);
-        this.writer = writer;
-    }
-
-    public String asString() {
-        return writer.toString();
-    }
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/jaxb/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/jaxb/package-info.java
deleted file mode 100644
index a3145e8..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/jaxb/package-info.java
+++ /dev/null
@@ -1,26 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.jaxb.JaxbService} allows instances of JAXB-annotated classes to be
- * marshalled to XML and unmarshalled from XML back into domain objects.
- *
- *
- */
-package org.apache.isis.applib.services.jaxb;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/layout/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/layout/package-info.java
deleted file mode 100644
index f38038e..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/layout/package-info.java
+++ /dev/null
@@ -1,27 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.layout.LayoutService} provides the ability to obtain the XML layout
- * for a single domain object or for all domain objects. This functionality is surfaced through the user interface
- * through a related mixin and menu action.
- *
- *
- */
-package org.apache.isis.applib.services.layout;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/linking/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/linking/package-info.java
deleted file mode 100644
index d292d51..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/linking/package-info.java
+++ /dev/null
@@ -1,26 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.linking.DeepLinkService} provides the ability to obtain a
- * <code>java.net.URI</code> that links to a representation of any (persisted) domain entity or view model.
- *
- *
- */
-package org.apache.isis.applib.services.linking;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/message/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/message/package-info.java
deleted file mode 100644
index f70f8f6..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/message/package-info.java
+++ /dev/null
@@ -1,26 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.message.MessageService} allows domain objects to raise information,
- * warning or error messages. These messages can either be simple strings, or can be translated.
- *
- *
- */
-package org.apache.isis.applib.services.message;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/metamodel/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/metamodel/package-info.java
deleted file mode 100644
index 4be56f7..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/metamodel/package-info.java
+++ /dev/null
@@ -1,26 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.metamodel.MetaModelService} service provides access to a number of
- * aspects of Apache Isis' internal metamodel.
- *
- *
- */
-package org.apache.isis.applib.services.metamodel;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/metrics/MetricsService.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/metrics/MetricsService.java
index a6618d0..cdb128a 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/metrics/MetricsService.java
+++ b/api/applib/src/main/adoc/modules/applib-svc/examples/services/metrics/MetricsService.java
@@ -30,7 +30,7 @@ public interface MetricsService {
      * <p>
      * Corresponds to the number of times that <code>javax.jdo.listener.LoadLifecycleListener#postLoad(InstanceLifecycleEvent)</code> (or equivalent) is fired.
      * <p>
-     * Is captured within {@link MemberExecutionDto#getMetrics()} (accessible from {@link InteractionContext#getInteractionIfAny()}).
+     * Is captured within {@link MemberExecutionDto#getMetrics()} (accessible from {@link InteractionContext#currentInteraction()}).
      */
     // tag::refguide[]
     int numberEntitiesLoaded();      // <.>
@@ -42,7 +42,7 @@ public interface MetricsService {
      * <p>
      * Corresponds to the number of times that <code>javax.jdo.listener.DirtyLifecycleListener#preDirty(InstanceLifecycleEvent)</code> (or equivalent) callback is fired.
      * <p>
-     * Is captured within {@link MemberExecutionDto#getMetrics()} (accessible from {@link InteractionContext#getInteractionIfAny()}).
+     * Is captured within {@link MemberExecutionDto#getMetrics()} (accessible from {@link InteractionContext#currentInteraction()}.
      */
     // tag::refguide[]
     int numberEntitiesDirtied();     // <.>
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/metrics/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/metrics/package-info.java
deleted file mode 100644
index 0422a81..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/metrics/package-info.java
+++ /dev/null
@@ -1,27 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.metrics.MetricsService} is a request-scoped domain service that hooks
- * into the JDO/DataNucleus ObjectStore to provide a number of counters relating to numbers of object loaded,
- * dirtied etc.
- *
- *
- */
-package org.apache.isis.applib.services.metrics;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/package-info.java
deleted file mode 100644
index 8678ea9..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/package-info.java
+++ /dev/null
@@ -1,24 +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.
- */
-
-/**
- * Defines a set of domain service APIs and SPIs.  APIs are implemented by the framework (for the application to call),
- * SPIs are hooks called by framework if an implementation provided by application.
- */
-package org.apache.isis.applib.services;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/CommandLogger.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/CommandLogger.java
deleted file mode 100644
index 42fa526..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/CommandLogger.java
+++ /dev/null
@@ -1,57 +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.publishing.log;
-
-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;
-import org.apache.isis.applib.services.command.Command;
-import org.apache.isis.applib.services.publishing.spi.CommandSubscriber;
-
-import lombok.extern.log4j.Log4j2;
-
-@Service
-@Named("isisApplib.CommandLogger")
-@Order(OrderPrecedence.LATE)
-@Primary
-@Qualifier("Logging")
-@Log4j2
-public class CommandLogger implements CommandSubscriber {
-
-    @Override
-    public boolean isEnabled() {
-        return log.isDebugEnabled();
-    }
-
-    @Override
-    public void onCompleted(Command command) {
-        
-        log.debug("completed: {}, systemStateChanged {}",
-                command.getLogicalMemberIdentifier(),
-                command.isSystemStateChanged());
-        
-        //log.debug("completed: {}", command);
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/EntityChangesLogger.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/EntityChangesLogger.java
deleted file mode 100644
index 54977f2..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/EntityChangesLogger.java
+++ /dev/null
@@ -1,59 +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.publishing.log;
-
-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;
-import org.apache.isis.applib.services.publishing.spi.EntityChanges;
-import org.apache.isis.applib.services.publishing.spi.EntityChangesSubscriber;
-import org.apache.isis.applib.util.schema.ChangesDtoUtils;
-import org.apache.isis.schema.chg.v2.ChangesDto;
-
-import lombok.extern.log4j.Log4j2;
-
-@Service
-@Named("isisApplib.EntityChangesLogger")
-@Order(OrderPrecedence.LATE)
-@Primary
-@Qualifier("Logging")
-@Log4j2
-public class EntityChangesLogger implements EntityChangesSubscriber {
-
-    @Override
-    public boolean isEnabled() {
-        return log.isDebugEnabled();
-    }
-    
-    @Override
-    public void onChanging(final EntityChanges changingEntities) {
-
-        final ChangesDto changesDto = changingEntities.getDto();
-
-        log.debug(ChangesDtoUtils.toXml(changesDto));
-    }
-
-
-}
-
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/EntityPropertyChangeLogger.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/EntityPropertyChangeLogger.java
deleted file mode 100644
index fcf05ae..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/EntityPropertyChangeLogger.java
+++ /dev/null
@@ -1,52 +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.publishing.log;
-
-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;
-import org.apache.isis.applib.services.publishing.spi.EntityPropertyChange;
-import org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber;
-
-import lombok.extern.log4j.Log4j2;
-
-@Service
-@Named("isisApplib.EntityPropertyChangeLogger")
-@Order(OrderPrecedence.LATE)
-@Primary
-@Qualifier("logging")
-@Log4j2
-public class EntityPropertyChangeLogger implements EntityPropertyChangeSubscriber {
-
-    @Override
-    public boolean isEnabled() {
-        return log.isDebugEnabled();
-    }
-
-    @Override
-    public void onChanging(final EntityPropertyChange entityPropertyChange) {
-        log.debug(entityPropertyChange.toString());
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/ExecutionLogger.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/ExecutionLogger.java
deleted file mode 100644
index da30481..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/ExecutionLogger.java
+++ /dev/null
@@ -1,60 +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.publishing.log;
-
-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;
-import org.apache.isis.applib.services.iactn.Interaction;
-import org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber;
-import org.apache.isis.applib.util.schema.InteractionDtoUtils;
-import org.apache.isis.schema.ixn.v2.InteractionDto;
-
-import lombok.extern.log4j.Log4j2;
-
-@Service
-@Named("isisApplib.ExecutionLogger")
-@Order(OrderPrecedence.LATE)
-@Primary
-@Qualifier("Logging")
-@Log4j2
-public class ExecutionLogger implements ExecutionSubscriber {
-
-    @Override
-    public boolean isEnabled() {
-        return log.isDebugEnabled();
-    }
-    
-    @Override
-    public void onExecution(final Interaction.Execution<?, ?> execution) {
-
-        final InteractionDto interactionDto =
-                InteractionDtoUtils.newInteractionDto(execution, InteractionDtoUtils.Strategy.DEEP);
-
-        log.debug(InteractionDtoUtils.toXml(interactionDto));
-
-    }
-
-}
-
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/package-info.java
deleted file mode 100644
index db645b8..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/package-info.java
+++ /dev/null
@@ -1,34 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber} 
- * service provides a simple mechanism to capture changes to data. 
- * It is called for each property that has changed on any entity object 
- * (when enabled for publishing), as a set of pre- and post-values.
- * 
- * The {@link org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber} API is intended 
- * for coarse-grained publish/subscribe for system-to-system interactions, from Apache Isis 
- * to some other system. Events that can be published are action invocations/property edits, 
- * and changed objects. A typical use case is to publish onto a pub/sub bus such as 
- * ActiveMQ with Camel to keep other systems up to date.
- * 
- * TODO v2 publishing/subscribing now has even more participants
- */
-package org.apache.isis.applib.services.publishing;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/CommandSubscriber.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/CommandSubscriber.java
deleted file mode 100644
index 64b4d06..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/CommandSubscriber.java
+++ /dev/null
@@ -1,45 +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.publishing.spi;
-
-import org.apache.isis.applib.services.command.Command;
-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
- */
-// tag::refguide[]
-public interface CommandSubscriber extends HasEnabling {
-
-    /**
-     * Notifies that the command has completed.
-     *
-     * <p>
-     *     This is an opportunity for implementations to process the command,
-     *     for example to persist a representation of it.
-     * </p>
-     */
-    // tag::refguide[]
-    void onCompleted(Command command);           // <.>
-
-}
-// end::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityChanges.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityChanges.java
deleted file mode 100644
index a2e343d..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityChanges.java
+++ /dev/null
@@ -1,44 +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.publishing.spi;
-
-import java.sql.Timestamp;
-
-import org.apache.isis.commons.having.HasUniqueId;
-import org.apache.isis.commons.having.HasUsername;
-import org.apache.isis.schema.chg.v2.ChangesDto;
-
-// tag::refguide[]
-public interface EntityChanges
-        extends HasUniqueId,            // <.>
-                HasUsername {           // <.>
-
-    Timestamp getCompletedAt();         // <.>
-
-    int getNumberLoaded();              // <.>
-    int getNumberCreated();             // <.>
-    int getNumberUpdated();             // <.>
-    int getNumberDeleted();             // <.>
-
-    int getNumberPropertiesModified();  // <.>
-
-    ChangesDto getDto();                // <.>
-
-}
-// end::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityChangesSubscriber.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityChangesSubscriber.java
deleted file mode 100644
index 2c275a6..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityChangesSubscriber.java
+++ /dev/null
@@ -1,36 +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.publishing.spi;
-
-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
- */
-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);      // <.>
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityPropertyChange.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityPropertyChange.java
deleted file mode 100644
index 490b9da..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityPropertyChange.java
+++ /dev/null
@@ -1,59 +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.publishing.spi;
-
-import java.sql.Timestamp;
-import java.util.UUID;
-
-import org.apache.isis.applib.services.bookmark.Bookmark;
-
-import lombok.Value;
-
-/**
- * Immutable data record for {@link EntityPropertyChangeSubscriber}s. 
- * 
- * @since 2.0
- */
-@Value(staticConstructor = "of")
-public class EntityPropertyChange {
-
-    private final UUID interactionId; 
-    private final int sequence;
-    private final String targetClassName;
-    private final Bookmark target;                           
-    private final String memberIdentifier;
-    private final String propertyName;                             
-    private final String preValue; 
-    private final String postValue;          
-    private final String user; 
-    private final Timestamp timestamp;    
-    
-    @Override
-    public String toString() {
-        return String.format("%s,%d: %s by %s, %s: %s -> %s",
-        getInteractionId(), 
-        getSequence(), 
-        getTarget().toString(), 
-        getUser(), 
-        getPropertyName(), 
-        getPreValue(), 
-        getPostValue());
-    }
-    
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityPropertyChangeSubscriber.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityPropertyChangeSubscriber.java
deleted file mode 100644
index 340e077..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityPropertyChangeSubscriber.java
+++ /dev/null
@@ -1,39 +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.publishing.spi;
-
-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
- */
-// 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);     // <.>
-
-}
-// end::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/ExecutionSubscriber.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/ExecutionSubscriber.java
deleted file mode 100644
index b224b1d..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/ExecutionSubscriber.java
+++ /dev/null
@@ -1,45 +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.publishing.spi;
-
-import org.apache.isis.applib.services.iactn.Interaction;
-import org.apache.isis.applib.util.schema.InteractionDtoUtils;
-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.
- */
-// tag::refguide[]
-public interface ExecutionSubscriber extends HasEnabling {
-
-    // end::refguide[]
-    /**
-     * Publish each {@link Interaction.Execution} immediately after it completes.
-     * <p>
-     * Most implementations are expected to use {@link Interaction.Execution#getDto()} to create a serializable
-     * 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);  // <.>
-    
-}
-// end::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/queryresultscache/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/queryresultscache/package-info.java
deleted file mode 100644
index 3e6485f..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/queryresultscache/package-info.java
+++ /dev/null
@@ -1,27 +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.
- */
-
-/**
- * The purpose of the {@link org.apache.isis.applib.services.queryresultscache.QueryResultsCache} is to improve
- * response times to the user, by providing a request-scoped cache of the value of some (safe or idempotent) method
- * call. This will typically be as the result of running a query, but could be any expensive operation.
- *
- *
- */
-package org.apache.isis.applib.services.queryresultscache;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/registry/ServiceRegistry.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/registry/ServiceRegistry.java
deleted file mode 100644
index 29d8f52..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/registry/ServiceRegistry.java
+++ /dev/null
@@ -1,205 +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.registry;
-
-import java.lang.annotation.Annotation;
-import java.util.Comparator;
-import java.util.NoSuchElementException;
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import javax.annotation.Priority;
-
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.commons.internal._Constants;
-import org.apache.isis.commons.internal.base._Reduction;
-import org.apache.isis.commons.internal.exceptions._Exceptions;
-import org.apache.isis.commons.internal.ioc._ManagedBeanAdapter;
-import org.apache.isis.commons.internal.reflection._Reflect;
-
-import lombok.val;
-
-/**
- * 
- * @since 2.0
- *
- */
-// tag::refguide[]
-public interface ServiceRegistry {
-
-    /**
-     * Obtains a {@link Can} container containing any matching instances for the given required type
-     * and additional required qualifiers.
-     *
-     * @param type
-     * @param qualifiers
-     * @return non-null
-     */
-    // tag::refguide[]
-    <T> Can<T> select(Class<T> type, Annotation[] qualifiers);
-
-    /**
-     * Obtains a {@link Can} container containing any matching instances for the given required type.
-     *
-     * @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(
-                        "Failed to lookup BeanAdapter by id '" + id + "'"));
-    }
-
-    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()) {
-            return Optional.empty();
-        }
-        if(bin.isCardinalityOne()) {
-            return bin.getSingleton();
-        }
-        // dealing with ambiguity, get the one, with highest priority annotated
-
-        val prioComparator = InstanceByPriorityComparator.instance();
-        val toMaxPrioReduction =
-                //TODO [2033] not tested yet, whether the 'direction' is correct < vs >
-                _Reduction.<T>of((max, next)-> prioComparator.leftIsHigherThanRight(next, max) ? next : max);
-
-        bin.forEach(toMaxPrioReduction);
-
-        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
-
-    class InstanceByPriorityComparator implements Comparator<Object> {
-
-        private static final InstanceByPriorityComparator INSTANCE =
-                new InstanceByPriorityComparator();
-
-        public static InstanceByPriorityComparator instance() {
-            return INSTANCE;
-        }
-
-        @Override
-        public int compare(Object o1, Object o2) {
-
-            if(o1==null) {
-                if(o2==null) {
-                    return 0;
-                } else {
-                    return -1; // o1 < o2
-                }
-            }
-            if(o2==null) {
-                return 1; // o1 > o2
-            }
-
-            val prioAnnot1 = _Reflect.getAnnotation(o1.getClass(), Priority.class);
-            val prioAnnot2 = _Reflect.getAnnotation(o2.getClass(), Priority.class);
-            val prio1 = prioAnnot1!=null ? prioAnnot1.value() : 0;
-            val prio2 = prioAnnot2!=null ? prioAnnot2.value() : 0;
-            return Integer.compare(prio1, prio2);
-        }
-
-        public boolean leftIsHigherThanRight(Object left, Object right) {
-            return compare(left, right) > 0;
-        }
-
-    }
-
-    // tag::refguide[]
-}
-// end::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/registry/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/registry/package-info.java
deleted file mode 100644
index 9c15400..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/registry/package-info.java
+++ /dev/null
@@ -1,27 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.registry.ServiceRegistry} service collects together methods injecting
- * or looking up domain services (either provided by the framework or application-specific) currently known to the
- * runtime.
- *
- *
- */
-package org.apache.isis.applib.services.registry;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/repository/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/repository/package-info.java
deleted file mode 100644
index 67603ba..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/repository/package-info.java
+++ /dev/null
@@ -1,27 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.repository.RepositoryService} collects together methods for creating,
- * persisting and searching for entities from the underlying persistence store. It acts as an abstraction over the
- * JDO/DataNucleus objectstore.
- *
- *
- */
-package org.apache.isis.applib.services.repository;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/routing/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/routing/package-info.java
deleted file mode 100644
index dc9c7f0..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/routing/package-info.java
+++ /dev/null
@@ -1,26 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.routing.RoutingService} provides the ability to return (and therefore
- * render) an alternative object from an action invocation.
- *
- *
- */
-package org.apache.isis.applib.services.routing;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/scratchpad/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/scratchpad/package-info.java
deleted file mode 100644
index 66501bf..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/scratchpad/package-info.java
+++ /dev/null
@@ -1,26 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.scratchpad.Scratchpad} (request-scoped) domain service allows objects to
- * exchange information even if they do not directly call each other.
- *
- *
- */
-package org.apache.isis.applib.services.scratchpad;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/session/SessionLoggingServiceLogging.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/session/SessionLoggingServiceLogging.java
deleted file mode 100644
index 1bba8c2..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/session/SessionLoggingServiceLogging.java
+++ /dev/null
@@ -1,69 +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.session;
-
-import java.util.Date;
-
-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;
-
-import lombok.extern.log4j.Log4j2;
-
-@Service
-@Named("isisApplib.SessionLoggingServiceLogging")
-@Order(OrderPrecedence.LATE)
-@Primary
-@Qualifier("logging")
-@Log4j2
-// tag::refguide[]
-public class SessionLoggingServiceLogging implements SessionLoggingService {
-
-    @Override
-    public void log(
-            final Type type,
-            final String username,
-            final Date date,
-            final CausedBy causedBy,
-            final String sessionId) {
-
-        if(log.isDebugEnabled()) {
-            final StringBuilder logMessage = new StringBuilder();
-            logMessage.append("User '").append(username);
-            logMessage.append("' with sessionId '").append(sessionId)
-            .append("' has logged ");
-            if (type == Type.LOGIN) {
-                logMessage.append("in");
-            } else {
-                logMessage.append("out");
-            }
-            logMessage.append(" at '").append(date).append("'.");
-            if (causedBy == CausedBy.SESSION_EXPIRATION) {
-                logMessage.append("Cause: session expiration");
-            }
-            log.debug(logMessage);
-        }
-    }
-}
-// end::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/session/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/session/package-info.java
deleted file mode 100644
index ec455bf..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/session/package-info.java
+++ /dev/null
@@ -1,24 +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.
- */
-
-/**
- *
- * @see <a href="">Reference guide</a>
- */
-package org.apache.isis.applib.services.session;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/sudo/SudoService.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/sudo/SudoService.java
index edff67b..2bffe99 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/sudo/SudoService.java
+++ b/api/applib/src/main/adoc/modules/applib-svc/examples/services/sudo/SudoService.java
@@ -24,12 +24,13 @@ import java.util.function.UnaryOperator;
 import org.apache.isis.applib.services.iactn.ExecutionContext;
 import org.apache.isis.applib.services.user.RoleMemento;
 import org.apache.isis.applib.services.user.UserService;
+import org.apache.isis.commons.functional.ThrowingRunnable;
 
 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#getUser() getUser()} method returns the specified user/role
+ * while the {@link UserService}'s {@link UserService#currentUser() getUser()} method returns the specified user/role
  * as the effective user.
  */
 // tag::refguide[]
@@ -66,8 +67,8 @@ public interface SudoService {
     // tag::refguide[]
     default void run(                                        // <.>
             final @NonNull UnaryOperator<ExecutionContext> sudoMapper,
-            final @NonNull Runnable runnable) {
-        call(sudoMapper, ()->{runnable.run(); return null;});
+            final @NonNull ThrowingRunnable runnable) {
+        call(sudoMapper, ThrowingRunnable.toCallable(runnable));
     }
 
     // end::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/sudo/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/sudo/package-info.java
deleted file mode 100644
index 8d64ee6..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/sudo/package-info.java
+++ /dev/null
@@ -1,29 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.sudo.SudoService} allows the current user reported by the
- * {@link org.apache.isis.applib.services.user.UserService} to be temporarily changed to some other user. This is
- * useful both for integration testing (eg if testing a workflow system whereby objects are moved from one user to
- * another) and while running fixture scripts (eg setting up objects that would normally require several users to have
- * acted upon the objects).
- *
- *
- */
-package org.apache.isis.applib.services.sudo;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/swagger/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/swagger/package-info.java
deleted file mode 100644
index 4a80b28..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/swagger/package-info.java
+++ /dev/null
@@ -1,26 +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.
- */
-
-/**
- * The {@link SwaggerService} generates Swagger schema definition files to describe the public and/or private
- * RESTful APIs exposed by the RestfulObjects viewer.
- *
- *
- */
-package org.apache.isis.applib.services.swagger;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/tablecol/TableColumnOrderForCollectionTypeAbstract.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/tablecol/TableColumnOrderForCollectionTypeAbstract.java
deleted file mode 100644
index 33bc35d..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/tablecol/TableColumnOrderForCollectionTypeAbstract.java
+++ /dev/null
@@ -1,65 +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.tablecol;
-
-import java.util.List;
-
-import lombok.RequiredArgsConstructor;
-
-// tag::refguide[]
-@RequiredArgsConstructor
-public abstract class TableColumnOrderForCollectionTypeAbstract<T>
-        implements TableColumnOrderService {
-
-    private final Class<T> collectionType;
-
-    public final List<String> orderParented(
-            final Object parent,
-            final String collectionId,
-            final Class<?> collectionType,
-            final List<String> propertyIds) {
-        if (! this.collectionType.isAssignableFrom(collectionType)) {
-            return propertyIds;
-        }
-        return orderParented(parent, collectionId, propertyIds);
-    }
-
-    protected List<String> orderParented(
-            final Object parent,
-            final String collectionId,
-            final List<String> propertyIds) {
-        return propertyIds;
-    }
-
-    public final List<String> orderStandalone(
-            final Class<?> collectionType,
-            final List<String> propertyIds) {
-        if (! this.collectionType.isAssignableFrom(collectionType)) {
-            return propertyIds;
-        }
-        return orderStandalone(propertyIds);
-    }
-
-    protected List<String> orderStandalone(
-            final List<String> propertyIds) {
-        return propertyIds;
-    }
-
-}
-// end::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/title/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/title/package-info.java
deleted file mode 100644
index dd5921a..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/title/package-info.java
+++ /dev/null
@@ -1,25 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.title.TitleService} provides methods to programmatically obtain the title and icon of a domain object.
-
- *
- */
-package org.apache.isis.applib.services.title;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/urlencoding/UrlEncodingServiceUsingBaseEncodingAbstract.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/urlencoding/UrlEncodingServiceUsingBaseEncodingAbstract.java
deleted file mode 100644
index 8bc0dd2..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/urlencoding/UrlEncodingServiceUsingBaseEncodingAbstract.java
+++ /dev/null
@@ -1,44 +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.urlencoding;
-
-import java.nio.charset.StandardCharsets;
-
-import org.apache.isis.commons.internal.base._Bytes;
-import org.apache.isis.commons.internal.base._Strings;
-
-/**
- * to use, subclass and annotated with:
- * <pre>
- * &#064;DomainService(nature=DOMAIN, menuOrder="100")
- * </pre>
- */
-public abstract class UrlEncodingServiceUsingBaseEncodingAbstract implements UrlEncodingService {
-
-    @Override
-    public String encode(final byte[] bytes) {
-        return _Strings.ofBytes(_Bytes.asUrlBase64.apply(bytes), StandardCharsets.UTF_8);
-    }
-
-    @Override
-    public byte[] decode(final String str) {
-        return _Bytes.ofUrlBase64.apply(_Strings.toBytes(str, StandardCharsets.UTF_8));
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/urlencoding/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/urlencoding/package-info.java
deleted file mode 100644
index fa9add3..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/urlencoding/package-info.java
+++ /dev/null
@@ -1,29 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.urlencoding.UrlEncodingService} defines a consistent way to convert strings to/from a form safe for use within a URL.
- * The service is used by the framework to map view model mementos (derived from the state of the view model itself)
- * into a form that can be used as a view model. When the framework needs to recreate the view model (for example to
- * invoke an action on it), this URL is converted back into a view model memento, from which the view model can then
- * be hydrated
- *
- *
- */
-package org.apache.isis.applib.services.urlencoding;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/user/RoleMemento.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/user/RoleMemento.java
index 4558de9..32de23c 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/user/RoleMemento.java
+++ b/api/applib/src/main/adoc/modules/applib-svc/examples/services/user/RoleMemento.java
@@ -16,7 +16,6 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-
 package org.apache.isis.applib.services.user;
 
 import java.io.Serializable;
@@ -26,12 +25,13 @@ import org.apache.isis.applib.annotation.MemberOrder;
 import lombok.Getter;
 import lombok.Value;
 
+/**
+ * Immutable serializable value held by {@link UserMemento}.  
+ * @since 2.0 {@index}
+ */
 @Value
-// tag::refguide[]
 public final class RoleMemento implements Serializable {
 
-    // end::refguide[]
-    
     private static final long serialVersionUID = -3876856609238378274L;
     
     /**
@@ -60,17 +60,11 @@ public final class RoleMemento implements Serializable {
     }
 
     @MemberOrder(sequence = "1.1")
-    // tag::refguide[]
     @Getter
     private final String name;
 
-    // end::refguide[]
     @MemberOrder(sequence = "1.2")
-    // tag::refguide[]
     @Getter
     private final String description;
 
-    // ...
-
 }
-// end::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/user/UserMemento.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/user/UserMemento.java
index 69c5161..95df8e7 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/user/UserMemento.java
+++ b/api/applib/src/main/adoc/modules/applib-svc/examples/services/user/UserMemento.java
@@ -16,7 +16,6 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-
 package org.apache.isis.applib.services.user;
 
 import java.io.Serializable;
@@ -34,12 +33,10 @@ import lombok.Getter;
 import lombok.NonNull;
 
 /**
- * Details about a user and his roles.
- * Read-only.
+ * Immutable serializable value holding details about a user and its roles.
+ * @since 2.0 {@index}
  */
-// tag::refguide[]
 public final class UserMemento implements Serializable {
-    // end::refguide[]
     
     private static final long serialVersionUID = 7190090455587885367L;
     private static final UserMemento SYSTEM_USER = UserMemento.ofName("__system"); 
@@ -118,21 +115,18 @@ public final class UserMemento implements Serializable {
      * The user's login name.
      */
     @MemberOrder(sequence = "1.1")
-    // tag::refguide[]
     @Getter
     private final String name;
 
-    // end::refguide[]
     /**
      * The roles associated with this user.
      */
     @MemberOrder(sequence = "1.1")
     private final List<RoleMemento> roles;
-    // tag::refguide[]
     public List<RoleMemento> getRoles() {
         return roles;
     }
-    // end::refguide[]
+
     /**
      * Determine if the specified name is this user.
      *
@@ -193,12 +187,8 @@ public final class UserMemento implements Serializable {
         return getName().hashCode(); // its good enough to hash on just the user's name
     }
     
-    // tag::refguide[]
-
-    // ...
 
 }
-// end::refguide[]
 
 // -- REMOVED
 
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/user/UserService.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/user/UserService.java
index c417424..48a56ce 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/user/UserService.java
+++ b/api/applib/src/main/adoc/modules/applib-svc/examples/services/user/UserService.java
@@ -20,23 +20,38 @@ package org.apache.isis.applib.services.user;
 
 import java.util.Optional;
 
+import javax.annotation.Nullable;
+
 import org.apache.isis.applib.services.iactn.ExecutionContext;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 
-// tag::refguide[]
+/**
+ * The {@link UserService} allows the domain object to obtain the identity of the user 
+ * interacting with said object.
+ * <p>
+ * 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}
+ */
 public interface UserService {
 
     // -- INTERFACE
     
-    // end::refguide[]
     /**
      * Optionally gets the details about the current user, 
      * based on whether an {@link ExecutionContext} can be found with the current thread's context.
      */
-    // tag::refguide[]
-    Optional<UserMemento> getUser();    // <.>
+    Optional<UserMemento> currentUser();
 
-    // end::refguide[]
+    /**
+     * Gets the details about the current user.
+     * @apiNote for backward compatibility
+     */
+    @Nullable
+    default UserMemento getUser() {
+        return currentUser().orElse(null);
+    }
     
     // -- UTILITIES
     
@@ -44,28 +59,23 @@ public interface UserService {
      * Gets the details about the current user.
      * @throws IllegalStateException if no {@link ExecutionContext} can be found with the current thread's context.
      */
-    // tag::refguide[]
-    default UserMemento getUserElseFail() {              // <.>
-        // end::refguide[]
+    default UserMemento currentUserElseFail() {
         return currentUser()
                 .orElseThrow(()->_Exceptions.illegalState("Current thread has no ExecutionContext."));
     }
     
-    // end::refguide[]
     /**
      * Optionally gets the the current user's name, 
      * based on whether an {@link ExecutionContext} can be found with the current thread's context.
      */
-    // tag::refguide[]
-    default Optional<String> getUserName() {    // <.>
+    default Optional<String> currentUserName() {
         return currentUser()
                 .map(UserMemento::getName);
     }
     
-    default String getUserNameElseNobody() {    // <.>
+    default String currentUserNameElseNobody() {
         return currentUserName()
                 .orElse("Nobody");
     }
 
 }
-// end::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/user/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/user/package-info.java
deleted file mode 100644
index 3fd69e1..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/user/package-info.java
+++ /dev/null
@@ -1,37 +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.
- */
-
-/**
- * This package defines types that represent the
- * currently logged-in {@link org.apache.isis.applib.services.user.UserMemento user}
- * and their {@link org.apache.isis.applib.services.user.RoleMemento role}s, as well as
- * {@link org.apache.isis.applib.services.user.UserService} to obtain the current user.
- *
- * <p>
- * Typically domain objects do not need to have any knowledge of <i>who</i>
- * is using them, because authorization is provided declaratively by the
- * framework and is type-based.  However, there are occasions; for example,
- * only an <tt>Employee</tt> and his superiors might be allowed to view their salary.
- *
- * <p>
- * The types are suffixed &quot;Memento&quot; because they snapshot the user
- * and roles at the time that the user logs in, but are not updated after that
- * point.
- */
-package org.apache.isis.applib.services.user;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/userprof/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/userprof/package-info.java
deleted file mode 100644
index ac15bb5..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/userprof/package-info.java
+++ /dev/null
@@ -1,28 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.userprof.UserProfileService} provides the ability for the domain
- * application to return supplementary metadata about the current user. This information is used (by the Wicket viewer)
- * to customize the appearance of the tertiary "Me" menu bar (top right). For example, rather than display the
- * username, instead the user’s first and last name could be displayed.
- *
- *
- */
-package org.apache.isis.applib.services.userprof;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/userreg/UserDetails.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/userreg/UserDetails.java
deleted file mode 100644
index 167a599..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/userreg/UserDetails.java
+++ /dev/null
@@ -1,45 +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.userreg;
-
-import java.io.Serializable;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * A model object for the signup page
- */
-// tag::refguide[]
-public class UserDetails
-                implements Serializable {
-
-    private static final long serialVersionUID = -7308102332765149525L;
-
-    @Getter @Setter
-    private String username;
-    @Getter @Setter
-    private String password;
-    @Getter @Setter
-    private String confirmPassword;
-    @Getter @Setter
-    private String emailAddress;
-
-}
-// end::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/userreg/events/EmailEventAbstract.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/userreg/events/EmailEventAbstract.java
deleted file mode 100644
index ff7cad7..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/userreg/events/EmailEventAbstract.java
+++ /dev/null
@@ -1,50 +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.userreg.events;
-
-/**
- * An event sent to all services interested in user registration
- */
-public abstract class EmailEventAbstract {
-
-    private final String email;
-    private final String confirmationUrl;
-    private final String applicationName;
-
-    public EmailEventAbstract(
-            final String email,
-            final String confirmationUrl,
-            final String applicationName) {
-        this.email = email;
-        this.confirmationUrl = confirmationUrl;
-        this.applicationName = applicationName;
-    }
-
-    public String getEmail() {
-        return email;
-    }
-
-    public String getConfirmationUrl() {
-        return confirmationUrl;
-    }
-
-    public String getApplicationName() {
-        return applicationName;
-    }
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/userreg/events/EmailRegistrationEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/userreg/events/EmailRegistrationEvent.java
deleted file mode 100644
index 2238414..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/userreg/events/EmailRegistrationEvent.java
+++ /dev/null
@@ -1,33 +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.userreg.events;
-
-/**
- * An event send to all services interested in user registration
- */
-public class EmailRegistrationEvent extends EmailEventAbstract {
-
-    public EmailRegistrationEvent(
-            final String email,
-            final String confirmationUrl,
-            final String applicationName) {
-        super(email, confirmationUrl, applicationName);
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/userreg/events/PasswordResetEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/userreg/events/PasswordResetEvent.java
deleted file mode 100644
index f6b1fac..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/userreg/events/PasswordResetEvent.java
+++ /dev/null
@@ -1,33 +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.userreg.events;
-
-/**
- * An event send to all services interested in user password reset
- */
-public class PasswordResetEvent extends EmailEventAbstract {
-
-    public PasswordResetEvent(
-            final String email,
-            final String confirmationUrl,
-            final String applicationName) {
-        super(email, confirmationUrl, applicationName);
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/userreg/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/userreg/package-info.java
deleted file mode 100644
index 4499bb7..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/userreg/package-info.java
+++ /dev/null
@@ -1,27 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.userreg.UserRegistrationService}  provides the ability for users to
- * sign-up to access an application by providing a valid email address, and also provides the capability for users to
- * reset their password if forgotten.
- *
- *
- */
-package org.apache.isis.applib.services.userreg;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/DisabledException.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/DisabledException.java
deleted file mode 100644
index 6f1fcca..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/DisabledException.java
+++ /dev/null
@@ -1,42 +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.wrapper;
-
-import org.apache.isis.applib.services.wrapper.events.InteractionEvent;
-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.
- */
-public class DisabledException extends InteractionException {
-
-    private static final long serialVersionUID = 1L;
-
-    public DisabledException(final InteractionEvent interactionEvent) {
-        super(interactionEvent);
-    }
-
-    @Override
-    public UsabilityEvent getInteractionEvent() {
-        return (UsabilityEvent) super.getInteractionEvent();
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/HiddenException.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/HiddenException.java
deleted file mode 100644
index ecfc5af..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/HiddenException.java
+++ /dev/null
@@ -1,42 +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.wrapper;
-
-import org.apache.isis.applib.services.wrapper.events.InteractionEvent;
-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.
- */
-public class HiddenException extends InteractionException {
-
-    private static final long serialVersionUID = 1L;
-
-    public HiddenException(final InteractionEvent interactionEvent) {
-        super(interactionEvent);
-    }
-
-    @Override
-    public VisibilityEvent getInteractionEvent() {
-        return (VisibilityEvent) super.getInteractionEvent();
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/InteractionException.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/InteractionException.java
deleted file mode 100644
index 23619e9..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/InteractionException.java
+++ /dev/null
@@ -1,75 +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.wrapper;
-
-import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.RecoverableException;
-import org.apache.isis.applib.services.wrapper.events.InteractionEvent;
-
-public abstract class InteractionException extends RecoverableException {
-
-    private static final long serialVersionUID = 1L;
-
-    private final InteractionEvent interactionEvent;
-
-    public InteractionException(final InteractionEvent interactionEvent) {
-        super(interactionEvent.getReason());
-        this.interactionEvent = interactionEvent;
-    }
-
-    /**
-     * The {@link InteractionEvent event} passed into the
-     * {@link #InteractionException(InteractionEvent) constructor}.
-     *
-     * <p>
-     * Not part of the API, but made available so that subclasses can expose as
-     * the appropriate subtype of {@link InteractionEvent}. This would have been
-     * more obvious to see if {@link InteractionException} was generic, but
-     * generic subclasses of {@link Throwable} are (apparently) not allowed.
-     *
-     * @return
-     */
-    protected InteractionEvent getInteractionEvent() {
-        return interactionEvent;
-    }
-
-    /**
-     * Convenience method that returns the
-     * {@link InteractionEvent#getAdvisorClass() advisor class} of the wrapped
-     * {@link #getInteractionEvent() interaction event}.
-     *
-     * @return
-     */
-    public Class<?> getAdvisorClass() {
-        return interactionEvent.getAdvisorClass();
-    }
-
-    /**
-     * Convenience method that returns the
-     * {@link InteractionEvent#getIdentifier() identifier} of the wrapped
-     * {@link #getInteractionEvent() interaction event}.
-     *
-     * @return
-     */
-    public Identifier getIdentifier() {
-        return interactionEvent.getIdentifier();
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/InvalidException.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/InvalidException.java
deleted file mode 100644
index 4ec7ab7..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/InvalidException.java
+++ /dev/null
@@ -1,45 +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.wrapper;
-
-import org.apache.isis.applib.services.wrapper.events.InteractionEvent;
-import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
-
-/**
- * Superclass of exceptions which indicate an attempt to interact with an object
- * or member in a way that is invalid.
- *
- * <p>
- *
- */
-public class InvalidException extends InteractionException {
-
-    private static final long serialVersionUID = 1L;
-
-    public InvalidException(final InteractionEvent interactionEvent) {
-        super(interactionEvent);
-    }
-
-    @Override
-    public ValidityEvent getInteractionEvent() {
-        return (ValidityEvent) super.getInteractionEvent();
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/WrappingObject.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/WrappingObject.java
deleted file mode 100644
index 8a1d3d8..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/WrappingObject.java
+++ /dev/null
@@ -1,80 +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.wrapper;
-
-import org.apache.isis.applib.services.wrapper.control.ExecutionMode;
-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)}.
- */
-// tag::refguide[]
-public interface WrappingObject {
-
-    // end::refguide[]
-    /**
-     * Programmatic equivalent of invoking save for a transient object .
-     *
-     * <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[]
-    void __isis_save();
-
-    // end::refguide[]
-    /**
-     * Provide access to the underlying, wrapped object.
-     *
-     * <p>
-     * Used to unwrap objects used as arguments to actions (otherwise, end up
-     * creating a <tt>ObjectSpecification</tt> for the Javassist-enhanced class, not
-     * the original class).
-     *
-     * <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>
-     *
-     * <p>
-     * <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}.
-     *
-     * <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/adoc/modules/applib-svc/examples/services/wrapper/control/ExceptionHandlerAbstract.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/control/ExceptionHandlerAbstract.java
deleted file mode 100644
index c6ae2bd..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/control/ExceptionHandlerAbstract.java
+++ /dev/null
@@ -1,34 +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.wrapper.control;
-
-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/adoc/modules/applib-svc/examples/services/wrapper/control/ExecutionMode.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/control/ExecutionMode.java
deleted file mode 100644
index 3048f61..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/control/ExecutionMode.java
+++ /dev/null
@@ -1,53 +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.wrapper.control;
-
-import org.apache.isis.applib.services.wrapper.WrapperFactory;
-import org.apache.isis.commons.collections.ImmutableEnumSet;
-
-import lombok.AccessLevel;
-import lombok.RequiredArgsConstructor;
-
-/**
- * Whether interactions with the wrapper are actually passed onto the
- * underlying domain object.
- *
- * @see WrapperFactory#wrap(Object, org.apache.isis.applib.services.wrapper.control.SyncControl)
- */
-@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/adoc/modules/applib-svc/examples/services/wrapper/events/AccessEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/AccessEvent.java
deleted file mode 100644
index 726e1b7..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/AccessEvent.java
+++ /dev/null
@@ -1,44 +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.wrapper.events;
-
-import org.apache.isis.applib.Identifier;
-
-/**
- * <i>Supported only by {@link org.apache.isis.applib.services.wrapper.WrapperFactory} service, </i> represents an access (reading) of a property, collection or title.
- *
- * <p>
- * Analogous to {@link ValidityEvent} (which corresponds to modifying a property
- * or collection etc), however the {@link #getReason()} will always be
- * <tt>null</tt>. (If access is not allowed then a vetoing
- * {@link VisibilityEvent} would have been fired).
- *
- * @see UsabilityEvent
- * @see VisibilityEvent
- * @see ValidityEvent
- *
- */
-public abstract class AccessEvent extends InteractionEvent {
-
-    public AccessEvent(final Object source, final Identifier identifier) {
-        super(source, identifier);
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ActionArgumentEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ActionArgumentEvent.java
deleted file mode 100644
index d452be3..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ActionArgumentEvent.java
+++ /dev/null
@@ -1,72 +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.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
- * or not.
- *
- * <p>
- * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
- * argument is invalid; otherwise the argument is valid.
- *
- * <p>
- * Called once per argument, and before {@link ActionInvocationEvent}.
- *
- */
-public class ActionArgumentEvent extends ValidityEvent {
-
-    private final Object[] args;
-    private final int position;
-    private final Object proposed;
-
-    public ActionArgumentEvent(final Object source, final Identifier actionIdentifier, final Object[] args, final int position) {
-        super(source, actionIdentifier);
-        this.args = args;
-        this.position = position;
-        this.proposed = args[position];
-    }
-
-    public Object[] getArgs() {
-        return args;
-    }
-
-    /**
-     * The position (0-based) of the invalid argument.
-     *
-     * @return
-     */
-    public int getPosition() {
-        return position;
-    }
-
-    @Override
-    public Object getProposed() {
-        return proposed;
-    }
-
-    @Override
-    public String getReasonMessage() {
-        return String.format("Invalid action argument. Position: %s. Proposed value: %s. Reason: %s", this.getPosition(), this.getProposed(), super.getReasonMessage());
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ActionInvocationEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ActionInvocationEvent.java
deleted file mode 100644
index 8053ef5..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ActionInvocationEvent.java
+++ /dev/null
@@ -1,60 +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.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
- * or not.
- *
- * <p>
- * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
- * set of arguments are invalid; otherwise the arguments are valid.
- *
- * <p>
- * Called after each of the {@link ActionArgumentEvent}s.
- */
-public class ActionInvocationEvent extends ValidityEvent {
-
-    public ActionInvocationEvent(final Object source, final Identifier actionIdentifier, final Object[] args) {
-        super(source, actionIdentifier);
-        this.args = args;
-    }
-
-    private Object[] args;
-
-    public Object[] getArgs() {
-        return args;
-    }
-
-    public void setArgs(final Object[] args) {
-        this.args = args;
-    }
-
-    /**
-     * Does not apply
-     */
-    @Override
-    public Object getProposed() {
-        return null;
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ActionUsabilityEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ActionUsabilityEvent.java
deleted file mode 100644
index 79780de..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ActionUsabilityEvent.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.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 usable or has been disabled.
- *
- * <p>
- * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
- * action is disabled; otherwise action is enabled.
- *
- */
-public class ActionUsabilityEvent extends UsabilityEvent {
-
-    public ActionUsabilityEvent(final Object source, final Identifier actionIdentifier) {
-        super(source, actionIdentifier);
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ActionVisibilityEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ActionVisibilityEvent.java
deleted file mode 100644
index 0c0b225..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ActionVisibilityEvent.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.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.
- *
- * <p>
- * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
- * action is invisible; otherwise action is visible.
- *
- */
-public class ActionVisibilityEvent extends VisibilityEvent {
-
-    public ActionVisibilityEvent(final Object source, final Identifier actionIdentifier) {
-        super(source, actionIdentifier);
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/CollectionAccessEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/CollectionAccessEvent.java
deleted file mode 100644
index 65eed05..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/CollectionAccessEvent.java
+++ /dev/null
@@ -1,40 +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.wrapper.events;
-
-import org.apache.isis.applib.Identifier;
-
-/**
- * <i>Supported only by {@link org.apache.isis.applib.services.wrapper.WrapperFactory} service, </i> represents an access (reading) of a collection.
- *
- * <p>
- * Analogous to {@link CollectionAddToEvent} or
- * {@link CollectionRemoveFromEvent}, however the {@link #getReason()} will
- * always be <tt>null</tt>. (If access is not allowed then a vetoing
- * {@link CollectionVisibilityEvent} would have been fired).
- *
- */
-public class CollectionAccessEvent extends AccessEvent {
-
-    public CollectionAccessEvent(final Object source, final Identifier collectionIdentifier) {
-        super(source, collectionIdentifier);
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/CollectionAddToEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/CollectionAddToEvent.java
deleted file mode 100644
index 74a9851..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/CollectionAddToEvent.java
+++ /dev/null
@@ -1,54 +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.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 object to be added to a
- * collection is valid or not.
- *
- * <p>
- * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
- * object is invalid; otherwise the object is valid.
- *
- * @see CollectionRemoveFromEvent
- *
- */
-public class CollectionAddToEvent extends ValidityEvent {
-
-    private final Object proposed;
-
-    public CollectionAddToEvent(final Object source, final Identifier collectionIdentifier, final Object proposed) {
-        super(source, collectionIdentifier);
-        this.proposed = proposed;
-    }
-
-    /**
-     * The object that is being added.
-     *
-     * @return
-     */
-    @Override
-    public Object getProposed() {
-        return proposed;
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/CollectionMethodEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/CollectionMethodEvent.java
deleted file mode 100644
index ac809de..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/CollectionMethodEvent.java
+++ /dev/null
@@ -1,92 +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.wrapper.events;
-
-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.
- *
- */
-public class CollectionMethodEvent extends AccessEvent {
-
-    private final Object domainObject;
-    private final String methodName;
-    private final Object[] args;
-    private final Object returnValue;
-
-    public CollectionMethodEvent(final Object source, final Identifier collectionIdentifier, final Object domainObject, final String methodName, final Object[] args, final Object returnValue) {
-        super(source, collectionIdentifier);
-        this.domainObject = domainObject;
-        this.methodName = methodName;
-        this.args = args;
-        this.returnValue = returnValue;
-    }
-
-    /**
-     * The collection object (an instance of a <tt>List</tt> or a <tt>Set</tt>
-     * etc) that is the originator of this event.
-     *
-     * <p>
-     * The owning domain object is available using {@link #getDomainObject()}.
-     *
-     * @see #getDomainObject()
-     */
-    @Override
-    public Object getSource() {
-        return super.getSource();
-    }
-
-    /**
-     * The owner of the collection (an instance of
-     * <tt>Customer/tt> or <tt>Order</tt>, say).
-     *
-     * @see #getSource()
-     */
-    public Object getDomainObject() {
-        return domainObject;
-    }
-
-    /**
-     * The name of the method invoked on this collection, for example
-     * <tt>isEmpty</tt>.
-     *
-     * @return
-     */
-    public String getMethodName() {
-        return methodName;
-    }
-
-    /**
-     * The arguments with which the collection's {@link #getMethodName() method}
-     * was invoked.
-     */
-    public Object[] getArgs() {
-        return args;
-    }
-
-    /**
-     * The return value from the {@link #getMethodName() method} invocation.
-     */
-    public Object getReturnValue() {
-        return returnValue;
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/CollectionRemoveFromEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/CollectionRemoveFromEvent.java
deleted file mode 100644
index 44bd2d4..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/CollectionRemoveFromEvent.java
+++ /dev/null
@@ -1,49 +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.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 object to be removed from a
- * collection is valid or not.
- *
- * <p>
- * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
- * object is invalid; otherwise the object is valid.
- *
- * @see CollectionAddToEvent
- *
- */
-public class CollectionRemoveFromEvent extends ValidityEvent {
-
-    private final Object proposed;
-
-    public CollectionRemoveFromEvent(final Object source, final Identifier collectionIdentifier, final Object proposed) {
-        super(source, collectionIdentifier);
-        this.proposed = proposed;
-    }
-
-    @Override
-    public Object getProposed() {
-        return proposed;
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/CollectionUsabilityEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/CollectionUsabilityEvent.java
deleted file mode 100644
index 7723551..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/CollectionUsabilityEvent.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.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 collection is usable or has been disabled.
- *
- * <p>
- * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
- * collection is disabled; otherwise collection is enabled.
- *
- */
-public class CollectionUsabilityEvent extends UsabilityEvent {
-
-    public CollectionUsabilityEvent(final Object source, final Identifier identifier) {
-        super(source, identifier);
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/CollectionVisibilityEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/CollectionVisibilityEvent.java
deleted file mode 100644
index ec77bc5..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/CollectionVisibilityEvent.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.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 collection is visible or has been hidden.
- *
- * <p>
- * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
- * collection is invisible; otherwise collection is visible.
- *
- */
-public class CollectionVisibilityEvent extends VisibilityEvent {
-
-    public CollectionVisibilityEvent(final Object source, final Identifier identifier) {
-        super(source, identifier);
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/InteractionEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/InteractionEvent.java
deleted file mode 100644
index ea74096..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/InteractionEvent.java
+++ /dev/null
@@ -1,194 +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.wrapper.events;
-
-import java.util.List;
-
-import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.events.EventObjectBase;
-
-/**
- * <i>Supported only by {@link org.apache.isis.applib.services.wrapper.WrapperFactory} service, </i> 
- * represents an interaction with a domain object or a particular feature
- * (property, collection, action) of a domain object.
- *
- * <p>
- * Many of the interactions are checks for {@link VisibilityEvent visibility},
- * {@link UsabilityEvent usability} and {@link ValidityEvent validity}.
- *
- */
-public abstract class InteractionEvent extends EventObjectBase<Object> {
-
-    private final Identifier identifier;
-    private String reason;
-    private Class<?> advisorClass;
-
-    public InteractionEvent(final Object source, final Identifier identifier) {
-        super(source);
-        this.identifier = identifier;
-    }
-
-    /**
-     * The domain object (pojo) against which the interaction occurred.
-     */
-    @Override
-    public Object getSource() {
-        return super.getSource();
-    }
-
-    /**
-     * The {@link Identifier} of the feature of the object being interacted
-     * with.
-     *
-     * <p>
-     * Will be consistent with the subclass of {@link InteractionEvent}. So for
-     * example a {@link PropertyModifyEvent} will have an {@link Identifier}
-     * that identifies the property being modified.
-     *
-     * @return
-     */
-    public Identifier getIdentifier() {
-        return identifier;
-    }
-
-    /**
-     * As per {@link #getClassName()}, but naturalized.
-     *
-     * @see #getIdentifier
-     */
-    public String getClassName() {
-        return identifier.getClassName();
-    }
-
-    /**
-     * Convenience method that returns the
-     * {@link Identifier#getClassNaturalName() natural class name} of the
-     * {@link #getIdentifier() identifier}.
-     */
-    public String getClassNaturalName() {
-        return identifier.getClassNaturalName();
-    }
-
-    /**
-     * Convenience method that returns the {@link Identifier#getMemberName()
-     * member name} of the {@link #getIdentifier() identifier}.
-     *
-     * @see #getIdentifier
-     */
-    public String getMemberName() {
-        return identifier.getMemberName();
-    }
-
-    /**
-     * As per {@link #getMemberName()}, but naturalized.
-     */
-    public String getMemberNaturalName() {
-        return identifier.getMemberNaturalName();
-    }
-
-    /**
-     * Convenience method that returns the {@link Identifier#getClassName()
-     * class name} of the {@link #getIdentifier() identifier}.
-     */
-    public List<String> getMemberParameterNames() {
-        return identifier.getMemberParameterNames();
-    }
-
-    /**
-     * As per {@link #getMemberParameterName()}, but naturalized.
-     */
-    public List<String> getMemberParameterNaturalNames() {
-        return identifier.getMemberParameterNaturalNames();
-    }
-
-    /**
-     * The reason, if any, that this interaction may have been vetoed or
-     * otherwise disallowed.
-     *
-     * <p>
-     * Intended to be {@link #setExecuteIn(String) set} as a result of consulting
-     * one of the facets.
-     *
-     * @return
-     */
-    public String getReason() {
-        return reason;
-    }
-
-    /**
-     * The reason message, if any, that this interaction may have been vetoed or
-     * otherwise disallowed.
-     *
-     * <p>
-     * This message should be overridden by subclasses for containing the Reason, the Identifier and any other relevant context information.
-     *
-     * @return
-     */
-    public String getReasonMessage() {
-        if (this.getIdentifier() != null) {
-            return String.format("Reason: %s. Identifier: %s", this.getReason(), this.getIdentifier());
-        } else {
-            return String.format("Reason: %s", this.getReason());
-        }
-    }
-
-    /**
-     * The class of the (first) advisor, if any, that provided the
-     * {@link #getReason() reason} that this interaction is {@link #isVeto()
-     * vetoed}.
-     *
-     * @return
-     */
-    public Class<?> getAdvisorClass() {
-        return advisorClass;
-    }
-
-    /**
-     * Specify the {@link #getReason() reason} that this interaction has been
-     * vetoed and the {@link #getAdvisorClass() class of the advisor} that did
-     * the veto.
-     */
-    public void advised(final String reason, final Class<?> advisorClass) {
-        this.reason = reason;
-        this.advisorClass = advisorClass;
-    }
-
-    /**
-     * Whether this interaction has been vetoed (meaning that
-     * {@link #getReason()} and {@link #getAdvisorClass()} will both be non-
-     * <tt>null</tt> and the {@link #getReason() reason} non-empty.)
-     *
-     * <p>
-     * The interpretation of this depends on the subclass:
-     * <ul>
-     * <li>for {@link VisibilityEvent}, a veto means that the feature (property,
-     * collection, action) is hidden</li>
-     * <li>for {@link UsabilityEvent}, a veto means that the feature is disabled
-     * </li>
-     * <li>for {@link ValidityEvent}, a veto means that the proposed
-     * modification (property value, object added/removed, action argument) is
-     * invalid</li>
-     * </ul>
-     */
-    public boolean isVeto() {
-        return getReason() != null && getReason().length() > 0;
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ObjectTitleEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ObjectTitleEvent.java
deleted file mode 100644
index fb27c98..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ObjectTitleEvent.java
+++ /dev/null
@@ -1,45 +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.wrapper.events;
-
-import org.apache.isis.applib.Identifier;
-
-/**
- * <i>Supported only by {@link org.apache.isis.applib.services.wrapper.WrapperFactory} service, </i> represents an access (reading) of an object's title.
- *
- * <p>
- * The {@link #getReason()} will always be <tt>null</tt>; access is always
- * allowed.
- *
- */
-public class ObjectTitleEvent extends AccessEvent {
-
-    private final String title;
-
-    public ObjectTitleEvent(final Object source, final Identifier classIdentifier, final String title) {
-        super(source, classIdentifier);
-        this.title = title;
-    }
-
-    public String getTitle() {
-        return title;
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ObjectValidityEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ObjectValidityEvent.java
deleted file mode 100644
index 240030e..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ObjectValidityEvent.java
+++ /dev/null
@@ -1,45 +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.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 the current values of the
- * properties/collections of an object are valid (for example, prior to saving
- * that object).
- *
- * <p>
- * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
- * object is invalid, otherwise ok.
- *
- */
-public class ObjectValidityEvent extends ValidityEvent {
-
-    public ObjectValidityEvent(final Object source, final Identifier classIdentifier) {
-        super(source, classIdentifier);
-    }
-
-    @Override
-    public Object getProposed() {
-        return getSource();
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ObjectVisibilityEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ObjectVisibilityEvent.java
deleted file mode 100644
index aa36628..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ObjectVisibilityEvent.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.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 object is visible or has been hidden.
- *
- * <p>
- * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
- * object is invisible; otherwise action is visible.
- *
- */
-public class ObjectVisibilityEvent extends VisibilityEvent {
-
-    public ObjectVisibilityEvent(final Object source, final Identifier classIdentifier) {
-        super(source, classIdentifier);
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ParseValueEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ParseValueEvent.java
deleted file mode 100644
index 71b575e..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ParseValueEvent.java
+++ /dev/null
@@ -1,61 +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.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 the proposed values of the value type is
- * valid.
- *
- * <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.
- *
- */
-public class ParseValueEvent extends ValidityEvent {
-
-    private static Object coalesce(final Object source, final String proposed) {
-        return source != null ? source : proposed;
-    }
-
-    private final String proposed;
-
-    public ParseValueEvent(final Object source, final Identifier classIdentifier, final String proposed) {
-        super(coalesce(source, proposed), classIdentifier);
-        this.proposed = proposed;
-    }
-
-    /**
-     * Will be the source provided in the
-     * {@link #ParseValueEvent(Object, Identifier, String) constructor} if not
-     * null, otherwise will fallback to the proposed value.
-     */
-    @Override
-    public Object getSource() {
-        return super.getSource();
-    }
-
-    @Override
-    public String getProposed() {
-        return proposed;
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/PropertyAccessEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/PropertyAccessEvent.java
deleted file mode 100644
index 252e348..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/PropertyAccessEvent.java
+++ /dev/null
@@ -1,46 +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.wrapper.events;
-
-import org.apache.isis.applib.Identifier;
-
-/**
- * <i>Supported only by {@link org.apache.isis.applib.services.wrapper.WrapperFactory} service, </i> represents an access (reading) of a property.
- *
- * <p>
- * Analogous to {@link PropertyModifyEvent}, however the {@link #getReason()}
- * will always be <tt>null</tt>. (If access is not allowed then a
- * {@link PropertyVisibilityEvent} would have been fired).
- *
- */
-public class PropertyAccessEvent extends AccessEvent {
-
-    public PropertyAccessEvent(final Object source, final Identifier propertyIdentifier, final Object value) {
-        super(source, propertyIdentifier);
-        this.value = value;
-    }
-
-    private final Object value;
-
-    public Object getValue() {
-        return value;
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/PropertyModifyEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/PropertyModifyEvent.java
deleted file mode 100644
index 8f75f91..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/PropertyModifyEvent.java
+++ /dev/null
@@ -1,52 +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.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 value for a property is valid
- * or not.
- *
- * <p>
- * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
- * value is invalid; otherwise the value is valid.
- *
- */
-public class PropertyModifyEvent extends ValidityEvent {
-
-    private final Object proposed;
-
-    public PropertyModifyEvent(final Object source, final Identifier propertyIdentifier, final Object proposed) {
-        super(source, propertyIdentifier);
-        this.proposed = proposed;
-    }
-
-    /**
-     * If <tt>null</tt>, then the property was cleared.
-     *
-     * @return
-     */
-    @Override
-    public Object getProposed() {
-        return proposed;
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/PropertyUsabilityEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/PropertyUsabilityEvent.java
deleted file mode 100644
index 03e6e31..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/PropertyUsabilityEvent.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.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 property is usable or has been disabled.
- *
- * <p>
- * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
- * property is disabled; otherwise property is enabled.
- *
- */
-public class PropertyUsabilityEvent extends UsabilityEvent {
-
-    public PropertyUsabilityEvent(final Object source, final Identifier propertyIdentifier) {
-        super(source, propertyIdentifier);
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/PropertyVisibilityEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/PropertyVisibilityEvent.java
deleted file mode 100644
index 4792330..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/PropertyVisibilityEvent.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.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 property is visible or has been hidden.
- *
- * <p>
- * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
- * property is invisible; otherwise property is visible.
- *
- */
-public class PropertyVisibilityEvent extends VisibilityEvent {
-
-    public PropertyVisibilityEvent(final Object source, final Identifier propertyIdentifier) {
-        super(source, propertyIdentifier);
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ProposedHolderEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ProposedHolderEvent.java
deleted file mode 100644
index 2c9a386..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ProposedHolderEvent.java
+++ /dev/null
@@ -1,34 +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.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}).
- *
- */
-public interface ProposedHolderEvent {
-
-    Object getProposed();
-
-    String getMemberNaturalName();
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/UsabilityEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/UsabilityEvent.java
deleted file mode 100644
index 8314dce..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/UsabilityEvent.java
+++ /dev/null
@@ -1,43 +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.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 usable or
- * has been disabled.
- *
- * <p>
- * If {@link #getReason()} is <tt>null</tt>, then is usable; otherwise is
- * disabled.
- *
- * @see AccessEvent
- * @see VisibilityEvent
- * @see ValidityEvent
- *
- */
-public abstract class UsabilityEvent extends InteractionEvent {
-
-    public UsabilityEvent(final Object source, final Identifier identifier) {
-        super(source, identifier);
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ValidityEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ValidityEvent.java
deleted file mode 100644
index 28fecbb..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/ValidityEvent.java
+++ /dev/null
@@ -1,61 +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.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 proposed change is valid.
- *
- * <p>
- * Multiple subclasses, including:
- * <ul>
- * <li>modifying a property</li>
- * <li>adding to/removing from a collection</li>
- * <li>checking a single argument for an action invocation</li>
- * <li>checking all arguments for an action invocation</li>
- * <li>checking all properties for an object before saving</li>
- * </ul>
- *
- * <p>
- * If {@link #getReason()} is <tt>null</tt>, then is usable; otherwise is
- * disabled.
- *
- * @see AccessEvent
- * @see VisibilityEvent
- * @see UsabilityEvent
- *
- */
-public abstract class ValidityEvent extends InteractionEvent implements ProposedHolderEvent {
-
-    public ValidityEvent(final Object source, final Identifier identifier) {
-        super(source, identifier);
-    }
-
-    @Override
-    public Object getSource() {
-        return super.getSource();
-    }
-
-    @Override
-    public String getReasonMessage() {
-        return String.format("Source: %s. %s", this.getSource(), super.getReasonMessage());
-    }
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/VisibilityEvent.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/VisibilityEvent.java
deleted file mode 100644
index f839360..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/VisibilityEvent.java
+++ /dev/null
@@ -1,43 +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.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
- * has been hidden.
- *
- * <p>
- * If {@link #getReason()} is <tt>null</tt>, then is usable; otherwise is
- * invisible.
- *
- * @see AccessEvent
- * @see UsabilityEvent
- * @see ValidityEvent
- *
- */
-public abstract class VisibilityEvent extends InteractionEvent {
-
-    public VisibilityEvent(final Object source, final Identifier identifier) {
-        super(source, identifier);
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/package-info.java
deleted file mode 100644
index f3f45ab..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/events/package-info.java
+++ /dev/null
@@ -1,26 +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.
- */
-
-/**
- * Interaction events, corresponding to gestures in the user interface; emitted only by the
- * {@link org.apache.isis.applib.services.wrapper.WrapperFactory}.
- *
- *
- */
-package org.apache.isis.applib.services.wrapper.events;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/listeners/InteractionAdapter.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/listeners/InteractionAdapter.java
deleted file mode 100644
index 8cd899f..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/listeners/InteractionAdapter.java
+++ /dev/null
@@ -1,109 +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.wrapper.listeners;
-
-import org.apache.isis.applib.services.wrapper.events.ActionArgumentEvent;
-import org.apache.isis.applib.services.wrapper.events.ActionInvocationEvent;
-import org.apache.isis.applib.services.wrapper.events.ActionUsabilityEvent;
-import org.apache.isis.applib.services.wrapper.events.ActionVisibilityEvent;
-import org.apache.isis.applib.services.wrapper.events.CollectionAccessEvent;
-import org.apache.isis.applib.services.wrapper.events.CollectionAddToEvent;
-import org.apache.isis.applib.services.wrapper.events.CollectionMethodEvent;
-import org.apache.isis.applib.services.wrapper.events.CollectionRemoveFromEvent;
-import org.apache.isis.applib.services.wrapper.events.CollectionUsabilityEvent;
-import org.apache.isis.applib.services.wrapper.events.CollectionVisibilityEvent;
-import org.apache.isis.applib.services.wrapper.events.ObjectTitleEvent;
-import org.apache.isis.applib.services.wrapper.events.ObjectValidityEvent;
-import org.apache.isis.applib.services.wrapper.events.PropertyAccessEvent;
-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;
-
-/**
- * Provides no-op implementations of each of the methods within
- * {@link InteractionListener}, to simplify the creation of new listeners.
- */
-public class InteractionAdapter implements InteractionListener {
-
-    @Override
-    public void propertyVisible(final PropertyVisibilityEvent ev) {
-    }
-
-    @Override
-    public void propertyUsable(final PropertyUsabilityEvent ev) {
-    }
-
-    @Override
-    public void propertyAccessed(final PropertyAccessEvent ev) {
-    }
-
-    @Override
-    public void propertyModified(final PropertyModifyEvent ev) {
-    }
-
-    @Override
-    public void collectionVisible(final CollectionVisibilityEvent ev) {
-    }
-
-    @Override
-    public void collectionUsable(final CollectionUsabilityEvent ev) {
-    }
-
-    @Override
-    public void collectionAccessed(final CollectionAccessEvent ev) {
-    }
-
-    @Override
-    public void collectionAddedTo(final CollectionAddToEvent ev) {
-    }
-
-    @Override
-    public void collectionRemovedFrom(final CollectionRemoveFromEvent ev) {
-    }
-
-    @Override
-    public void collectionMethodInvoked(final CollectionMethodEvent interactionEvent) {
-    }
-
-    @Override
-    public void actionVisible(final ActionVisibilityEvent interactionEvent) {
-    }
-
-    @Override
-    public void actionUsable(final ActionUsabilityEvent ev) {
-    }
-
-    @Override
-    public void actionArgument(final ActionArgumentEvent ev) {
-    }
-
-    @Override
-    public void actionInvoked(final ActionInvocationEvent ev) {
-    }
-
-    @Override
-    public void objectPersisted(final ObjectValidityEvent ev) {
-    }
-
-    @Override
-    public void objectTitleRead(final ObjectTitleEvent ev) {
-    }
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/listeners/InteractionListener.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/listeners/InteractionListener.java
deleted file mode 100644
index a9e1188..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/listeners/InteractionListener.java
+++ /dev/null
@@ -1,194 +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.wrapper.listeners;
-
-import org.apache.isis.applib.services.wrapper.events.ActionArgumentEvent;
-import org.apache.isis.applib.services.wrapper.events.ActionInvocationEvent;
-import org.apache.isis.applib.services.wrapper.events.ActionUsabilityEvent;
-import org.apache.isis.applib.services.wrapper.events.ActionVisibilityEvent;
-import org.apache.isis.applib.services.wrapper.events.CollectionAccessEvent;
-import org.apache.isis.applib.services.wrapper.events.CollectionAddToEvent;
-import org.apache.isis.applib.services.wrapper.events.CollectionMethodEvent;
-import org.apache.isis.applib.services.wrapper.events.CollectionRemoveFromEvent;
-import org.apache.isis.applib.services.wrapper.events.CollectionUsabilityEvent;
-import org.apache.isis.applib.services.wrapper.events.CollectionVisibilityEvent;
-import org.apache.isis.applib.services.wrapper.events.ObjectTitleEvent;
-import org.apache.isis.applib.services.wrapper.events.ObjectValidityEvent;
-import org.apache.isis.applib.services.wrapper.events.PropertyAccessEvent;
-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;
-
-public interface InteractionListener {
-
-    /**
-     * The title was read.
-     *
-     * @param ev
-     */
-    void objectTitleRead(ObjectTitleEvent ev);
-
-    /**
-     * The object was persisted (or an attempt to persist it was made).
-     *
-     * @param ev
-     */
-    void objectPersisted(ObjectValidityEvent ev);
-
-    /**
-     * A check was made to determine if a property was visible.
-     *
-     * @param ev
-     */
-    void propertyVisible(PropertyVisibilityEvent ev);
-
-    /**
-     * A check was made to determine if a property was usable.
-     *
-     * @param ev
-     */
-    void propertyUsable(PropertyUsabilityEvent ev);
-
-    /**
-     * A property was read.
-     *
-     * <p>
-     * Unlike most other events, a {@link PropertyAccessEvent} will never have
-     * been vetoed (that is, {@link PropertyAccessEvent#isVeto()} will always be
-     * <tt>false</tt>).
-     *
-     * @param ev
-     */
-    void propertyAccessed(PropertyAccessEvent ev);
-
-    /**
-     * A property was modified (or an attempt to modify it was made)
-     *
-     * <p>
-     * Use {@link PropertyModifyEvent#getProposed()} to determine whether the
-     * property was being set or cleared.
-     *
-     * @param ev
-     */
-    void propertyModified(PropertyModifyEvent ev);
-
-    /**
-     * A check was made to determine if a collection was visible.
-     *
-     * <p>
-     * Will be fired prior to
-     * {@link #collectionUsable(CollectionUsabilityEvent)}.
-     *
-     * @param ev
-     */
-    void collectionVisible(CollectionVisibilityEvent ev);
-
-    /**
-     * A check was made to determine if a collection was usable.
-     *
-     * <p>
-     * Will be fired prior to either
-     * {@link #collectionAccessed(CollectionAccessEvent)} or
-     * {@link #collectionAddedTo(CollectionAddToEvent)} or
-     * {@link #collectionRemovedFrom(CollectionRemoveFromEvent)}.
-     *
-     * @param ev
-     */
-    void collectionUsable(CollectionUsabilityEvent ev);
-
-    /**
-     * A collection was read.
-     *
-     * <p>
-     * Unlike most other events, a {@link CollectionAccessEvent} will never have
-     * been vetoed (that is, {@link CollectionAccessEvent#isVeto()} will always
-     * be <tt>false</tt>).
-     *
-     * @param ev
-     */
-    void collectionAccessed(CollectionAccessEvent ev);
-
-    /**
-     * An object was added to the collection (or an attempt to add it was made).
-     *
-     * @param ev
-     */
-    void collectionAddedTo(CollectionAddToEvent ev);
-
-    /**
-     * An object was removed from the collection (or an attempt to remove it was
-     * made).
-     *
-     * @param ev
-     */
-    void collectionRemovedFrom(CollectionRemoveFromEvent ev);
-
-    /**
-     * A method of a collection (such as <tt>isEmpty()</tt> or <tt>size()</tt>) has been invoked.
-     *
-     *
-     * <p>
-     * Unlike the other methods in this interface, the source of these events will be an instance of a
-     * Collection (such as <tt>java.util.List</tt>) rather than the domain object. (The domain object is
-     * {@link CollectionMethodEvent#getDomainObject() still available,  however).
-     *
-     * @param interactionEvent
-     */
-    void collectionMethodInvoked(CollectionMethodEvent interactionEvent);
-
-    /**
-     * A check was made to determine if an action was visible.
-     *
-     * <p>
-     * Will be fired prior to {@link #actionUsable(ActionUsabilityEvent)}.
-     *
-     * @param ev
-     */
-    void actionVisible(ActionVisibilityEvent interactionEvent);
-
-    /**
-     * A check was made to determine if an action was usable.
-     *
-     * <p>
-     * Will be fired prior to {@link #actionArgument(ActionArgumentEvent)}.
-     *
-     * @param ev
-     */
-    void actionUsable(ActionUsabilityEvent ev);
-
-    /**
-     * A check was made as to whether an argument proposed for an action was
-     * valid.
-     *
-     * <p>
-     * Will be fired prior to {@link #actionInvoked(ActionInvocationEvent)}.
-     *
-     * @param ev
-     */
-    void actionArgument(ActionArgumentEvent ev);
-
-    /**
-     * An action was invoked (or an attempt to invoke it was made).
-     *
-     * @param ev
-     */
-    void actionInvoked(ActionInvocationEvent ev);
-
-}
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/package-info.java
deleted file mode 100644
index 14f02ea..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/wrapper/package-info.java
+++ /dev/null
@@ -1,28 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.wrapper.WrapperFactory} provides the ability to enforce business rules
- * for programmatic interactions between domain objects. If there is a (lack-of-) trust boundary between the caller
- * and callee — eg if they reside in different modules — then the wrapper factory is a useful mechanism to ensure that
- * any business constraints defined by the callee are honoured.
- *
- *
- */
-package org.apache.isis.applib.services.wrapper;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/xactn/Transaction.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/xactn/Transaction.java
deleted file mode 100644
index 7ba0a5f..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/xactn/Transaction.java
+++ /dev/null
@@ -1,51 +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.xactn;
-
-import org.apache.isis.applib.annotation.Programmatic;
-
-/**
- * Representation of the current transaction, which conceptually wraps the underlying transaction context's transaction.
- */
-// tag::refguide[]
-public interface Transaction {
-
-    TransactionId getId();
-
-    // end::refguide[]
-    /**
-     * Flush all changes to the object store.
-     *
-     * <p>
-     * Occasionally useful to ensure that newly persisted domain objects
-     * are flushed to the database prior to a subsequent repository query.
-     * </p>
-     *
-     * <p>
-     *     Equivalent to {@link TransactionService#flushTransaction()}.
-     * </p>
-     */
-    // tag::refguide[]
-    void flush();
-
-    TransactionState getTransactionState();
-
-}
-// end::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/xactn/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/xactn/package-info.java
deleted file mode 100644
index 266659f..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/xactn/package-info.java
+++ /dev/null
@@ -1,26 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.xactn.TransactionService} provides a small number of methods to allow
- * domain objects to influence user transactions.
- *
- *
- */
-package org.apache.isis.applib.services.xactn;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/xml/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/xml/package-info.java
deleted file mode 100644
index 3bc3341..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/xml/package-info.java
+++ /dev/null
@@ -1,24 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.xml.XmlService} provides utilities for working with
- * {@link org.w3c.dom.Document w3c DOM Document}s.
- */
-package org.apache.isis.applib.services.xml;
\ No newline at end of file
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/xmlsnapshot/XmlSnapshotService.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/xmlsnapshot/XmlSnapshotService.java
index a1d1388..7a872ca 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/xmlsnapshot/XmlSnapshotService.java
+++ b/api/applib/src/main/adoc/modules/applib-svc/examples/services/xmlsnapshot/XmlSnapshotService.java
@@ -29,21 +29,53 @@ import org.w3c.dom.Element;
  * The framework provides an implementation of this service (<tt>XmlSnapshotServiceDefault</tt>) which is automatically
  * registered and available for use; no further configuration is required.
  * </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[]
+        /**
+         *  Creates a corresponding XSD that describes the structure of the exported XML.
+         */
+        // tag::refguide-1[]
         Document getXsdDocument();          // <.>
         // end::refguide-1[]
+        /**
+         * @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[]
+            /**
+             * Ditto, but add an XML annotation attribute to the included element(s).
+             */
+            // tag::refguide-2[]
             void includePathAndAnnotation(                          // <.>
                 final String path, final String annotation);
+            // end::refguide-2[]
+            /**
+             * Builds the Snapshot.
+             */
+            // tag::refguide-2[]
             XmlSnapshotService.Snapshot build();                    // <.>
         }
         // end::refguide-2[]
@@ -51,10 +83,16 @@ public interface XmlSnapshotService {
     }
     // 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(                    // <.>
                                     final Object domainObject);
 
+    /**
+     *  Creates a Snapshot.Builder that allows the contents of the snapshot to include other related state. 
+     */
     XmlSnapshotService.Snapshot.Builder builderFor(             // <.>
                                     final Object domainObject);
 
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/xmlsnapshot/XmlSnapshotServiceAbstract.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/xmlsnapshot/XmlSnapshotServiceAbstract.java
deleted file mode 100644
index 05d3b61..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/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/api/applib/src/main/adoc/modules/applib-svc/examples/services/xmlsnapshot/package-info.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/xmlsnapshot/package-info.java
deleted file mode 100644
index 8a5ef39..0000000
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/xmlsnapshot/package-info.java
+++ /dev/null
@@ -1,26 +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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotService} provides the capability to generate
- * XML snapshots (and if required corresponding XSD schemas) based on graphs of domain objects.
- *
- *
- */
-package org.apache.isis.applib.services.xmlsnapshot;
\ No newline at end of file
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 230a71d..2283eb1 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
@@ -21,6 +21,7 @@ package org.apache.isis.tooling.cli.test.doclet;
 import java.io.File;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
+import java.util.function.Consumer;
 
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
@@ -28,6 +29,7 @@ import org.junit.jupiter.api.Test;
 import org.apache.isis.commons.collections.Can;
 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.AdocletContext;
 import org.apache.isis.tooling.javamodel.AnalyzerConfigFactory;
@@ -41,7 +43,7 @@ import static guru.nidi.codeassert.config.Language.JAVA;
 
 class AdocletTest {
 
-    @Test //@Disabled
+    @Test @Disabled
     void testJavaDocMining() {
         
         val analyzerConfig = AnalyzerConfigFactory
@@ -69,22 +71,25 @@ class AdocletTest {
         });
     }
     
-    @Test @Disabled
+    @Test //@Disabled
     void testAdocDocMining() throws IOException {
         
         val adocFiles = 
                 _Files.searchFiles(
-                        ProjectSampler.apacheIsisApplib(), 
+                        ProjectSampler.apacheIsisRoot(), 
                         _Predicates.alwaysTrue(), 
                         file->file.getName().endsWith(".adoc"));
      
+        val names = _Sets.<String>newTreeSet();
+        
         Can.ofCollection(adocFiles)
         .stream()
-        .forEach(this::parseAdoc);
+        .forEach(file->parseAdoc(file, names::add));
         
+        names.forEach(System.out::println);
     }
     
-    private void parseAdoc(final @NonNull File file) {
+    private void parseAdoc(final @NonNull File file, Consumer<String> onShortName) {
         val lines = _Text.readLinesFromFile(file, StandardCharsets.UTF_8);
         
         lines.stream()
@@ -92,9 +97,15 @@ class AdocletTest {
         .forEach(line->{
             //System.out.println("--- " + file);
             
-            System.out.println(line.substring(line.lastIndexOf("/")+1));
+            val shortRef = line.substring(line.indexOf("/")+1);
+            val shortName = shortRef.substring(0, shortRef.lastIndexOf(".java"));
+            
+            onShortName.accept(shortName+".java");
         });
+     
+        
         
     }
+
     
 }
diff --git a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/CompilationUnits.java b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/CompilationUnits.java
index 43ac6a5..017cfe0 100644
--- a/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/CompilationUnits.java
+++ b/tooling/javamodel/src/main/java/org/apache/isis/tooling/javamodel/CompilationUnits.java
@@ -58,24 +58,10 @@ public final class CompilationUnits {
             return Stream.empty();
         }
         
+        //TODO not processing enums yet
         return type.findAll(ClassOrInterfaceDeclaration.class)
                 .stream();
-        
-//        return compilationUnit.getTypes().stream()
-//        .peek(t->System.out.println(String.format("%s %s %s", t.getClass(), t.getNameAsString(), t.findAll(ClassOrInterfaceDeclaration.class))))
-//        .filter(t->t.isClassOrInterfaceDeclaration())
-//        .map(ClassOrInterfaceDeclaration.class::cast);
-        
-        
-//        if(type.isEnumDeclaration()) {
-//            // as of yet silently ignore
-//            return Stream.empty();
-//        }
-//        if(type.isClassOrInterfaceDeclaration()) {
-//            return Stream.of((ClassOrInterfaceDeclaration)type);   
-//        }
-//        // as of yet silently ignore
-//        return Stream.empty();        
+
     }