You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2020/07/04 16:30:29 UTC

[isis] 01/04: ISIS-2222: WIP adding the other value types supported.

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

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

commit 98a595e36a647fc3b463c67168ffcc7def822207
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sat Jul 4 13:19:42 2020 +0100

    ISIS-2222: WIP adding the other value types supported.
    
    renamed, still need sample data for some of the new types.
---
 examples/demo/domain/pom.xml                       |  10 +-
 .../src/main/java/demoapp/dom/menubars.layout.xml  |  57 ++++++++---
 .../domain/src/main/java/demoapp/dom/package.jdo   |   2 +-
 .../java/demoapp/dom/types/isis/IsisTypesMenu.java |  75 ++++++++++++++
 .../types/isis/asciidocs/IsisAsciiDocsStream.java  |  37 -------
 .../asciidocs/WrapperCharacters-description.adoc   |  75 --------------
 .../types/isis/asciidocs/WrapperCharacters.java    |  76 --------------
 .../isis/asciidocs/WrapperCharacters.layout.xml    |  46 ---------
 .../asciidocs/holder/WrapperCharacterHolder.java   |  37 -------
 .../asciidocs/holder/WrapperCharacterHolder2.java  |  76 --------------
 .../WrapperCharacterHolder_actionReturning.java    |  39 -------
 ...rCharacterHolder_actionReturningCollection.java |  48 ---------
 .../WrapperCharacterHolder_mixinProperty.java      |  45 --------
 ...acterHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...pperCharacterHolder_updateReadOnlyProperty.java |  50 ---------
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  58 -----------
 .../jdo/WrapperCharacterJdo-description.adoc       |  15 ---
 .../isis/asciidocs/jdo/WrapperCharacterJdo.java    |  83 ---------------
 .../asciidocs/jdo/WrapperCharacterJdo.layout.xml   |  46 ---------
 .../asciidocs/jdo/WrapperCharacterJdoEntities.java |  26 -----
 .../jdo/WrapperCharacterJdoSeedService.java        |  42 --------
 .../vm/WrapperCharacterVm-description.adoc         |  13 ---
 .../isis/asciidocs/vm/WrapperCharacterVm.java      |  85 ---------------
 .../asciidocs/vm/WrapperCharacterVm.layout.xml     |  46 ---------
 .../types/isis/blobs/IsisBlobs-description.adoc    |  75 ++++++++++++++
 .../demoapp/dom/types/isis/blobs/IsisBlobs.java    |  81 +++++++++++++++
 .../blobs/IsisBlobs.layout.xml}                    |   0
 .../dom/types/isis/blobs/IsisBlobsSamples.java     |  37 +++++++
 .../dom/types/isis/blobs/IsisBlobsStream.java      |  37 -------
 .../isis/blobs/WrapperCharacters-description.adoc  |  75 --------------
 .../dom/types/isis/blobs/WrapperCharacters.java    |  76 --------------
 .../types/isis/blobs/WrapperCharacters.layout.xml  |  46 ---------
 .../types/isis/blobs/holder/IsisBlobHolder.java    |  39 +++++++
 .../types/isis/blobs/holder/IsisBlobHolder2.java   |  77 ++++++++++++++
 .../holder/IsisBlobHolder_actionReturning.java     |  40 ++++++++
 .../IsisBlobHolder_actionReturningCollection.java  |  53 ++++++++++
 .../blobs/holder/IsisBlobHolder_mixinProperty.java |  46 +++++++++
 ...sBlobHolder_updateReadOnlyOptionalProperty.java |  56 ++++++++++
 .../IsisBlobHolder_updateReadOnlyProperty.java     |  51 +++++++++
 ...obHolder_updateReadOnlyPropertyWithChoices.java |  65 ++++++++++++
 .../isis/blobs/holder/WrapperCharacterHolder.java  |  37 -------
 .../isis/blobs/holder/WrapperCharacterHolder2.java |  76 --------------
 .../WrapperCharacterHolder_actionReturning.java    |  39 -------
 ...rCharacterHolder_actionReturningCollection.java |  48 ---------
 .../WrapperCharacterHolder_mixinProperty.java      |  45 --------
 ...acterHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...pperCharacterHolder_updateReadOnlyProperty.java |  50 ---------
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  58 -----------
 .../isis/blobs/jdo/IsisBlobJdo-description.adoc    |  15 +++
 .../dom/types/isis/blobs/jdo/IsisBlobJdo.java      |  84 +++++++++++++++
 .../blobs/jdo/IsisBlobJdo.layout.xml}              |   0
 .../types/isis/blobs/jdo/IsisBlobJdoEntities.java  |  27 +++++
 .../isis/blobs/jdo/IsisBlobJdoSeedService.java     |  47 +++++++++
 .../blobs/jdo/WrapperCharacterJdo-description.adoc |  15 ---
 .../types/isis/blobs/jdo/WrapperCharacterJdo.java  |  83 ---------------
 .../isis/blobs/jdo/WrapperCharacterJdo.layout.xml  |  46 ---------
 .../blobs/jdo/WrapperCharacterJdoEntities.java     |  26 -----
 .../blobs/jdo/WrapperCharacterJdoSeedService.java  |  42 --------
 .../isis/blobs/vm/IsisBlobVm-description.adoc      |  13 +++
 .../dom/types/isis/blobs/vm/IsisBlobVm.java        |  86 ++++++++++++++++
 .../blobs/vm/IsisBlobVm.layout.xml}                |   0
 .../blobs/vm/WrapperCharacterVm-description.adoc   |  13 ---
 .../types/isis/blobs/vm/WrapperCharacterVm.java    |  85 ---------------
 .../isis/blobs/vm/WrapperCharacterVm.layout.xml    |  46 ---------
 .../types/isis/clobs/IsisClobs-description.adoc    |  75 ++++++++++++++
 .../demoapp/dom/types/isis/clobs/IsisClobs.java    |  81 +++++++++++++++
 .../clobs/IsisClobs.layout.xml}                    |   0
 .../dom/types/isis/clobs/IsisClobsSamples.java     |  37 +++++++
 .../dom/types/isis/clobs/IsisClobsStream.java      |  37 -------
 .../isis/clobs/WrapperCharacters-description.adoc  |  75 --------------
 .../dom/types/isis/clobs/WrapperCharacters.java    |  76 --------------
 .../types/isis/clobs/WrapperCharacters.layout.xml  |  46 ---------
 .../types/isis/clobs/holder/IsisClobHolder.java    |  39 +++++++
 .../types/isis/clobs/holder/IsisClobHolder2.java   |  77 ++++++++++++++
 .../holder/IsisClobHolder_actionReturning.java     |  40 ++++++++
 .../IsisClobHolder_actionReturningCollection.java  |  53 ++++++++++
 .../clobs/holder/IsisClobHolder_mixinProperty.java |  46 +++++++++
 ...sClobHolder_updateReadOnlyOptionalProperty.java |  56 ++++++++++
 .../IsisClobHolder_updateReadOnlyProperty.java     |  51 +++++++++
 ...obHolder_updateReadOnlyPropertyWithChoices.java |  65 ++++++++++++
 .../isis/clobs/holder/WrapperCharacterHolder.java  |  37 -------
 .../isis/clobs/holder/WrapperCharacterHolder2.java |  76 --------------
 .../WrapperCharacterHolder_actionReturning.java    |  39 -------
 ...rCharacterHolder_actionReturningCollection.java |  48 ---------
 .../WrapperCharacterHolder_mixinProperty.java      |  45 --------
 ...acterHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...pperCharacterHolder_updateReadOnlyProperty.java |  50 ---------
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  58 -----------
 .../isis/clobs/jdo/IsisClobJdo-description.adoc    |  15 +++
 .../dom/types/isis/clobs/jdo/IsisClobJdo.java      |  84 +++++++++++++++
 .../clobs/jdo/IsisClobJdo.layout.xml}              |   0
 .../types/isis/clobs/jdo/IsisClobJdoEntities.java  |  27 +++++
 .../isis/clobs/jdo/IsisClobJdoSeedService.java     |  47 +++++++++
 .../clobs/jdo/WrapperCharacterJdo-description.adoc |  15 ---
 .../types/isis/clobs/jdo/WrapperCharacterJdo.java  |  83 ---------------
 .../isis/clobs/jdo/WrapperCharacterJdo.layout.xml  |  46 ---------
 .../clobs/jdo/WrapperCharacterJdoEntities.java     |  26 -----
 .../clobs/jdo/WrapperCharacterJdoSeedService.java  |  42 --------
 .../isis/clobs/vm/IsisClobVm-description.adoc      |  13 +++
 .../dom/types/isis/clobs/vm/IsisClobVm.java        |  86 ++++++++++++++++
 .../clobs/vm/IsisClobVm.layout.xml}                |   0
 .../clobs/vm/WrapperCharacterVm-description.adoc   |  13 ---
 .../types/isis/clobs/vm/WrapperCharacterVm.java    |  85 ---------------
 .../isis/clobs/vm/WrapperCharacterVm.layout.xml    |  46 ---------
 .../types/isis/images/IsisImages-description.adoc  |  75 ++++++++++++++
 .../demoapp/dom/types/isis/images/IsisImages.java  |  81 +++++++++++++++
 .../images/IsisImages.layout.xml}                  |   0
 .../dom/types/isis/images/IsisImagesSamples.java   |  37 +++++++
 .../dom/types/isis/images/IsisImagesStream.java    |  37 -------
 .../isis/images/WrapperCharacters-description.adoc |  75 --------------
 .../dom/types/isis/images/WrapperCharacters.java   |  76 --------------
 .../types/isis/images/WrapperCharacters.layout.xml |  46 ---------
 .../types/isis/images/holder/IsisImageHolder.java  |  39 +++++++
 .../types/isis/images/holder/IsisImageHolder2.java |  77 ++++++++++++++
 .../holder/IsisImageHolder_actionReturning.java    |  40 ++++++++
 .../IsisImageHolder_actionReturningCollection.java |  53 ++++++++++
 .../holder/IsisImageHolder_mixinProperty.java      |  46 +++++++++
 ...ImageHolder_updateReadOnlyOptionalProperty.java |  56 ++++++++++
 .../IsisImageHolder_updateReadOnlyProperty.java    |  51 +++++++++
 ...geHolder_updateReadOnlyPropertyWithChoices.java |  65 ++++++++++++
 .../isis/images/holder/WrapperCharacterHolder.java |  37 -------
 .../images/holder/WrapperCharacterHolder2.java     |  76 --------------
 .../WrapperCharacterHolder_actionReturning.java    |  39 -------
 ...rCharacterHolder_actionReturningCollection.java |  48 ---------
 .../WrapperCharacterHolder_mixinProperty.java      |  45 --------
 ...acterHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...pperCharacterHolder_updateReadOnlyProperty.java |  50 ---------
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  58 -----------
 .../isis/images/jdo/IsisImageJdo-description.adoc  |  15 +++
 .../dom/types/isis/images/jdo/IsisImageJdo.java    |  84 +++++++++++++++
 .../images/jdo/IsisImageJdo.layout.xml}            |   0
 .../isis/images/jdo/IsisImageJdoEntities.java      |  27 +++++
 .../isis/images/jdo/IsisImageJdoSeedService.java   |  47 +++++++++
 .../jdo/WrapperCharacterJdo-description.adoc       |  15 ---
 .../types/isis/images/jdo/WrapperCharacterJdo.java |  83 ---------------
 .../isis/images/jdo/WrapperCharacterJdo.layout.xml |  46 ---------
 .../images/jdo/WrapperCharacterJdoEntities.java    |  26 -----
 .../images/jdo/WrapperCharacterJdoSeedService.java |  42 --------
 .../isis/images/vm/IsisImageVm-description.adoc    |  13 +++
 .../dom/types/isis/images/vm/IsisImageVm.java      |  86 ++++++++++++++++
 .../images/vm/IsisImageVm.layout.xml}              |   0
 .../images/vm/WrapperCharacterVm-description.adoc  |  13 ---
 .../types/isis/images/vm/WrapperCharacterVm.java   |  85 ---------------
 .../isis/images/vm/WrapperCharacterVm.layout.xml   |  46 ---------
 .../IsisLocalResourcePaths-description.adoc        |  75 ++++++++++++++
 .../localresourcepaths/IsisLocalResourcePaths.java |  81 +++++++++++++++
 .../IsisLocalResourcePaths.layout.xml}             |   0
 .../IsisLocalResourcePathsSamples.java             |  37 +++++++
 .../IsisLocalResourcePathsStream.java              |  37 -------
 .../WrapperCharacters-description.adoc             |  75 --------------
 .../isis/localresourcepaths/WrapperCharacters.java |  76 --------------
 .../WrapperCharacters.layout.xml                   |  46 ---------
 .../holder/IsisLocalResourcePathHolder.java        |  39 +++++++
 .../holder/IsisLocalResourcePathHolder2.java       |  77 ++++++++++++++
 ...sisLocalResourcePathHolder_actionReturning.java |  40 ++++++++
 ...sourcePathHolder_actionReturningCollection.java |  53 ++++++++++
 .../IsisLocalResourcePathHolder_mixinProperty.java |  46 +++++++++
 ...ePathHolder_updateReadOnlyOptionalProperty.java |  56 ++++++++++
 ...lResourcePathHolder_updateReadOnlyProperty.java |  51 +++++++++
 ...thHolder_updateReadOnlyPropertyWithChoices.java |  65 ++++++++++++
 .../holder/WrapperCharacterHolder.java             |  37 -------
 .../holder/WrapperCharacterHolder2.java            |  76 --------------
 .../WrapperCharacterHolder_actionReturning.java    |  39 -------
 ...rCharacterHolder_actionReturningCollection.java |  48 ---------
 .../WrapperCharacterHolder_mixinProperty.java      |  45 --------
 ...acterHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...pperCharacterHolder_updateReadOnlyProperty.java |  50 ---------
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  58 -----------
 .../jdo/IsisLocalResourcePathJdo-description.adoc  |  15 +++
 .../jdo/IsisLocalResourcePathJdo.java              |  84 +++++++++++++++
 .../jdo/IsisLocalResourcePathJdo.layout.xml}       |   0
 .../jdo/IsisLocalResourcePathJdoEntities.java      |  27 +++++
 .../jdo/IsisLocalResourcePathJdoSeedService.java   |  47 +++++++++
 .../jdo/WrapperCharacterJdo-description.adoc       |  15 ---
 .../jdo/WrapperCharacterJdo.java                   |  83 ---------------
 .../jdo/WrapperCharacterJdo.layout.xml             |  46 ---------
 .../jdo/WrapperCharacterJdoEntities.java           |  26 -----
 .../jdo/WrapperCharacterJdoSeedService.java        |  42 --------
 .../vm/IsisLocalResourcePathVm-description.adoc    |  13 +++
 .../vm/IsisLocalResourcePathVm.java                |  86 ++++++++++++++++
 .../vm/IsisLocalResourcePathVm.layout.xml}         |   0
 .../vm/WrapperCharacterVm-description.adoc         |  13 ---
 .../localresourcepaths/vm/WrapperCharacterVm.java  |  85 ---------------
 .../vm/WrapperCharacterVm.layout.xml               |  46 ---------
 .../dom/types/isis/markups/IsisMarkUpsStream.java  |  37 -------
 .../markups/WrapperCharacters-description.adoc     |  75 --------------
 .../dom/types/isis/markups/WrapperCharacters.java  |  76 --------------
 .../isis/markups/WrapperCharacters.layout.xml      |  46 ---------
 .../markups/holder/WrapperCharacterHolder.java     |  37 -------
 .../markups/holder/WrapperCharacterHolder2.java    |  76 --------------
 .../WrapperCharacterHolder_actionReturning.java    |  39 -------
 ...rCharacterHolder_actionReturningCollection.java |  48 ---------
 .../WrapperCharacterHolder_mixinProperty.java      |  45 --------
 ...acterHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...pperCharacterHolder_updateReadOnlyProperty.java |  50 ---------
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  58 -----------
 .../jdo/WrapperCharacterJdo-description.adoc       |  15 ---
 .../isis/markups/jdo/WrapperCharacterJdo.java      |  83 ---------------
 .../markups/jdo/WrapperCharacterJdo.layout.xml     |  46 ---------
 .../markups/jdo/WrapperCharacterJdoEntities.java   |  26 -----
 .../jdo/WrapperCharacterJdoSeedService.java        |  42 --------
 .../markups/vm/WrapperCharacterVm-description.adoc |  13 ---
 .../types/isis/markups/vm/WrapperCharacterVm.java  |  85 ---------------
 .../isis/markups/vm/WrapperCharacterVm.layout.xml  |  46 ---------
 .../isis/passwords/IsisPasswords-description.adoc  |  75 ++++++++++++++
 .../dom/types/isis/passwords/IsisPasswords.java    |  81 +++++++++++++++
 .../passwords/IsisPasswords.layout.xml}            |   0
 .../types/isis/passwords/IsisPasswordsSamples.java |  37 +++++++
 .../types/isis/passwords/IsisPasswordsStream.java  |  36 -------
 .../passwords/WrapperCharacters-description.adoc   |  75 --------------
 .../types/isis/passwords/WrapperCharacters.java    |  76 --------------
 .../isis/passwords/WrapperCharacters.layout.xml    |  46 ---------
 .../isis/passwords/holder/IsisPasswordHolder.java  |  39 +++++++
 .../isis/passwords/holder/IsisPasswordHolder2.java |  77 ++++++++++++++
 .../holder/IsisPasswordHolder_actionReturning.java |  40 ++++++++
 ...isPasswordHolder_actionReturningCollection.java |  53 ++++++++++
 .../holder/IsisPasswordHolder_mixinProperty.java   |  46 +++++++++
 ...swordHolder_updateReadOnlyOptionalProperty.java |  56 ++++++++++
 .../IsisPasswordHolder_updateReadOnlyProperty.java |  51 +++++++++
 ...rdHolder_updateReadOnlyPropertyWithChoices.java |  65 ++++++++++++
 .../passwords/holder/WrapperCharacterHolder.java   |  37 -------
 .../passwords/holder/WrapperCharacterHolder2.java  |  76 --------------
 .../WrapperCharacterHolder_actionReturning.java    |  39 -------
 ...rCharacterHolder_actionReturningCollection.java |  48 ---------
 .../WrapperCharacterHolder_mixinProperty.java      |  45 --------
 ...acterHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...pperCharacterHolder_updateReadOnlyProperty.java |  50 ---------
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  58 -----------
 .../passwords/jdo/IsisPasswordJdo-description.adoc |  15 +++
 .../types/isis/passwords/jdo/IsisPasswordJdo.java  |  84 +++++++++++++++
 .../passwords/jdo/IsisPasswordJdo.layout.xml}      |   0
 .../passwords/jdo/IsisPasswordJdoEntities.java     |  27 +++++
 .../passwords/jdo/IsisPasswordJdoSeedService.java  |  47 +++++++++
 .../jdo/WrapperCharacterJdo-description.adoc       |  15 ---
 .../isis/passwords/jdo/WrapperCharacterJdo.java    |  83 ---------------
 .../passwords/jdo/WrapperCharacterJdo.layout.xml   |  46 ---------
 .../passwords/jdo/WrapperCharacterJdoEntities.java |  26 -----
 .../jdo/WrapperCharacterJdoSeedService.java        |  42 --------
 .../passwords/vm/IsisPasswordVm-description.adoc   |  13 +++
 .../types/isis/passwords/vm/IsisPasswordVm.java    |  86 ++++++++++++++++
 .../passwords/vm/IsisPasswordVm.layout.xml}        |   0
 .../vm/WrapperCharacterVm-description.adoc         |  13 ---
 .../isis/passwords/vm/WrapperCharacterVm.java      |  85 ---------------
 .../passwords/vm/WrapperCharacterVm.layout.xml     |  46 ---------
 .../types/isis/treenodes/IsisTreeNodesStream.java  |  37 -------
 .../treenodes/WrapperCharacters-description.adoc   |  75 --------------
 .../types/isis/treenodes/WrapperCharacters.java    |  76 --------------
 .../treenodes/holder/WrapperCharacterHolder.java   |  37 -------
 .../treenodes/holder/WrapperCharacterHolder2.java  |  76 --------------
 .../WrapperCharacterHolder_actionReturning.java    |  39 -------
 ...rCharacterHolder_actionReturningCollection.java |  48 ---------
 .../WrapperCharacterHolder_mixinProperty.java      |  45 --------
 ...acterHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...pperCharacterHolder_updateReadOnlyProperty.java |  50 ---------
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  58 -----------
 .../jdo/WrapperCharacterJdo-description.adoc       |  15 ---
 .../isis/treenodes/jdo/WrapperCharacterJdo.java    |  83 ---------------
 .../treenodes/jdo/WrapperCharacterJdoEntities.java |  26 -----
 .../jdo/WrapperCharacterJdoSeedService.java        |  42 --------
 .../vm/WrapperCharacterVm-description.adoc         |  13 ---
 .../isis/treenodes/vm/WrapperCharacterVm.java      |  85 ---------------
 .../dom/types/isisext/IsisExtTypesMenu.java        |  53 ++++++++++
 .../asciidocs/IsisAsciiDoc-description.adoc        |  75 ++++++++++++++
 .../dom/types/isisext/asciidocs/IsisAsciiDocs.java |  81 +++++++++++++++
 .../isisext/asciidocs/IsisAsciiDocsSamples.java    |  37 +++++++
 .../asciidocs/holder/IsisAsciiDocHolder.java       |  39 +++++++
 .../asciidocs/holder/IsisAsciiDocHolder2.java      |  76 ++++++++++++++
 .../holder/IsisAsciiDocHolder_actionReturning.java |  40 ++++++++
 ...isAsciiDocHolder_actionReturningCollection.java |  51 +++++++++
 .../holder/IsisAsciiDocHolder_mixinProperty.java   |  44 ++++++++
 ...iiDocHolder_updateReadOnlyOptionalProperty.java |  56 ++++++++++
 .../IsisAsciiDocHolder_updateReadOnlyProperty.java |  51 +++++++++
 ...ocHolder_updateReadOnlyPropertyWithChoices.java |  61 +++++++++++
 .../asciidocs/jdo/IsisAsciiDocJdo-description.adoc |  15 +++
 .../isisext/asciidocs/jdo/IsisAsciiDocJdo.java     |  82 +++++++++++++++
 .../asciidocs/jdo/IsisAsciiDocJdoEntities.java     |  27 +++++
 .../asciidocs/jdo/IsisAsciiDocJdoSeedService.java  |  45 ++++++++
 .../asciidocs/vm/IsisAsciiDocVm-description.adoc   |  13 +++
 .../types/isisext/asciidocs/vm/IsisAsciiDocVm.java |  84 +++++++++++++++
 .../dom/types/isisext/markdowns/IsisAsciiDocs.java |  81 +++++++++++++++
 .../isisext/markdowns/IsisAsciiDocsSamples.java    |  37 +++++++
 .../markdowns/IsisMarkdown-description.adoc        |  75 ++++++++++++++
 .../markdowns/IsisMarkdown.layout.xml}             |   0
 .../markdowns/holder/IsisMarkdownHolder.java       |  39 +++++++
 .../markdowns/holder/IsisMarkdownHolder2.java      |  76 ++++++++++++++
 .../holder/IsisMarkdownHolder_actionReturning.java |  40 ++++++++
 ...isMarkdownHolder_actionReturningCollection.java |  51 +++++++++
 .../holder/IsisMarkdownHolder_mixinProperty.java   |  44 ++++++++
 ...kdownHolder_updateReadOnlyOptionalProperty.java |  56 ++++++++++
 .../IsisMarkdownHolder_updateReadOnlyProperty.java |  51 +++++++++
 ...wnHolder_updateReadOnlyPropertyWithChoices.java |  61 +++++++++++
 .../markdowns/jdo/IsisMarkdownJdo-description.adoc |  15 +++
 .../isisext/markdowns/jdo/IsisMarkdownJdo.java     |  82 +++++++++++++++
 .../markdowns/jdo/IsisMarkdownJdo.layout.xml}      |   0
 .../markdowns/jdo/IsisMarkdownJdoEntities.java     |  27 +++++
 .../markdowns/jdo/IsisMarkdownJdoSeedService.java  |  45 ++++++++
 .../markdowns/vm/IsisMarkdownVm-description.adoc   |  13 +++
 .../types/isisext/markdowns/vm/IsisMarkdownVm.java |  84 +++++++++++++++
 .../markdowns/vm/IsisMarkdownVm.layout.xml}        |   0
 .../dom/types/javalang/JavaLangTypesMenu.java      |  53 ++++++++++
 .../types/javalang/JavaLangWrapperTypesMenu.java   |  92 +++++++++++++++++
 .../booleans/WrapperBooleans-description.adoc      |   0
 .../types/javalang/booleans/WrapperBooleans.java   | 114 +++++++++++++++++++++
 .../booleans/WrapperBooleans.layout.xml            |   0
 .../javalang/booleans/WrapperBooleansSamples.java  |  35 +++++++
 .../booleans/holder/WrapperBooleanHolder.java      |  37 +++++++
 .../booleans/holder/WrapperBooleanHolder2.java     |  75 ++++++++++++++
 .../WrapperBooleanHolder_actionReturning.java      |  39 +++++++
 ...perBooleanHolder_actionReturningCollection.java |  51 +++++++++
 .../holder/WrapperBooleanHolder_mixinProperty.java |  43 ++++++++
 ...oleanHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 ...rapperBooleanHolder_updateReadOnlyProperty.java |  50 +++++++++
 ...anHolder_updateReadOnlyPropertyWithChoices.java |  63 ++++++++++++
 .../jdo/WrapperBooleanJdo-description.adoc         |   0
 .../javalang/booleans/jdo/WrapperBooleanJdo.java   |  81 +++++++++++++++
 .../booleans/jdo/WrapperBooleanJdo.layout.xml      |   0
 .../booleans/jdo/WrapperBooleanJdoEntities.java    |  26 +++++
 .../booleans/jdo/WrapperBooleanJdoSeedService.java |  44 ++++++++
 .../booleans/vm/WrapperBooleanVm-description.adoc  |   0
 .../javalang/booleans/vm/WrapperBooleanVm.java     |  83 +++++++++++++++
 .../booleans/vm/WrapperBooleanVm.layout.xml        |   0
 .../bytes/WrapperBytes-description.adoc            |   0
 .../dom/types/javalang/bytes/WrapperBytes.java     |  76 ++++++++++++++
 .../bytes/WrapperBytes.layout.xml                  |   0
 .../types/javalang/bytes/WrapperBytesSamples.java  |  36 +++++++
 .../javalang/bytes/holder/WrapperByteHolder.java   |  37 +++++++
 .../javalang/bytes/holder/WrapperByteHolder2.java  |  75 ++++++++++++++
 .../holder/WrapperByteHolder_actionReturning.java  |  39 +++++++
 ...rapperByteHolder_actionReturningCollection.java |  53 ++++++++++
 .../holder/WrapperByteHolder_mixinProperty.java    |  43 ++++++++
 ...rByteHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 .../WrapperByteHolder_updateReadOnlyProperty.java  |  50 +++++++++
 ...teHolder_updateReadOnlyPropertyWithChoices.java |  63 ++++++++++++
 .../bytes/jdo/WrapperByteJdo-description.adoc      |   0
 .../types/javalang/bytes/jdo/WrapperByteJdo.java   |  81 +++++++++++++++
 .../bytes/jdo/WrapperByteJdo.layout.xml            |   0
 .../javalang/bytes/jdo/WrapperByteJdoEntities.java |  26 +++++
 .../bytes/jdo/WrapperByteJdoSeedService.java       |  44 ++++++++
 .../bytes/vm/WrapperByteVm-description.adoc        |   0
 .../dom/types/javalang/bytes/vm/WrapperByteVm.java |  83 +++++++++++++++
 .../bytes/vm/WrapperByteVm.layout.xml              |   0
 .../characters/WrapperCharacters-description.adoc  |   0
 .../javalang/characters/WrapperCharacters.java     |  76 ++++++++++++++
 .../characters/WrapperCharactersSamples.java       |  35 +++++++
 .../characters/holder/WrapperCharacterHolder.java  |  37 +++++++
 .../characters/holder/WrapperCharacterHolder2.java |  75 ++++++++++++++
 .../WrapperCharacterHolder_actionReturning.java    |  39 +++++++
 ...rCharacterHolder_actionReturningCollection.java |  49 +++++++++
 .../WrapperCharacterHolder_mixinProperty.java      |  43 ++++++++
 ...acterHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 ...pperCharacterHolder_updateReadOnlyProperty.java |  50 +++++++++
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  64 ++++++++++++
 .../jdo/WrapperCharacterJdo-description.adoc       |   0
 .../characters/jdo/WrapperCharacterJdo.java        |  81 +++++++++++++++
 .../jdo/WrapperCharacterJdoEntities.java           |  26 +++++
 .../jdo/WrapperCharacterJdoSeedService.java        |  44 ++++++++
 .../vm/WrapperCharacterVm-description.adoc         |   0
 .../javalang/characters/vm/WrapperCharacterVm.java |  83 +++++++++++++++
 .../doubles/WrapperDoubles-description.adoc        |   0
 .../dom/types/javalang/doubles/WrapperDoubles.java |  76 ++++++++++++++
 .../doubles/WrapperDoubles.layout.xml              |   0
 .../javalang/doubles/WrapperDoublesSamples.java    |  35 +++++++
 .../doubles/holder/WrapperDoubleHolder.java        |  37 +++++++
 .../doubles/holder/WrapperDoubleHolder2.java       |  75 ++++++++++++++
 .../WrapperDoubleHolder_actionReturning.java       |  39 +++++++
 ...pperDoubleHolder_actionReturningCollection.java |  53 ++++++++++
 .../holder/WrapperDoubleHolder_mixinProperty.java  |  43 ++++++++
 ...oubleHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 ...WrapperDoubleHolder_updateReadOnlyProperty.java |  50 +++++++++
 ...leHolder_updateReadOnlyPropertyWithChoices.java |  63 ++++++++++++
 .../doubles/jdo/WrapperDoubleJdo-description.adoc  |   0
 .../javalang/doubles/jdo/WrapperDoubleJdo.java     |  81 +++++++++++++++
 .../doubles/jdo/WrapperDoubleJdo.layout.xml        |   0
 .../doubles/jdo/WrapperDoubleJdoEntities.java      |  26 +++++
 .../doubles/jdo/WrapperDoubleJdoSeedService.java   |  44 ++++++++
 .../doubles/vm/WrapperDoubleVm-description.adoc    |   0
 .../types/javalang/doubles/vm/WrapperDoubleVm.java |  83 +++++++++++++++
 .../doubles/vm/WrapperDoubleVm.layout.xml          |   0
 .../floats/WrapperFloats-description.adoc          |   0
 .../dom/types/javalang/floats/WrapperFloats.java   |  76 ++++++++++++++
 .../floats/WrapperFloats.layout.xml                |   0
 .../javalang/floats/WrapperFloatsSamples.java      |  35 +++++++
 .../javalang/floats/holder/WrapperFloatHolder.java |  37 +++++++
 .../floats/holder/WrapperFloatHolder2.java         |  75 ++++++++++++++
 .../holder/WrapperFloatHolder_actionReturning.java |  39 +++++++
 ...apperFloatHolder_actionReturningCollection.java |  49 +++++++++
 .../holder/WrapperFloatHolder_mixinProperty.java   |  43 ++++++++
 ...FloatHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 .../WrapperFloatHolder_updateReadOnlyProperty.java |  50 +++++++++
 ...atHolder_updateReadOnlyPropertyWithChoices.java |  63 ++++++++++++
 .../floats/jdo/WrapperFloatJdo-description.adoc    |   0
 .../types/javalang/floats/jdo/WrapperFloatJdo.java |  81 +++++++++++++++
 .../floats/jdo/WrapperFloatJdo.layout.xml          |   0
 .../floats/jdo/WrapperFloatJdoEntities.java        |  26 +++++
 .../floats/jdo/WrapperFloatJdoSeedService.java     |  44 ++++++++
 .../floats/vm/WrapperFloatVm-description.adoc      |   0
 .../types/javalang/floats/vm/WrapperFloatVm.java   |  83 +++++++++++++++
 .../floats/vm/WrapperFloatVm.layout.xml            |   0
 .../integers/WrapperIntegers-description.adoc      |   0
 .../types/javalang/integers/WrapperIntegers.java   |  76 ++++++++++++++
 .../integers/WrapperIntegers.layout.xml            |   0
 .../javalang/integers/WrapperIntegersSamples.java  |  35 +++++++
 .../integers/holder/WrapperIntegerHolder.java      |  37 +++++++
 .../integers/holder/WrapperIntegerHolder2.java     |  75 ++++++++++++++
 .../WrapperIntegerHolder_actionReturning.java      |  39 +++++++
 ...perIntegerHolder_actionReturningCollection.java |  49 +++++++++
 .../holder/WrapperIntegerHolder_mixinProperty.java |  43 ++++++++
 ...tegerHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 ...rapperIntegerHolder_updateReadOnlyProperty.java |  50 +++++++++
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  63 ++++++++++++
 .../jdo/WrapperIntegerJdo-description.adoc         |   0
 .../javalang/integers/jdo/WrapperIntegerJdo.java   |  81 +++++++++++++++
 .../integers/jdo/WrapperIntegerJdo.layout.xml      |   0
 .../integers/jdo/WrapperIntegerJdoEntities.java    |  26 +++++
 .../integers/jdo/WrapperIntegerJdoSeedService.java |  44 ++++++++
 .../integers/vm/WrapperIntegerVm-description.adoc  |   0
 .../javalang/integers/vm/WrapperIntegerVm.java     |  83 +++++++++++++++
 .../integers/vm/WrapperIntegerVm.layout.xml        |   0
 .../longs/WrapperLongs-description.adoc            |   0
 .../dom/types/javalang/longs/WrapperLongs.java     |  76 ++++++++++++++
 .../longs/WrapperLongs.layout.xml                  |   0
 .../types/javalang/longs/WrapperLongsSamples.java  |  35 +++++++
 .../javalang/longs/holder/WrapperLongHolder.java   |  37 +++++++
 .../javalang/longs/holder/WrapperLongHolder2.java  |  75 ++++++++++++++
 .../holder/WrapperLongHolder_actionReturning.java  |  39 +++++++
 ...rapperLongHolder_actionReturningCollection.java |  49 +++++++++
 .../holder/WrapperLongHolder_mixinProperty.java    |  43 ++++++++
 ...rLongHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 .../WrapperLongHolder_updateReadOnlyProperty.java  |  50 +++++++++
 ...ngHolder_updateReadOnlyPropertyWithChoices.java |  63 ++++++++++++
 .../longs/jdo/WrapperLongJdo-description.adoc      |   0
 .../types/javalang/longs/jdo/WrapperLongJdo.java   |  81 +++++++++++++++
 .../longs/jdo/WrapperLongJdo.layout.xml            |   0
 .../javalang/longs/jdo/WrapperLongJdoEntities.java |  26 +++++
 .../longs/jdo/WrapperLongJdoSeedService.java       |  44 ++++++++
 .../longs/vm/WrapperLongVm-description.adoc        |   0
 .../dom/types/javalang/longs/vm/WrapperLongVm.java |  83 +++++++++++++++
 .../longs/vm/WrapperLongVm.layout.xml              |   0
 .../shorts/WrapperShorts-description.adoc          |   0
 .../dom/types/javalang/shorts/WrapperShorts.java   |  76 ++++++++++++++
 .../shorts/WrapperShorts.layout.xml                |   0
 .../javalang/shorts/WrapperShortsSamples.java      |  36 +++++++
 .../javalang/shorts/holder/WrapperShortHolder.java |  37 +++++++
 .../shorts/holder/WrapperShortHolder2.java         |  75 ++++++++++++++
 .../holder/WrapperShortHolder_actionReturning.java |  39 +++++++
 ...apperShortHolder_actionReturningCollection.java |  49 +++++++++
 .../holder/WrapperShortHolder_mixinProperty.java   |  43 ++++++++
 ...ShortHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 .../WrapperShortHolder_updateReadOnlyProperty.java |  50 +++++++++
 ...rtHolder_updateReadOnlyPropertyWithChoices.java |  63 ++++++++++++
 .../shorts/jdo/WrapperShortJdo-description.adoc    |   0
 .../types/javalang/shorts/jdo/WrapperShortJdo.java |  81 +++++++++++++++
 .../shorts/jdo/WrapperShortJdo.layout.xml          |   0
 .../shorts/jdo/WrapperShortJdoEntities.java        |  26 +++++
 .../shorts/jdo/WrapperShortJdoSeedService.java     |  44 ++++++++
 .../shorts/vm/WrapperShortVm-description.adoc      |   0
 .../types/javalang/shorts/vm/WrapperShortVm.java   |  83 +++++++++++++++
 .../shorts/vm/WrapperShortVm.layout.xml            |   0
 .../strings/JavaLangStrings-description.adoc       |  75 ++++++++++++++
 .../types/javalang/strings/JavaLangStrings.java    |  80 +++++++++++++++
 .../javalang/strings/JavaLangStringsSamples.java   |  35 +++++++
 .../dom/types/javalang/strings/StringsStream.java  |  35 -------
 .../strings/WrapperCharacters-description.adoc     |  75 --------------
 .../types/javalang/strings/WrapperCharacters.java  |  76 --------------
 .../javalang/strings/WrapperCharacters.layout.xml  |  46 ---------
 .../strings/holder/JavaLangStringHolder.java       |  37 +++++++
 .../strings/holder/JavaLangStringHolder2.java      |  76 ++++++++++++++
 .../JavaLangStringHolder_actionReturning.java      |  39 +++++++
 ...LangStringHolder_actionReturningCollection.java |  52 ++++++++++
 .../holder/JavaLangStringHolder_mixinProperty.java |  45 ++++++++
 ...tringHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 ...avaLangStringHolder_updateReadOnlyProperty.java |  50 +++++++++
 ...ngHolder_updateReadOnlyPropertyWithChoices.java |  65 ++++++++++++
 .../strings/holder/WrapperCharacterHolder.java     |  37 -------
 .../strings/holder/WrapperCharacterHolder2.java    |  76 --------------
 .../WrapperCharacterHolder_actionReturning.java    |  39 -------
 ...rCharacterHolder_actionReturningCollection.java |  48 ---------
 .../WrapperCharacterHolder_mixinProperty.java      |  45 --------
 ...acterHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...pperCharacterHolder_updateReadOnlyProperty.java |  50 ---------
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  58 -----------
 .../strings/jdo/JavaLangStringJdo-description.adoc |  15 +++
 .../javalang/strings/jdo/JavaLangStringJdo.java    |  83 +++++++++++++++
 .../strings/jdo/JavaLangStringJdoEntities.java     |  26 +++++
 .../strings/jdo/JavaLangStringJdoSeedService.java  |  46 +++++++++
 .../jdo/WrapperCharacterJdo-description.adoc       |  15 ---
 .../javalang/strings/jdo/WrapperCharacterJdo.java  |  83 ---------------
 .../strings/jdo/WrapperCharacterJdo.layout.xml     |  46 ---------
 .../strings/jdo/WrapperCharacterJdoEntities.java   |  26 -----
 .../jdo/WrapperCharacterJdoSeedService.java        |  42 --------
 .../strings/vm/JavaLangStringVm-description.adoc   |  13 +++
 .../javalang/strings/vm/JavaLangStringVm.java      |  85 +++++++++++++++
 .../strings/vm/WrapperCharacterVm-description.adoc |  13 ---
 .../javalang/strings/vm/WrapperCharacterVm.java    |  85 ---------------
 .../strings/vm/WrapperCharacterVm.layout.xml       |  46 ---------
 ...ription.adoc => JavaLangVoids-description.adoc} |   0
 .../dom/types/javalang/voids/JavaLangVoids.java    |  67 ++++++++++++
 .../types/javalang/voids/JavaLangVoidsStream.java  |  35 -------
 .../types/javalang/voids/WrapperCharacters.java    |  76 --------------
 .../voids/holder/WrapperCharacterHolder.java       |  37 -------
 .../voids/holder/WrapperCharacterHolder2.java      |  76 --------------
 .../WrapperCharacterHolder_actionReturning.java    |  39 -------
 ...rCharacterHolder_actionReturningCollection.java |  48 ---------
 .../WrapperCharacterHolder_mixinProperty.java      |  45 --------
 ...acterHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...pperCharacterHolder_updateReadOnlyProperty.java |  50 ---------
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  58 -----------
 .../voids/jdo/WrapperCharacterJdo-description.adoc |  15 ---
 .../javalang/voids/jdo/WrapperCharacterJdo.java    |  83 ---------------
 .../voids/jdo/WrapperCharacterJdoEntities.java     |  26 -----
 .../voids/jdo/WrapperCharacterJdoSeedService.java  |  42 --------
 .../voids/vm/WrapperCharacterVm-description.adoc   |  13 ---
 .../javalang/voids/vm/WrapperCharacterVm.java      |  85 ---------------
 .../dom/types/javamath/JavaMathTypesMenu.java      |  52 ++++++++++
 .../JavaMathBigDecimals-description.adoc           |  75 ++++++++++++++
 .../javamath/bigdecimals/JavaMathBigDecimals.java  |  81 +++++++++++++++
 .../bigdecimals/JavaMathBigDecimalsSamples.java    |  36 +++++++
 .../bigdecimals/JavaMathBigDecimalsStream.java     |  36 -------
 .../bigdecimals/WrapperCharacters-description.adoc |  75 --------------
 .../javamath/bigdecimals/WrapperCharacters.java    |  76 --------------
 .../holder/JavaMathBigDecimalHolder.java           |  37 +++++++
 .../holder/JavaMathBigDecimalHolder2.java          |  76 ++++++++++++++
 .../JavaMathBigDecimalHolder_actionReturning.java  |  39 +++++++
 ...BigDecimalHolder_actionReturningCollection.java |  53 ++++++++++
 .../JavaMathBigDecimalHolder_mixinProperty.java    |  45 ++++++++
 ...cimalHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 ...athBigDecimalHolder_updateReadOnlyProperty.java |  50 +++++++++
 ...alHolder_updateReadOnlyPropertyWithChoices.java |  65 ++++++++++++
 .../bigdecimals/holder/WrapperCharacterHolder.java |  37 -------
 .../holder/WrapperCharacterHolder2.java            |  76 --------------
 .../WrapperCharacterHolder_actionReturning.java    |  39 -------
 ...rCharacterHolder_actionReturningCollection.java |  48 ---------
 .../WrapperCharacterHolder_mixinProperty.java      |  45 --------
 ...acterHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...pperCharacterHolder_updateReadOnlyProperty.java |  50 ---------
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  58 -----------
 .../jdo/JavaMathBigDecimalJdo-description.adoc     |  15 +++
 .../bigdecimals/jdo/JavaMathBigDecimalJdo.java     |  83 +++++++++++++++
 .../jdo/JavaMathBigDecimalJdoEntities.java         |  26 +++++
 .../jdo/JavaMathBigDecimalJdoSeedService.java      |  47 +++++++++
 .../jdo/WrapperCharacterJdo-description.adoc       |  15 ---
 .../bigdecimals/jdo/WrapperCharacterJdo.java       |  83 ---------------
 .../jdo/WrapperCharacterJdoEntities.java           |  26 -----
 .../jdo/WrapperCharacterJdoSeedService.java        |  42 --------
 .../vm/JavaMathBigDecimalVm-description.adoc       |  13 +++
 .../bigdecimals/vm/JavaMathBigDecimalVm.java       |  85 +++++++++++++++
 .../vm/WrapperCharacterVm-description.adoc         |  13 ---
 .../bigdecimals/vm/WrapperCharacterVm.java         |  85 ---------------
 .../JavaMathBigIntegers-description.adoc           |  75 ++++++++++++++
 .../javamath/bigintegers/JavaMathBigIntegers.java  |  81 +++++++++++++++
 .../bigintegers/JavaMathBigIntegersSamples.java    |  36 +++++++
 .../bigintegers/JavaMathBigIntegersStream.java     |  36 -------
 .../bigintegers/WrapperCharacters-description.adoc |  75 --------------
 .../javamath/bigintegers/WrapperCharacters.java    |  76 --------------
 .../holder/JavaMathBigIntegerHolder.java           |  37 +++++++
 .../holder/JavaMathBigIntegerHolder2.java          |  76 ++++++++++++++
 .../JavaMathBigIntegerHolder_actionReturning.java  |  39 +++++++
 ...BigIntegerHolder_actionReturningCollection.java |  53 ++++++++++
 .../JavaMathBigIntegerHolder_mixinProperty.java    |  45 ++++++++
 ...tegerHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 ...athBigIntegerHolder_updateReadOnlyProperty.java |  50 +++++++++
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  66 ++++++++++++
 .../bigintegers/holder/WrapperCharacterHolder.java |  37 -------
 .../holder/WrapperCharacterHolder2.java            |  76 --------------
 .../WrapperCharacterHolder_actionReturning.java    |  39 -------
 ...rCharacterHolder_actionReturningCollection.java |  48 ---------
 .../WrapperCharacterHolder_mixinProperty.java      |  45 --------
 ...acterHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...pperCharacterHolder_updateReadOnlyProperty.java |  50 ---------
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  58 -----------
 .../jdo/JavaMathBigIntegerJdo-description.adoc     |  15 +++
 .../bigintegers/jdo/JavaMathBigIntegerJdo.java     |  83 +++++++++++++++
 .../jdo/JavaMathBigIntegerJdoEntities.java         |  26 +++++
 .../jdo/JavaMathBigIntegerJdoSeedService.java      |  47 +++++++++
 .../jdo/WrapperCharacterJdo-description.adoc       |  15 ---
 .../bigintegers/jdo/WrapperCharacterJdo.java       |  83 ---------------
 .../jdo/WrapperCharacterJdoEntities.java           |  26 -----
 .../jdo/WrapperCharacterJdoSeedService.java        |  42 --------
 .../vm/JavaMathBigIntegerVm-description.adoc       |  13 +++
 .../bigintegers/vm/JavaMathBigIntegerVm.java       |  85 +++++++++++++++
 .../vm/WrapperCharacterVm-description.adoc         |  13 ---
 .../bigintegers/vm/WrapperCharacterVm.java         |  85 ---------------
 .../dom/types/javanet/JavaNetTypesMenu.java        |  44 ++++++++
 .../javanet/urls/JavaNetUrls-description.adoc      |  75 ++++++++++++++
 .../dom/types/javanet/urls/JavaNetUrls.java        |  81 +++++++++++++++
 .../dom/types/javanet/urls/JavaNetUrlsSamples.java |  36 +++++++
 .../dom/types/javanet/urls/JavaNetUrlsStream.java  |  36 -------
 .../urls/WrapperCharacters-description.adoc        |  75 --------------
 .../dom/types/javanet/urls/WrapperCharacters.java  |  76 --------------
 .../javanet/urls/holder/JavaNetUrlHolder.java      |  37 +++++++
 .../javanet/urls/holder/JavaNetUrlHolder2.java     |  76 ++++++++++++++
 .../holder/JavaNetUrlHolder_actionReturning.java   |  39 +++++++
 ...JavaNetUrlHolder_actionReturningCollection.java |  53 ++++++++++
 .../holder/JavaNetUrlHolder_mixinProperty.java     |  45 ++++++++
 ...etUrlHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 .../JavaNetUrlHolder_updateReadOnlyProperty.java   |  50 +++++++++
 ...rlHolder_updateReadOnlyPropertyWithChoices.java |  66 ++++++++++++
 .../urls/holder/WrapperCharacterHolder.java        |  37 -------
 .../urls/holder/WrapperCharacterHolder2.java       |  76 --------------
 .../WrapperCharacterHolder_actionReturning.java    |  39 -------
 ...rCharacterHolder_actionReturningCollection.java |  48 ---------
 .../WrapperCharacterHolder_mixinProperty.java      |  45 --------
 ...acterHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...pperCharacterHolder_updateReadOnlyProperty.java |  50 ---------
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  58 -----------
 .../urls/jdo/JavaNetUrlJdo-description.adoc        |  15 +++
 .../dom/types/javanet/urls/jdo/JavaNetUrlJdo.java  |  83 +++++++++++++++
 .../javanet/urls/jdo/JavaNetUrlJdoEntities.java    |  26 +++++
 .../javanet/urls/jdo/JavaNetUrlJdoSeedService.java |  48 +++++++++
 .../urls/jdo/WrapperCharacterJdo-description.adoc  |  15 ---
 .../javanet/urls/jdo/WrapperCharacterJdo.java      |  83 ---------------
 .../urls/jdo/WrapperCharacterJdoEntities.java      |  26 -----
 .../urls/jdo/WrapperCharacterJdoSeedService.java   |  42 --------
 .../javanet/urls/vm/JavaNetUrlVm-description.adoc  |  13 +++
 .../dom/types/javanet/urls/vm/JavaNetUrlVm.java    |  85 +++++++++++++++
 .../urls/vm/WrapperCharacterVm-description.adoc    |  13 ---
 .../types/javanet/urls/vm/WrapperCharacterVm.java  |  85 ---------------
 .../dom/types/javasql/JavaSqlTypesMenu.java        |  53 ++++++++++
 .../javasqldate/JavaSqlDates-description.adoc      |  75 ++++++++++++++
 .../types/javasql/javasqldate/JavaSqlDates.java    |  76 ++++++++++++++
 .../javasql/javasqldate/JavaSqlDatesSamples.java   |  37 +++++++
 .../javasqldate/holder/JavaSqlDateHolder.java      |  37 +++++++
 .../javasqldate/holder/JavaSqlDateHolder2.java     |  75 ++++++++++++++
 .../holder/JavaSqlDateHolder_actionReturning.java  |  39 +++++++
 ...avaSqlDateHolder_actionReturningCollection.java |  50 +++++++++
 .../holder/JavaSqlDateHolder_mixinProperty.java    |  43 ++++++++
 ...lDateHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 .../JavaSqlDateHolder_updateReadOnlyProperty.java  |  50 +++++++++
 ...teHolder_updateReadOnlyPropertyWithChoices.java |  64 ++++++++++++
 .../jdo/JavaSqlDateJdo-description.adoc            |  15 +++
 .../javasql/javasqldate/jdo/JavaSqlDateJdo.java    |  81 +++++++++++++++
 .../javasqldate/jdo/JavaSqlDateJdoEntities.java    |  26 +++++
 .../javasqldate/jdo/JavaSqlDateJdoSeedService.java |  46 +++++++++
 .../javasqldate/vm/JavaSqlDateVm-description.adoc  |  14 +++
 .../javasql/javasqldate/vm/JavaSqlDateVm.java      |  89 ++++++++++++++++
 .../JavaSqlTimestamps-description.adoc             |  75 ++++++++++++++
 .../javasqltimestamp/JavaSqlTimestamps.java        |  76 ++++++++++++++
 .../javasqltimestamp/JavaSqlTimestampsSamples.java |  37 +++++++
 .../holder/JavaSqlTimestampHolder.java             |  37 +++++++
 .../holder/JavaSqlTimestampHolder2.java            |  75 ++++++++++++++
 .../JavaSqlTimestampHolder_actionReturning.java    |  39 +++++++
 ...lTimestampHolder_actionReturningCollection.java |  50 +++++++++
 .../JavaSqlTimestampHolder_mixinProperty.java      |  43 ++++++++
 ...stampHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 ...aSqlTimestampHolder_updateReadOnlyProperty.java |  50 +++++++++
 ...mpHolder_updateReadOnlyPropertyWithChoices.java |  64 ++++++++++++
 .../jdo/JavaSqlTimestampJdo-description.adoc       |  15 +++
 .../javasqltimestamp/jdo/JavaSqlTimestampJdo.java  |  81 +++++++++++++++
 .../jdo/JavaSqlTimestampJdoEntities.java           |  26 +++++
 .../jdo/JavaSqlTimestampJdoSeedService.java        |  46 +++++++++
 .../vm/JavaSqlTimestampVm-description.adoc         |  14 +++
 .../javasqltimestamp/vm/JavaSqlTimestampVm.java    |  89 ++++++++++++++++
 .../dom/types/javatime/JavaTimeTypesMenu.java      |  59 +++++++++++
 .../JavaTimeLocalDates-description.adoc            |  75 ++++++++++++++
 .../javatimelocaldate/JavaTimeLocalDates.java      |  76 ++++++++++++++
 .../JavaTimeLocalDatesSamples.java                 |  37 +++++++
 .../holder/JavaTimeLocalDateHolder.java            |  37 +++++++
 .../holder/JavaTimeLocalDateHolder2.java           |  75 ++++++++++++++
 .../JavaTimeLocalDateHolder_actionReturning.java   |  39 +++++++
 ...eLocalDateHolder_actionReturningCollection.java |  50 +++++++++
 .../JavaTimeLocalDateHolder_mixinProperty.java     |  43 ++++++++
 ...lDateHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 ...TimeLocalDateHolder_updateReadOnlyProperty.java |  50 +++++++++
 ...teHolder_updateReadOnlyPropertyWithChoices.java |  64 ++++++++++++
 .../jdo/JavaTimeLocalDateJdo-description.adoc}     |   0
 .../jdo/JavaTimeLocalDateJdo.java                  |  81 +++++++++++++++
 .../jdo/JavaTimeLocalDateJdoEntities.java          |  26 +++++
 .../jdo/JavaTimeLocalDateJdoSeedService.java       |  46 +++++++++
 .../vm/JavaTimeLocalDateVm-description.adoc}       |   0
 .../javatimelocaldate/vm/JavaTimeLocalDateVm.java  |  89 ++++++++++++++++
 .../JavaTimeLocalDateTimes-description.adoc        |  75 ++++++++++++++
 .../JavaTimeLocalDateTimes.java                    |  76 ++++++++++++++
 .../JavaTimeLocalDateTimesSamples.java             |  37 +++++++
 .../holder/JavaTimeLocalDateTimeHolder.java        |  37 +++++++
 .../holder/JavaTimeLocalDateTimeHolder2.java       |  75 ++++++++++++++
 ...avaTimeLocalDateTimeHolder_actionReturning.java |  39 +++++++
 ...alDateTimeHolder_actionReturningCollection.java |  50 +++++++++
 .../JavaTimeLocalDateTimeHolder_mixinProperty.java |  43 ++++++++
 ...eTimeHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 ...LocalDateTimeHolder_updateReadOnlyProperty.java |  50 +++++++++
 ...meHolder_updateReadOnlyPropertyWithChoices.java |  64 ++++++++++++
 .../jdo/JavaTimeLocalDateTimeJdo-description.adoc} |   0
 .../jdo/JavaTimeLocalDateTimeJdo.java              |  81 +++++++++++++++
 .../jdo/JavaTimeLocalDateTimeJdoEntities.java      |  26 +++++
 .../jdo/JavaTimeLocalDateTimeJdoSeedService.java   |  46 +++++++++
 .../vm/JavaTimeLocalDateTimeVm-description.adoc}   |   0
 .../vm/JavaTimeLocalDateTimeVm.java                |  89 ++++++++++++++++
 .../JavaTimeOffsetDateTimes-description.adoc       |  75 ++++++++++++++
 .../JavaTimeOffsetDateTimes.java                   |  77 ++++++++++++++
 .../JavaTimeOffsetDateTimesSamples.java            |  38 +++++++
 .../holder/JavaTimeOffsetDateTimeHolder.java       |  37 +++++++
 .../holder/JavaTimeOffsetDateTimeHolder2.java      |  75 ++++++++++++++
 ...vaTimeOffsetDateTimeHolder_actionReturning.java |  39 +++++++
 ...etDateTimeHolder_actionReturningCollection.java |  50 +++++++++
 ...JavaTimeOffsetDateTimeHolder_mixinProperty.java |  43 ++++++++
 ...eTimeHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 ...ffsetDateTimeHolder_updateReadOnlyProperty.java |  50 +++++++++
 ...meHolder_updateReadOnlyPropertyWithChoices.java |  64 ++++++++++++
 .../JavaTimeOffsetDateTimeJdo-description.adoc}    |   0
 .../jdo/JavaTimeOffsetDateTimeJdo.java             |  81 +++++++++++++++
 .../jdo/JavaTimeOffsetDateTimeJdoEntities.java     |  26 +++++
 .../jdo/JavaTimeOffsetDateTimeJdoSeedService.java  |  46 +++++++++
 .../vm/JavaTimeOffsetDateTimeVm-description.adoc}  |   0
 .../vm/JavaTimeOffsetDateTimeVm.java               |  89 ++++++++++++++++
 .../dom/types/javautil/JavaUtilTypesMenu.java      |  51 +++++++++
 .../javautildate/JavaUtilDates-description.adoc    |  75 ++++++++++++++
 .../types/javautil/javautildate/JavaUtilDates.java |  76 ++++++++++++++
 .../javautildate/JavaUtilDatesSamples.java         |  37 +++++++
 .../javautildate/holder/JavaUtilDateHolder.java    |  37 +++++++
 .../javautildate/holder/JavaUtilDateHolder2.java   |  75 ++++++++++++++
 .../holder/JavaUtilDateHolder_actionReturning.java |  39 +++++++
 ...vaUtilDateHolder_actionReturningCollection.java |  50 +++++++++
 .../holder/JavaUtilDateHolder_mixinProperty.java   |  43 ++++++++
 ...lDateHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 .../JavaUtilDateHolder_updateReadOnlyProperty.java |  50 +++++++++
 ...teHolder_updateReadOnlyPropertyWithChoices.java |  64 ++++++++++++
 .../jdo/JavaUtilDateJdo-description.adoc}          |   0
 .../javautil/javautildate/jdo/JavaUtilDateJdo.java |  81 +++++++++++++++
 .../javautildate/jdo/JavaUtilDateJdoEntities.java  |  26 +++++
 .../jdo/JavaUtilDateJdoSeedService.java            |  46 +++++++++
 .../vm/JavaUtilDateVm-description.adoc}            |   0
 .../javautil/javautildate/vm/JavaUtilDateVm.java   |  89 ++++++++++++++++
 .../javautil/uuids/JavaUtilUuids-description.adoc  |  75 ++++++++++++++
 .../dom/types/javautil/uuids/JavaUtilUuids.java    |  81 +++++++++++++++
 .../types/javautil/uuids/JavaUtilUuidsSamples.java |  36 +++++++
 .../types/javautil/uuids/JavaUtilUuidsStream.java  |  36 -------
 .../uuids/WrapperCharacters-description.adoc       |  75 --------------
 .../types/javautil/uuids/WrapperCharacters.java    |  76 --------------
 .../javautil/uuids/holder/JavaUtilUuidHolder.java  |  37 +++++++
 .../javautil/uuids/holder/JavaUtilUuidHolder2.java |  76 ++++++++++++++
 .../holder/JavaUtilUuidHolder_actionReturning.java |  39 +++++++
 ...vaUtilUuidHolder_actionReturningCollection.java |  54 ++++++++++
 .../holder/JavaUtilUuidHolder_mixinProperty.java   |  45 ++++++++
 ...lUuidHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 .../JavaUtilUuidHolder_updateReadOnlyProperty.java |  50 +++++++++
 ...idHolder_updateReadOnlyPropertyWithChoices.java |  66 ++++++++++++
 .../uuids/holder/WrapperCharacterHolder.java       |  37 -------
 .../uuids/holder/WrapperCharacterHolder2.java      |  76 --------------
 .../WrapperCharacterHolder_actionReturning.java    |  39 -------
 ...rCharacterHolder_actionReturningCollection.java |  48 ---------
 .../WrapperCharacterHolder_mixinProperty.java      |  45 --------
 ...acterHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...pperCharacterHolder_updateReadOnlyProperty.java |  50 ---------
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  58 -----------
 .../uuids/jdo/JavaUtilUuidJdo-description.adoc     |  15 +++
 .../types/javautil/uuids/jdo/JavaUtilUuidJdo.java  |  83 +++++++++++++++
 .../uuids/jdo/JavaUtilUuidJdoEntities.java         |  26 +++++
 .../uuids/jdo/JavaUtilUuidJdoSeedService.java      |  49 +++++++++
 .../uuids/jdo/WrapperCharacterJdo-description.adoc |  15 ---
 .../javautil/uuids/jdo/WrapperCharacterJdo.java    |  83 ---------------
 .../uuids/jdo/WrapperCharacterJdoEntities.java     |  26 -----
 .../uuids/jdo/WrapperCharacterJdoSeedService.java  |  42 --------
 .../uuids/vm/JavaUtilUuidVm-description.adoc       |  13 +++
 .../types/javautil/uuids/vm/JavaUtilUuidVm.java    |  85 +++++++++++++++
 .../uuids/vm/WrapperCharacterVm-description.adoc   |  13 ---
 .../javautil/uuids/vm/WrapperCharacterVm.java      |  85 ---------------
 .../dom/types/jodatime/JodaTimeTypesMenu.java      |  59 +++++++++++
 .../jodadatetime/JodaDateTimes-description.adoc    |  75 ++++++++++++++
 .../types/jodatime/jodadatetime/JodaDateTimes.java |  79 ++++++++++++++
 .../jodadatetime/JodaDateTimesSamples.java         |  37 +++++++
 .../jodadatetime/holder/JodaDateTimeHolder.java    |  37 +++++++
 .../jodadatetime/holder/JodaDateTimeHolder2.java   |  75 ++++++++++++++
 .../holder/JodaDateTimeHolder_actionReturning.java |  39 +++++++
 ...daDateTimeHolder_actionReturningCollection.java |  51 +++++++++
 .../holder/JodaDateTimeHolder_mixinProperty.java   |  43 ++++++++
 ...eTimeHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 .../JodaDateTimeHolder_updateReadOnlyProperty.java |  50 +++++++++
 ...meHolder_updateReadOnlyPropertyWithChoices.java |  65 ++++++++++++
 .../jdo/JodaDateTimeJdo-description.adoc           |  15 +++
 .../jodatime/jodadatetime/jdo/JodaDateTimeJdo.java |  81 +++++++++++++++
 .../jodadatetime/jdo/JodaDateTimeJdoEntities.java  |  26 +++++
 .../jdo/JodaDateTimeJdoSeedService.java            |  45 ++++++++
 .../vm/JodaDateTimeVm-description.adoc             |  14 +++
 .../jodatime/jodadatetime/vm/JodaDateTimeVm.java   |  89 ++++++++++++++++
 .../jodalocaldate/JodaLocalDates-description.adoc  |  75 ++++++++++++++
 .../jodatime/jodalocaldate/JodaLocalDates.java     |  82 +++++++++++++++
 .../jodalocaldate/JodaLocalDatesSamples.java       |  37 +++++++
 .../jodalocaldate/holder/JodaLocalDateHolder.java  |  37 +++++++
 .../jodalocaldate/holder/JodaLocalDateHolder2.java |  75 ++++++++++++++
 .../JodaLocalDateHolder_actionReturning.java       |  39 +++++++
 ...aLocalDateHolder_actionReturningCollection.java |  51 +++++++++
 .../holder/JodaLocalDateHolder_mixinProperty.java  |  43 ++++++++
 ...lDateHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 ...JodaLocalDateHolder_updateReadOnlyProperty.java |  50 +++++++++
 ...teHolder_updateReadOnlyPropertyWithChoices.java |  66 ++++++++++++
 .../jdo/JodaLocalDateJdo-description.adoc          |  15 +++
 .../jodalocaldate/jdo/JodaLocalDateJdo.java        |  81 +++++++++++++++
 .../jdo/JodaLocalDateJdoEntities.java              |  26 +++++
 .../jdo/JodaLocalDateJdoSeedService.java           |  45 ++++++++
 .../vm/JodaLocalDateVm-description.adoc            |  14 +++
 .../jodatime/jodalocaldate/vm/JodaLocalDateVm.java |  89 ++++++++++++++++
 .../JodaLocalDateTimes-description.adoc            |  75 ++++++++++++++
 .../jodalocaldatetime/JodaLocalDateTimes.java      |  82 +++++++++++++++
 .../JodaLocalDateTimesSamples.java                 |  38 +++++++
 .../holder/JodaLocalDateTimeHolder.java            |  37 +++++++
 .../holder/JodaLocalDateTimeHolder2.java           |  75 ++++++++++++++
 .../JodaLocalDateTimeHolder_actionReturning.java   |  39 +++++++
 ...alDateTimeHolder_actionReturningCollection.java |  52 ++++++++++
 .../JodaLocalDateTimeHolder_mixinProperty.java     |  43 ++++++++
 ...eTimeHolder_updateReadOnlyOptionalProperty.java |  55 ++++++++++
 ...LocalDateTimeHolder_updateReadOnlyProperty.java |  50 +++++++++
 ...meHolder_updateReadOnlyPropertyWithChoices.java |  66 ++++++++++++
 .../jdo/JodaLocalDateTimeJdo-description.adoc      |  15 +++
 .../jdo/JodaLocalDateTimeJdo.java                  |  81 +++++++++++++++
 .../jdo/JodaLocalDateTimeJdoEntities.java          |  26 +++++
 .../jdo/JodaLocalDateTimeJdoSeedService.java       |  46 +++++++++
 .../vm/JodaLocalDateTimeVm-description.adoc        |  14 +++
 .../jodalocaldatetime/vm/JodaLocalDateTimeVm.java  |  89 ++++++++++++++++
 .../jdo/PrimitiveBooleanJdoSeedService.java        |   1 -
 ...teHolder_updateReadOnlyPropertyWithChoices.java |   1 -
 .../bytes/jdo/PrimitiveByteJdoSeedService.java     |   1 -
 ...arHolder_updateReadOnlyPropertyWithChoices.java |   1 -
 .../chars/jdo/PrimitiveCharJdoSeedService.java     |   1 -
 ...leHolder_updateReadOnlyPropertyWithChoices.java |   1 -
 .../doubles/jdo/PrimitiveDoubleJdoSeedService.java |   1 -
 ...atHolder_updateReadOnlyPropertyWithChoices.java |   1 -
 .../floats/jdo/PrimitiveFloatJdoSeedService.java   |   1 -
 ...ntHolder_updateReadOnlyPropertyWithChoices.java |   1 -
 .../ints/jdo/PrimitiveIntJdoSeedService.java       |   1 -
 ...ngHolder_updateReadOnlyPropertyWithChoices.java |   1 -
 .../longs/jdo/PrimitiveLongJdoSeedService.java     |   1 -
 ...rtHolder_updateReadOnlyPropertyWithChoices.java |   1 -
 .../shorts/jdo/PrimitiveShortJdoSeedService.java   |   3 +-
 .../dom/types/temporal/TemporalTypesMenu.java      |  79 --------------
 .../TemporalJavaSqlDates-description.adoc          |  75 --------------
 .../temporal/javasqldate/TemporalJavaSqlDates.java |  76 --------------
 .../javasqldate/TemporalJavaSqlDatesStream.java    |  37 -------
 .../holder/TemporalJavaSqlDateHolder.java          |  37 -------
 .../holder/TemporalJavaSqlDateHolder2.java         |  76 --------------
 .../TemporalJavaSqlDateHolder_actionReturning.java |  39 -------
 ...avaSqlDateHolder_actionReturningCollection.java |  51 ---------
 .../TemporalJavaSqlDateHolder_mixinProperty.java   |  45 --------
 ...lDateHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...alJavaSqlDateHolder_updateReadOnlyProperty.java |  50 ---------
 ...teHolder_updateReadOnlyPropertyWithChoices.java |  65 ------------
 .../jdo/TemporalJavaSqlDateJdo-description.adoc    |  15 ---
 .../javasqldate/jdo/TemporalJavaSqlDateJdo.java    |  83 ---------------
 .../jdo/TemporalJavaSqlDateJdoEntities.java        |  26 -----
 .../jdo/TemporalJavaSqlDateJdoSeedService.java     |  47 ---------
 .../vm/TemporalJavaSqlDateVm-description.adoc      |  14 ---
 .../javasqldate/vm/TemporalJavaSqlDateVm.java      |  91 ----------------
 .../TemporalJavaSqlTimestamps-description.adoc     |  75 --------------
 .../TemporalJavaSqlTimestamps.java                 |  76 --------------
 .../TemporalJavaSqlTimestampsStream.java           |  37 -------
 .../holder/TemporalJavaSqlTimestampHolder.java     |  37 -------
 .../holder/TemporalJavaSqlTimestampHolder2.java    |  76 --------------
 ...oralJavaSqlTimestampHolder_actionReturning.java |  39 -------
 ...lTimestampHolder_actionReturningCollection.java |  51 ---------
 ...mporalJavaSqlTimestampHolder_mixinProperty.java |  45 --------
 ...stampHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...aSqlTimestampHolder_updateReadOnlyProperty.java |  50 ---------
 ...mpHolder_updateReadOnlyPropertyWithChoices.java |  65 ------------
 .../TemporalJavaSqlTimestampJdo-description.adoc   |  15 ---
 .../jdo/TemporalJavaSqlTimestampJdo.java           |  83 ---------------
 .../jdo/TemporalJavaSqlTimestampJdoEntities.java   |  26 -----
 .../TemporalJavaSqlTimestampJdoSeedService.java    |  47 ---------
 .../vm/TemporalJavaSqlTimestampVm-description.adoc |  14 ---
 .../vm/TemporalJavaSqlTimestampVm.java             |  91 ----------------
 .../TemporalJavaTimeLocalDates-description.adoc    |  75 --------------
 .../TemporalJavaTimeLocalDates.java                |  76 --------------
 .../TemporalJavaTimeLocalDatesStream.java          |  37 -------
 .../holder/TemporalJavaTimeLocalDateHolder.java    |  37 -------
 .../holder/TemporalJavaTimeLocalDateHolder2.java   |  76 --------------
 ...ralJavaTimeLocalDateHolder_actionReturning.java |  39 -------
 ...eLocalDateHolder_actionReturningCollection.java |  50 ---------
 ...poralJavaTimeLocalDateHolder_mixinProperty.java |  45 --------
 ...lDateHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...TimeLocalDateHolder_updateReadOnlyProperty.java |  50 ---------
 ...teHolder_updateReadOnlyPropertyWithChoices.java |  65 ------------
 .../jdo/TemporalJavaTimeLocalDateJdo.java          |  83 ---------------
 .../jdo/TemporalJavaTimeLocalDateJdoEntities.java  |  26 -----
 .../TemporalJavaTimeLocalDateJdoSeedService.java   |  47 ---------
 .../vm/TemporalJavaTimeLocalDateVm.java            |  91 ----------------
 ...TemporalJavaTimeLocalDateTimes-description.adoc |  75 --------------
 .../TemporalJavaTimeLocalDateTimes.java            |  76 --------------
 .../TemporalJavaTimeLocalDateTimesStream.java      |  37 -------
 .../TemporalJavaTimeLocalDateTimeHolder.java       |  37 -------
 .../TemporalJavaTimeLocalDateTimeHolder2.java      |  76 --------------
 ...avaTimeLocalDateTimeHolder_actionReturning.java |  39 -------
 ...alDateTimeHolder_actionReturningCollection.java |  51 ---------
 ...lJavaTimeLocalDateTimeHolder_mixinProperty.java |  45 --------
 ...eTimeHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...LocalDateTimeHolder_updateReadOnlyProperty.java |  50 ---------
 ...meHolder_updateReadOnlyPropertyWithChoices.java |  65 ------------
 .../jdo/TemporalJavaTimeLocalDateTimeJdo.java      |  83 ---------------
 .../TemporalJavaTimeLocalDateTimeJdoEntities.java  |  26 -----
 ...emporalJavaTimeLocalDateTimeJdoSeedService.java |  47 ---------
 .../vm/TemporalJavaTimeLocalDateTimeVm.java        |  91 ----------------
 ...emporalJavaTimeOffsetDateTimes-description.adoc |  75 --------------
 .../TemporalJavaTimeOffsetDateTimes.java           |  77 --------------
 .../TemporalJavaTimeOffsetDateTimesStream.java     |  38 -------
 .../TemporalJavaTimeOffsetDateTimeHolder.java      |  37 -------
 .../TemporalJavaTimeOffsetDateTimeHolder2.java     |  76 --------------
 ...vaTimeOffsetDateTimeHolder_actionReturning.java |  39 -------
 ...etDateTimeHolder_actionReturningCollection.java |  51 ---------
 ...JavaTimeOffsetDateTimeHolder_mixinProperty.java |  45 --------
 ...eTimeHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...ffsetDateTimeHolder_updateReadOnlyProperty.java |  50 ---------
 ...meHolder_updateReadOnlyPropertyWithChoices.java |  65 ------------
 .../jdo/TemporalJavaTimeOffsetDateTimeJdo.java     |  83 ---------------
 .../TemporalJavaTimeOffsetDateTimeJdoEntities.java |  26 -----
 ...mporalJavaTimeOffsetDateTimeJdoSeedService.java |  47 ---------
 .../vm/TemporalJavaTimeOffsetDateTimeVm.java       |  91 ----------------
 .../TemporalJavaUtilDates-description.adoc         |  75 --------------
 .../javautildate/TemporalJavaUtilDates.java        |  76 --------------
 .../javautildate/TemporalJavaUtilDatesStream.java  |  37 -------
 .../holder/TemporalJavaUtilDateHolder.java         |  37 -------
 .../holder/TemporalJavaUtilDateHolder2.java        |  76 --------------
 ...TemporalJavaUtilDateHolder_actionReturning.java |  39 -------
 ...vaUtilDateHolder_actionReturningCollection.java |  51 ---------
 .../TemporalJavaUtilDateHolder_mixinProperty.java  |  45 --------
 ...lDateHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...lJavaUtilDateHolder_updateReadOnlyProperty.java |  50 ---------
 ...teHolder_updateReadOnlyPropertyWithChoices.java |  65 ------------
 .../javautildate/jdo/TemporalJavaUtilDateJdo.java  |  83 ---------------
 .../jdo/TemporalJavaUtilDateJdoEntities.java       |  26 -----
 .../jdo/TemporalJavaUtilDateJdoSeedService.java    |  47 ---------
 .../javautildate/vm/TemporalJavaUtilDateVm.java    |  91 ----------------
 .../TemporalJodaDateTimes-description.adoc         |  75 --------------
 .../jodadatetime/TemporalJodaDateTimes.java        |  79 --------------
 .../jodadatetime/TemporalJodaDateTimesStream.java  |  37 -------
 .../holder/TemporalJodaDateTimeHolder.java         |  37 -------
 .../holder/TemporalJodaDateTimeHolder2.java        |  76 --------------
 ...TemporalJodaDateTimeHolder_actionReturning.java |  39 -------
 ...daDateTimeHolder_actionReturningCollection.java |  54 ----------
 .../TemporalJodaDateTimeHolder_mixinProperty.java  |  45 --------
 ...eTimeHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...lJodaDateTimeHolder_updateReadOnlyProperty.java |  50 ---------
 ...meHolder_updateReadOnlyPropertyWithChoices.java |  66 ------------
 .../jdo/TemporalJodaDateTimeJdo-description.adoc   |  15 ---
 .../jodadatetime/jdo/TemporalJodaDateTimeJdo.java  |  83 ---------------
 .../jdo/TemporalJodaDateTimeJdoEntities.java       |  26 -----
 .../jdo/TemporalJodaDateTimeJdoSeedService.java    |  47 ---------
 .../vm/TemporalJodaDateTimeVm-description.adoc     |  14 ---
 .../jodadatetime/vm/TemporalJodaDateTimeVm.java    |  91 ----------------
 .../TemporalJavaTimeLocalDates-description.adoc    |  75 --------------
 .../jodalocaldate/TemporalJavaTimeLocalDates.java  |  76 --------------
 .../TemporalJodaLocalDatesStream.java              |  37 -------
 ...eLocalDateHolder_actionReturningCollection.java |  49 ---------
 ...poralJavaTimeLocalDateHolder_mixinProperty.java |  45 --------
 ...lDateHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...TimeLocalDateHolder_updateReadOnlyProperty.java |  50 ---------
 .../holder/TemporalJodaLocalDateHolder.java        |  37 -------
 .../holder/TemporalJodaLocalDateHolder2.java       |  76 --------------
 ...emporalJodaLocalDateHolder_actionReturning.java |  39 -------
 ...teHolder_updateReadOnlyPropertyWithChoices.java |  64 ------------
 .../TemporalJavaTimeLocalDateJdo-description.adoc  |  15 ---
 .../jdo/TemporalJavaTimeLocalDateJdo.java          |  83 ---------------
 .../jdo/TemporalJavaTimeLocalDateJdoEntities.java  |  26 -----
 .../jdo/TemporalJodaLocalDateJdoSeedService.java   |  44 --------
 .../TemporalJavaTimeLocalDateVm-description.adoc   |  14 ---
 .../vm/TemporalJavaTimeLocalDateVm.java            |  91 ----------------
 .../TemporalJavaTimeLocalDates-description.adoc    |  75 --------------
 .../TemporalJavaTimeLocalDates.java                |  76 --------------
 .../TemporalJodaLocalDateTimesStream.java          |  38 -------
 .../holder/TemporalJavaTimeLocalDateHolder.java    |  37 -------
 .../holder/TemporalJavaTimeLocalDateHolder2.java   |  76 --------------
 ...ralJavaTimeLocalDateHolder_actionReturning.java |  39 -------
 ...eLocalDateHolder_actionReturningCollection.java |  49 ---------
 ...poralJavaTimeLocalDateHolder_mixinProperty.java |  45 --------
 ...lDateHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...TimeLocalDateHolder_updateReadOnlyProperty.java |  50 ---------
 ...teHolder_updateReadOnlyPropertyWithChoices.java |  59 -----------
 .../TemporalJavaTimeLocalDateJdo-description.adoc  |  15 ---
 .../jdo/TemporalJavaTimeLocalDateJdo.java          |  83 ---------------
 .../jdo/TemporalJavaTimeLocalDateJdoEntities.java  |  26 -----
 .../TemporalJavaTimeLocalDateJdoSeedService.java   |  43 --------
 .../TemporalJavaTimeLocalDateVm-description.adoc   |  14 ---
 .../vm/TemporalJavaTimeLocalDateVm.java            |  91 ----------------
 .../dom/types/wrapper/WrapperTypesMenu.java        |  92 -----------------
 .../types/wrapper/booleans/WrapperBooleans.java    | 114 ---------------------
 .../wrapper/booleans/WrapperBooleansStream.java    |  35 -------
 .../booleans/holder/WrapperBooleanHolder.java      |  37 -------
 .../booleans/holder/WrapperBooleanHolder2.java     |  76 --------------
 .../WrapperBooleanHolder_actionReturning.java      |  39 -------
 ...perBooleanHolder_actionReturningCollection.java |  52 ----------
 .../holder/WrapperBooleanHolder_mixinProperty.java |  45 --------
 ...oleanHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...rapperBooleanHolder_updateReadOnlyProperty.java |  50 ---------
 ...anHolder_updateReadOnlyPropertyWithChoices.java |  64 ------------
 .../wrapper/booleans/jdo/WrapperBooleanJdo.java    |  83 ---------------
 .../booleans/jdo/WrapperBooleanJdoEntities.java    |  26 -----
 .../booleans/jdo/WrapperBooleanJdoSeedService.java |  45 --------
 .../wrapper/booleans/vm/WrapperBooleanVm.java      |  85 ---------------
 .../dom/types/wrapper/bytes/WrapperBytes.java      |  76 --------------
 .../types/wrapper/bytes/WrapperBytesStream.java    |  36 -------
 .../wrapper/bytes/holder/WrapperByteHolder.java    |  37 -------
 .../wrapper/bytes/holder/WrapperByteHolder2.java   |  76 --------------
 .../holder/WrapperByteHolder_actionReturning.java  |  39 -------
 ...rapperByteHolder_actionReturningCollection.java |  54 ----------
 .../holder/WrapperByteHolder_mixinProperty.java    |  45 --------
 ...rByteHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 .../WrapperByteHolder_updateReadOnlyProperty.java  |  50 ---------
 ...teHolder_updateReadOnlyPropertyWithChoices.java |  64 ------------
 .../types/wrapper/bytes/jdo/WrapperByteJdo.java    |  83 ---------------
 .../wrapper/bytes/jdo/WrapperByteJdoEntities.java  |  26 -----
 .../bytes/jdo/WrapperByteJdoSeedService.java       |  45 --------
 .../dom/types/wrapper/bytes/vm/WrapperByteVm.java  |  85 ---------------
 .../wrapper/characters/WrapperCharacters.java      |  76 --------------
 .../characters/WrapperCharactersStream.java        |  35 -------
 .../characters/holder/WrapperCharacterHolder.java  |  37 -------
 .../characters/holder/WrapperCharacterHolder2.java |  76 --------------
 .../WrapperCharacterHolder_actionReturning.java    |  39 -------
 ...rCharacterHolder_actionReturningCollection.java |  50 ---------
 .../WrapperCharacterHolder_mixinProperty.java      |  45 --------
 ...acterHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...pperCharacterHolder_updateReadOnlyProperty.java |  50 ---------
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  65 ------------
 .../characters/jdo/WrapperCharacterJdo.java        |  83 ---------------
 .../jdo/WrapperCharacterJdoEntities.java           |  26 -----
 .../jdo/WrapperCharacterJdoSeedService.java        |  45 --------
 .../wrapper/characters/vm/WrapperCharacterVm.java  |  85 ---------------
 .../dom/types/wrapper/doubles/WrapperDoubles.java  |  76 --------------
 .../wrapper/doubles/WrapperDoublesStream.java      |  35 -------
 .../doubles/holder/WrapperDoubleHolder.java        |  37 -------
 .../doubles/holder/WrapperDoubleHolder2.java       |  76 --------------
 .../WrapperDoubleHolder_actionReturning.java       |  39 -------
 ...pperDoubleHolder_actionReturningCollection.java |  54 ----------
 .../holder/WrapperDoubleHolder_mixinProperty.java  |  45 --------
 ...oubleHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...WrapperDoubleHolder_updateReadOnlyProperty.java |  50 ---------
 ...leHolder_updateReadOnlyPropertyWithChoices.java |  64 ------------
 .../wrapper/doubles/jdo/WrapperDoubleJdo.java      |  83 ---------------
 .../doubles/jdo/WrapperDoubleJdoEntities.java      |  26 -----
 .../doubles/jdo/WrapperDoubleJdoSeedService.java   |  45 --------
 .../types/wrapper/doubles/vm/WrapperDoubleVm.java  |  85 ---------------
 .../dom/types/wrapper/floats/WrapperFloats.java    |  76 --------------
 .../types/wrapper/floats/WrapperFloatsStream.java  |  35 -------
 .../wrapper/floats/holder/WrapperFloatHolder.java  |  37 -------
 .../wrapper/floats/holder/WrapperFloatHolder2.java |  76 --------------
 .../holder/WrapperFloatHolder_actionReturning.java |  39 -------
 ...apperFloatHolder_actionReturningCollection.java |  50 ---------
 .../holder/WrapperFloatHolder_mixinProperty.java   |  45 --------
 ...FloatHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 .../WrapperFloatHolder_updateReadOnlyProperty.java |  50 ---------
 ...atHolder_updateReadOnlyPropertyWithChoices.java |  64 ------------
 .../types/wrapper/floats/jdo/WrapperFloatJdo.java  |  83 ---------------
 .../floats/jdo/WrapperFloatJdoEntities.java        |  26 -----
 .../floats/jdo/WrapperFloatJdoSeedService.java     |  45 --------
 .../types/wrapper/floats/vm/WrapperFloatVm.java    |  85 ---------------
 .../types/wrapper/integers/WrapperIntegers.java    |  76 --------------
 .../wrapper/integers/WrapperIntegersStream.java    |  35 -------
 .../integers/holder/WrapperIntegerHolder.java      |  37 -------
 .../integers/holder/WrapperIntegerHolder2.java     |  76 --------------
 .../WrapperIntegerHolder_actionReturning.java      |  39 -------
 ...perIntegerHolder_actionReturningCollection.java |  50 ---------
 .../holder/WrapperIntegerHolder_mixinProperty.java |  45 --------
 ...tegerHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 ...rapperIntegerHolder_updateReadOnlyProperty.java |  50 ---------
 ...erHolder_updateReadOnlyPropertyWithChoices.java |  64 ------------
 .../wrapper/integers/jdo/WrapperIntegerJdo.java    |  83 ---------------
 .../integers/jdo/WrapperIntegerJdoEntities.java    |  26 -----
 .../integers/jdo/WrapperIntegerJdoSeedService.java |  45 --------
 .../wrapper/integers/vm/WrapperIntegerVm.java      |  85 ---------------
 .../dom/types/wrapper/longs/WrapperLongs.java      |  76 --------------
 .../types/wrapper/longs/WrapperLongsStream.java    |  35 -------
 .../wrapper/longs/holder/WrapperLongHolder.java    |  37 -------
 .../wrapper/longs/holder/WrapperLongHolder2.java   |  76 --------------
 .../holder/WrapperLongHolder_actionReturning.java  |  39 -------
 ...rapperLongHolder_actionReturningCollection.java |  50 ---------
 .../holder/WrapperLongHolder_mixinProperty.java    |  45 --------
 ...rLongHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 .../WrapperLongHolder_updateReadOnlyProperty.java  |  50 ---------
 ...ngHolder_updateReadOnlyPropertyWithChoices.java |  64 ------------
 .../types/wrapper/longs/jdo/WrapperLongJdo.java    |  83 ---------------
 .../wrapper/longs/jdo/WrapperLongJdoEntities.java  |  26 -----
 .../longs/jdo/WrapperLongJdoSeedService.java       |  45 --------
 .../dom/types/wrapper/longs/vm/WrapperLongVm.java  |  85 ---------------
 .../dom/types/wrapper/shorts/WrapperShorts.java    |  76 --------------
 .../types/wrapper/shorts/WrapperShortsStream.java  |  36 -------
 .../wrapper/shorts/holder/WrapperShortHolder.java  |  37 -------
 .../wrapper/shorts/holder/WrapperShortHolder2.java |  76 --------------
 .../holder/WrapperShortHolder_actionReturning.java |  39 -------
 ...apperShortHolder_actionReturningCollection.java |  50 ---------
 .../holder/WrapperShortHolder_mixinProperty.java   |  45 --------
 ...ShortHolder_updateReadOnlyOptionalProperty.java |  55 ----------
 .../WrapperShortHolder_updateReadOnlyProperty.java |  50 ---------
 ...rtHolder_updateReadOnlyPropertyWithChoices.java |  64 ------------
 .../types/wrapper/shorts/jdo/WrapperShortJdo.java  |  83 ---------------
 .../shorts/jdo/WrapperShortJdoEntities.java        |  26 -----
 .../shorts/jdo/WrapperShortJdoSeedService.java     |  45 --------
 .../types/wrapper/shorts/vm/WrapperShortVm.java    |  85 ---------------
 1082 files changed, 25190 insertions(+), 27255 deletions(-)

diff --git a/examples/demo/domain/pom.xml b/examples/demo/domain/pom.xml
index 2b43bd3..07c6def 100644
--- a/examples/demo/domain/pom.xml
+++ b/examples/demo/domain/pom.xml
@@ -74,6 +74,10 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.isis.valuetypes</groupId>
+			<artifactId>isis-valuetypes-markdown-ui</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.isis.valuetypes</groupId>
 			<artifactId>isis-valuetypes-sse-ui</artifactId>
 		</dependency>
 		<dependency>
@@ -133,7 +137,11 @@
 			<version>3.16.1</version>
 			<scope>test</scope>
 		</dependency>
+        <dependency>
+            <groupId>org.apache.isis.valuetypes</groupId>
+            <artifactId>isis-valuetypes-markdown-applib</artifactId>
+        </dependency>
 
-	</dependencies>
+    </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
index 85ea061..dda7b8c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
@@ -26,24 +26,53 @@
                 <mb3:serviceAction objectType="demo.PrimitiveTypesMenu" id="booleans"/>
             </mb3:section>
             <mb3:section>
-                <mb3:serviceAction objectType="demo.WrapperTypesMenu" id="bytes"/>
-                <mb3:serviceAction objectType="demo.WrapperTypesMenu" id="shorts"/>
-                <mb3:serviceAction objectType="demo.WrapperTypesMenu" id="integers"/>
-                <mb3:serviceAction objectType="demo.WrapperTypesMenu" id="longs"/>
-                <mb3:serviceAction objectType="demo.WrapperTypesMenu" id="floats"/>
-                <mb3:serviceAction objectType="demo.WrapperTypesMenu" id="doubles"/>
-                <mb3:serviceAction objectType="demo.WrapperTypesMenu" id="characters"/>
-                <mb3:serviceAction objectType="demo.WrapperTypesMenu" id="booleans"/>
+                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="bytes"/>
+                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="shorts"/>
+                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="integers"/>
+                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="longs"/>
+                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="floats"/>
+                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="doubles"/>
+                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="characters"/>
+                <mb3:serviceAction objectType="demo.JavaLangWrapperTypesMenu" id="booleans"/>
             </mb3:section>
             <mb3:section>
-                <mb3:serviceAction objectType="demo.TemporalTypesMenu" id="javaUtilDates"/>
-                <mb3:serviceAction objectType="demo.TemporalTypesMenu" id="javaSqlDates"/>
-                <mb3:serviceAction objectType="demo.TemporalTypesMenu" id="javaSqlTimestamps"/>
-                <mb3:serviceAction objectType="demo.TemporalTypesMenu" id="javaTimeLocalDates"/>
-                <mb3:serviceAction objectType="demo.TemporalTypesMenu" id="javaTimeLocalDateTimes"/>
-                <mb3:serviceAction objectType="demo.TemporalTypesMenu" id="javaTimeOffsetDateTimes"/>
+                <mb3:serviceAction objectType="demo.JavaLangTypesMenu" id="strings"/>
+                <mb3:serviceAction objectType="demo.JavaLangTypesMenu" id="voids"/>
             </mb3:section>
             <mb3:section>
+                <mb3:serviceAction objectType="demo.JavaUtilTypesMenu" id="javaUtilDates"/>
+                <mb3:serviceAction objectType="demo.JavaUtilTypesMenu" id="javaUtilUuids"/>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="demo.JavaSqlTypesMenu" id="javaSqlDates"/>
+                <mb3:serviceAction objectType="demo.JavaSqlTypesMenu" id="javaSqlTimestamps"/>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="demo.JavaTimeTypesMenu" id="javaTimeLocalDates"/>
+                <mb3:serviceAction objectType="demo.JavaTimeTypesMenu" id="javaTimeLocalDateTimes"/>
+                <mb3:serviceAction objectType="demo.JavaTimeTypesMenu" id="javaTimeOffsetDateTimes"/>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="demo.JodaTimeTypesMenu" id="jodaTimeLocalDates"/>
+                <mb3:serviceAction objectType="demo.JodaTimeTypesMenu" id="jodaTimeLocalDateTimes"/>
+                <mb3:serviceAction objectType="demo.JodaTimeTypesMenu" id="jodaTimeDateTimes"/>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="demo.IsisTypesMenu" id="isisBlobs"/>
+                <mb3:serviceAction objectType="demo.IsisTypesMenu" id="isisClobs"/>
+                <mb3:serviceAction objectType="demo.IsisTypesMenu" id="isisImages"/>
+                <mb3:serviceAction objectType="demo.IsisTypesMenu" id="isisLocalResourcePaths"/>
+                <mb3:serviceAction objectType="demo.IsisTypesMenu" id="isisPasswords"/>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="demo.IsisExtTypesMenu" id="isisExtAsciiDocs"/>
+                <mb3:serviceAction objectType="demo.IsisExtTypesMenu" id="isisExtMarkdowns"/>
+            </mb3:section>
+        </mb3:menu>
+
+        <mb3:menu>
+            <mb3:named>Data Types (old)</mb3:named>
+            <mb3:section>
                 <mb3:serviceAction objectType="demo.DataTypesMenu" id="text"/>
                 <mb3:serviceAction objectType="demo.DataTypesMenu" id="wrappers"/>
                 <mb3:serviceAction objectType="demo.DataTypesMenu" id="uuid">
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/package.jdo b/examples/demo/domain/src/main/java/demoapp/dom/package.jdo
index 3914f14..f11a7fb 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/package.jdo
+++ b/examples/demo/domain/src/main/java/demoapp/dom/package.jdo
@@ -41,7 +41,7 @@
 	<package name="demoapp.dom.types.primitive.shorts.jdo">
 		<class name="PrimitiveShortJdo" />
 	</package>
-	<package name="demoapp.dom.types.wrapper.characters.jdo">
+	<package name="demoapp.dom.types.javalang.characters.jdo">
 		<class name="WrapperCharacterJdo" />
 	</package>
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/IsisTypesMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/IsisTypesMenu.java
new file mode 100644
index 0000000..6462917
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/IsisTypesMenu.java
@@ -0,0 +1,75 @@
+
+/*
+ *  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 demoapp.dom.types.isis;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.DomainObjectLayout;
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.extern.log4j.Log4j2;
+
+import demoapp.dom.types.isis.blobs.IsisBlobs;
+import demoapp.dom.types.isis.clobs.IsisClobs;
+import demoapp.dom.types.isis.images.IsisImages;
+import demoapp.dom.types.isis.localresourcepaths.IsisLocalResourcePaths;
+import demoapp.dom.types.isis.passwords.IsisPasswords;
+import demoapp.dom.types.javamath.bigdecimals.JavaMathBigDecimals;
+import demoapp.dom.types.javamath.bigintegers.JavaMathBigIntegers;
+
+@DomainService(nature=NatureOfService.VIEW, objectType = "demo.JavaMathTypesMenu")
+@DomainObjectLayout(named="JavaMathTypes")
+@Log4j2
+public class IsisTypesMenu {
+
+    @Action(semantics = SemanticsOf.SAFE)
+    @ActionLayout(cssClassFa="fa-clock")
+    public IsisBlobs isisBlobs(){
+        return new IsisBlobs();
+    }
+
+    @Action(semantics = SemanticsOf.SAFE)
+    @ActionLayout(cssClassFa="fa-clock")
+    public IsisClobs isisClobs(){
+        return new IsisClobs();
+    }
+
+    @Action(semantics = SemanticsOf.SAFE)
+    @ActionLayout(cssClassFa="fa-clock")
+    public IsisImages isisImages(){
+        return new IsisImages();
+    }
+
+    @Action(semantics = SemanticsOf.SAFE)
+    @ActionLayout(cssClassFa="fa-clock")
+    public IsisLocalResourcePaths isisLocalResourcePaths(){
+        return new IsisLocalResourcePaths();
+    }
+
+    @Action(semantics = SemanticsOf.SAFE)
+    @ActionLayout(cssClassFa="fa-clock")
+    public IsisPasswords isisPasswords(){
+        return new IsisPasswords();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/IsisAsciiDocsStream.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/IsisAsciiDocsStream.java
deleted file mode 100644
index 75c6a5c..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/IsisAsciiDocsStream.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.
- */
-package demoapp.dom.types.isis.asciidocs;
-
-import java.util.stream.Stream;
-
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
-
-import demoapp.dom.types.Samples;
-
-@Service
-public class IsisAsciiDocsStream implements Samples<AsciiDoc> {
-
-    @Override
-    public Stream<AsciiDoc> stream() {
-        return Stream.of(null);
-    }
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/WrapperCharacters-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/WrapperCharacters-description.adoc
deleted file mode 100644
index cde7fa9..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/WrapperCharacters-description.adoc
+++ /dev/null
@@ -1,75 +0,0 @@
-The framework has built-in support for all of the Wrapper data types, including `Character`.
-
-From here you can:
-
-* navigate to an entity that uses the `Character` datatype
-* open a view model that uses the `Character` datatype
-
-Some properties on these domain objects are mandatory, some optional.
-
-== Common interface
-
-These objects both implement a common interface, `IsisAsciiDocHolder`:
-
-[source,java]
-----
-include::holder/IsisAsciiDocHolder.java[tags=class]
-----
-
-There is also an extension of this interface, `IsisAsciiDocHolder2`, with default methods demonstrating the use of label positions:
-
-[source,java]
-----
-include::holder/IsisAsciiDocHolder2.java[tags=class]
-----
-
-<.> The default methods have annotations that are automatically inherited.
-<.> Using `@MemberOrder` positions the properties into the appropriate `<field-set>` within the `Xxx.layout.xml` layout file.
-
-
-== Mixin actions
-
-A number of mixin actions contribute through this interface, demonstrate the use of `Character` as a parameter and as a return type.
-For example:
-
-* the `updateReadOnlyProperty` action is:
-+
-[source,java]
-----
-include::holder/IsisAsciiDocHolder_updateReadOnlyProperty.java[tags=class]
-----
-
-* the `updateReadOnlyOptionalProperty` action is:
-+
-[source,java]
-----
-include::holder/IsisAsciiDocHolder_updateReadOnlyOptionalProperty.java[tags=class]
-----
-
-* the `actionReturning` action is:
-+
-[source,java]
-----
-include::holder/IsisAsciiDocHolder_actionReturning.java[tags=class]
-----
-
-
-* the `actionReturningCollection` action is:
-+
-[source,java]
-----
-include::holder/IsisAsciiDocHolder_actionReturningCollection.java[tags=class]
-----
-
-== Mixin properties
-
-We also use the interface to contribute a mixin property:
-
-* the `mixinProperty` property:
-+
-[source,java]
-----
-include::holder/IsisAsciiDocHolder_mixinProperty.java[tags=class]
-----
-
-
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/WrapperCharacters.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/WrapperCharacters.java
deleted file mode 100644
index 26d88fc..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/WrapperCharacters.java
+++ /dev/null
@@ -1,76 +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 demoapp.dom.types.isis.asciidoc;
-
-import java.util.List;
-
-import javax.inject.Inject;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.Collection;
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.Nature;
-import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.extern.log4j.Log4j2;
-
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.isis.asciidoc.jdo.IsisAsciiDocJdoEntities;
-import demoapp.dom.types.isis.asciidoc.jdo.IsisAsciiDocJdo;
-import demoapp.dom.types.isis.asciidoc.vm.IsisAsciiDocVm;
-
-@XmlRootElement(name = "Demo")
-@XmlType
-@XmlAccessorType(XmlAccessType.FIELD)
-@DomainObject(nature=Nature.VIEW_MODEL, objectType = "demo.IsisAsciiDocs", editing=Editing.ENABLED)
-@Log4j2
-public class IsisAsciiDocs implements HasAsciiDocDescription {
-
-    public String title() {
-        return "Character (wrapper) data type";
-    }
-
-    @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public IsisAsciiDocVm openViewModel(Character initialValue) {
-        return new IsisAsciiDocVm(initialValue);
-    }
-    public Character default0OpenViewModel() {
-        return 'a';
-    }
-
-    @Collection
-    public List<IsisAsciiDocJdo> getEntities() {
-        return entities.all();
-    }
-
-    @Inject
-    @XmlTransient
-    IsisAsciiDocJdoEntities entities;
-
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/WrapperCharacters.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/WrapperCharacters.layout.xml
deleted file mode 100644
index 55c5b87..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/WrapperCharacters.layout.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<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="10" unreferencedActions="true">
-			<cpt:domainObject />
-			<cpt:action id="rebuildMetamodel"/>
-		</bs3:col>
-		<bs3:col span="2">
-			<cpt:fieldSet name="" id="sources" />
-		</bs3:col>
-	</bs3:row>
-
-	<bs3:row>
-		<bs3:col span="6">
-			<bs3:row>
-				<bs3:col span="12">
-					<cpt:collection id="entities"/>
-				</bs3:col>
-				<bs3:col span="12">
-					<cpt:action id="openViewModel"/>
-				</bs3:col>
-			</bs3:row>
-			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
-		</bs3:col>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Description" id="description" >
-				<cpt:action id="clearHints" position="PANEL" />
-				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
-				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
-				<cpt:property id="description"/>
-			</cpt:fieldSet>
-		</bs3:col>
-	</bs3:row>
-	<bs3:row>
-		<bs3:col span="12" unreferencedCollections="true"/>
-	</bs3:row>
-
-</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder.java
deleted file mode 100644
index 0f398e3..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder.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.
- */
-package demoapp.dom.types.isis.asciidoc.holder;
-
-//tag::class[]
-public interface IsisAsciiDocHolder {
-
-    Character getReadOnlyProperty();
-    void setReadOnlyProperty(Character c);
-
-    Character getReadWriteProperty();
-    void setReadWriteProperty(Character c);
-
-    Character getReadOnlyOptionalProperty();
-    void setReadOnlyOptionalProperty(Character c);
-
-    Character getReadWriteOptionalProperty();
-    void setReadWriteOptionalProperty(Character c);
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder2.java
deleted file mode 100644
index facb48d..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder2.java
+++ /dev/null
@@ -1,76 +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 demoapp.dom.types.isis.asciidoc.holder;
-
-import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Where;
-
-//tag::class[]
-public interface IsisAsciiDocHolder2 extends IsisAsciiDocHolder {
-
-    @Property
-    @PropertyLayout(                                                        // <.>
-            labelPosition = LabelPosition.LEFT,
-            describedAs = "labelPosition=LEFT",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")                  // <.>
-    default Character getReadOnlyPropertyDerivedLabelPositionLeft() {
-        return getReadOnlyProperty();
-    }
-
-    @Property
-    @PropertyLayout(
-            labelPosition = LabelPosition.TOP,
-            describedAs = "labelPosition=TOP",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
-    default Character getReadOnlyPropertyDerivedLabelPositionTop() {
-        return getReadOnlyProperty();
-    }
-
-    @Property
-    @PropertyLayout(
-            labelPosition = LabelPosition.RIGHT,    // TODO: not honoured
-            describedAs = "labelPosition=RIGHT",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
-    default Character getReadOnlyPropertyDerivedLabelPositionRight() {
-        return getReadOnlyProperty();
-    }
-
-    @Property
-    @PropertyLayout(
-            labelPosition = LabelPosition.NONE,
-            describedAs = "labelPosition=NONE",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
-    default Character getReadOnlyPropertyDerivedLabelPositionNone() {
-        return getReadOnlyProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder_actionReturning.java
deleted file mode 100644
index 96b4420..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder_actionReturning.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 demoapp.dom.types.isis.asciidoc.holder;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-
-
-//tag::class[]
-@Action(semantics = SemanticsOf.SAFE)
-@RequiredArgsConstructor
-public class IsisAsciiDocHolder_actionReturning {
-
-    private final IsisAsciiDocHolder holder;
-
-    public Character act() {
-        return holder.getReadOnlyProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder_actionReturningCollection.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder_actionReturningCollection.java
deleted file mode 100644
index 70f0e00..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder_actionReturningCollection.java
+++ /dev/null
@@ -1,48 +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 demoapp.dom.types.isis.asciidoc.holder;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.stream.Stream;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-import lombok.val;
-
-
-//tag::class[]
-@Action(semantics = SemanticsOf.SAFE)
-@RequiredArgsConstructor
-public class IsisAsciiDocHolder_actionReturningCollection {
-
-    private final IsisAsciiDocHolder holder;
-
-    public Collection<Character> act() {
-        final Collection<Character> characters = new ArrayList<>();
-        val initial = holder.getReadOnlyProperty();
-        Stream.of(0, 1, 2, 3).forEach(x ->
-                characters.add((char) (initial + x))
-        );
-        return characters;
-    }
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder_mixinProperty.java
deleted file mode 100644
index 49fba06..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder_mixinProperty.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 demoapp.dom.types.isis.asciidoc.holder;
-
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Where;
-
-import lombok.RequiredArgsConstructor;
-
-import demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder;
-
-
-//tag::class[]
-@Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
-@RequiredArgsConstructor
-public class IsisAsciiDocHolder_mixinProperty {
-
-    private final IsisAsciiDocHolder holder;
-
-    @MemberOrder(name = "contributed", sequence = "1")
-    public Character prop() {
-        return holder.getReadOnlyProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java
deleted file mode 100644
index 34c3914..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java
+++ /dev/null
@@ -1,55 +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 demoapp.dom.types.isis.asciidoc.holder;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Parameter;
-import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-
-
-//tag::class[]
-@Action(
-        semantics = SemanticsOf.IDEMPOTENT,
-        associateWith = "readOnlyOptionalProperty",
-        associateWithSequence = "1"
-)
-@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update")
-@RequiredArgsConstructor
-public class IsisAsciiDocHolder_updateReadOnlyOptionalProperty {
-
-    private final IsisAsciiDocHolder holder;
-
-    public IsisAsciiDocHolder act(
-            @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            Character newValue
-    ) {
-        holder.setReadOnlyOptionalProperty(newValue);
-        return holder;
-    }
-    public Character default0Act() {
-        return holder.getReadOnlyOptionalProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder_updateReadOnlyProperty.java
deleted file mode 100644
index 883394e..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder_updateReadOnlyProperty.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 demoapp.dom.types.isis.asciidoc.holder;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-
-
-//tag::class[]
-@Action(
-        semantics = SemanticsOf.IDEMPOTENT,
-        associateWith = "readOnlyProperty",
-        associateWithSequence = "1"
-)
-@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update")
-@RequiredArgsConstructor
-public class IsisAsciiDocHolder_updateReadOnlyProperty {
-
-    private final IsisAsciiDocHolder holder;
-
-    public IsisAsciiDocHolder act(Character newValue) {
-        holder.setReadOnlyProperty(newValue);
-        return holder;
-    }
-    public Character default0Act() {
-        return holder.getReadOnlyProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder_updateReadOnlyPropertyWithChoices.java
deleted file mode 100644
index 9782b10..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/holder/WrapperCharacterHolder_updateReadOnlyPropertyWithChoices.java
+++ /dev/null
@@ -1,58 +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 demoapp.dom.types.isis.asciidoc.holder;
-
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-
-
-//tag::class[]
-@Action(
-        semantics = SemanticsOf.IDEMPOTENT,
-        associateWith = "readOnlyProperty",
-        associateWithSequence = "2"
-)
-@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update with choices")
-@RequiredArgsConstructor
-public class IsisAsciiDocHolder_updateReadOnlyPropertyWithChoices {
-
-    private final IsisAsciiDocHolder holder;
-
-    public IsisAsciiDocHolder act(Character newValue) {
-        holder.setReadOnlyProperty(newValue);
-        return holder;
-    }
-    public Character default0Act() {
-        return holder.getReadOnlyProperty();
-    }
-    public List<Character> choices0Act() {
-        return Stream.of('a', 'b', 'c')
-                .collect(Collectors.toList());
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/jdo/WrapperCharacterJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/jdo/WrapperCharacterJdo-description.adoc
deleted file mode 100644
index f8b4b0a..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/jdo/WrapperCharacterJdo-description.adoc
+++ /dev/null
@@ -1,15 +0,0 @@
-JDO supports `Character` out-of-the-box, so no special annotations are required.
-
-[source,java]
-----
-include::IsisAsciiDocJdo.java[tags=class]
-----
-<.> a no-arg constructor is introduced by JDO enhancer
-<.> required property as defined to JDO/DataNucleus.
-+
-Apache Isis assumes properties are mandatory, so no additional annotation is required.
-<.> directly editable property as defined to Apache Isis
-<.> optional property as defined to Apache Isis
-<.> optional property as defined to JDO/DataNucleus
-
-
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/jdo/WrapperCharacterJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/jdo/WrapperCharacterJdo.java
deleted file mode 100644
index 12dee6f..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/jdo/WrapperCharacterJdo.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 demoapp.dom.types.isis.asciidoc.jdo;
-
-import javax.jdo.annotations.Column;
-import javax.jdo.annotations.DatastoreIdentity;
-import javax.jdo.annotations.IdGeneratorStrategy;
-import javax.jdo.annotations.IdentityType;
-import javax.jdo.annotations.PersistenceCapable;
-
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Title;
-import org.apache.isis.applib.annotation.Where;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.isis.asciidoc.holder.IsisAsciiDocHolder;
-
-//tag::class[]
-@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
-@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
-@DomainObject(
-        objectType = "demo.IsisAsciiDocJdo"
-)
-public class IsisAsciiDocJdo                                          // <.>
-        implements HasAsciiDocDescription, IsisAsciiDocHolder {
-
-//end::class[]
-    public IsisAsciiDocJdo(Character initialValue) {
-        this.readOnlyProperty = initialValue;
-        this.readWriteProperty = initialValue;
-    }
-
-//tag::class[]
-    @Title(prepend = "Character (wrapper) JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
-    @Column(allowsNull = "false")                                               // <.>
-    @Getter @Setter
-    private Character readOnlyProperty;
-
-    @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
-    @Column(allowsNull = "false")
-    @Getter @Setter
-    private Character readWriteProperty;
-
-    @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
-    @Column(allowsNull = "true")                                                // <.>
-    @Getter @Setter
-    private Character readOnlyOptionalProperty;
-
-    @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
-    @Column(allowsNull = "true")
-    @Getter @Setter
-    private Character readWriteOptionalProperty;
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/jdo/WrapperCharacterJdo.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/jdo/WrapperCharacterJdo.layout.xml
deleted file mode 100644
index 777ee39..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/jdo/WrapperCharacterJdo.layout.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<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="10" unreferencedActions="true">
-			<cpt:domainObject />
-			<cpt:action id="actionReturning"/>
-			<cpt:action id="actionReturningCollection"/>
-			<cpt:action id="rebuildMetamodel"/>
-		</bs3:col>
-		<bs3:col span="2">
-			<cpt:fieldSet name="" id="sources" />
-		</bs3:col>
-	</bs3:row>
-
-	<bs3:row>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Read Only Properties" id="read-only-properties"/>
-			<cpt:fieldSet name="Editable Properties" id="editable-properties"/>
-			<cpt:fieldSet name="Optional Properties" id="optional-properties"/>
-			<cpt:fieldSet name="Label Positions" id="label-positions"/>
-			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
-			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
-		</bs3:col>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Description" id="description" >
-				<cpt:action id="clearHints" position="PANEL" />
-				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
-				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
-				<cpt:property id="description"/>
-			</cpt:fieldSet>
-		</bs3:col>
-	</bs3:row>
-	<bs3:row>
-		<bs3:col span="12" unreferencedCollections="true"/>
-	</bs3:row>
-
-</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/jdo/WrapperCharacterJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/jdo/WrapperCharacterJdoEntities.java
deleted file mode 100644
index ef29c50..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/jdo/WrapperCharacterJdoEntities.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package demoapp.dom.types.isis.asciidoc.jdo;
-
-import java.util.List;
-import java.util.Optional;
-
-import javax.inject.Inject;
-
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.services.repository.RepositoryService;
-
-@Service
-public class IsisAsciiDocJdoEntities {
-
-    public Optional<IsisAsciiDocJdo> find(final Character readOnlyProperty) {
-        return repositoryService.firstMatch(IsisAsciiDocJdo.class, x -> x.getReadOnlyProperty() == readOnlyProperty);
-    }
-
-    public List<IsisAsciiDocJdo> all() {
-        return repositoryService.allInstances(IsisAsciiDocJdo.class);
-    }
-
-    @Inject
-    RepositoryService repositoryService;
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/jdo/WrapperCharacterJdoSeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/jdo/WrapperCharacterJdoSeedService.java
deleted file mode 100644
index 5e92bf4..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/jdo/WrapperCharacterJdoSeedService.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package demoapp.dom.types.isis.asciidoc.jdo;
-
-import java.util.stream.Stream;
-
-import javax.inject.Inject;
-
-import org.springframework.context.event.EventListener;
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.services.repository.RepositoryService;
-import org.apache.isis.core.runtime.events.app.AppLifecycleEvent;
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
-
-@Service
-public class IsisAsciiDocJdoSeedService {
-
-    @EventListener(AppLifecycleEvent.class)
-    public void onAppLifecycleEvent(AppLifecycleEvent event) {
-
-        if (event.getEventType() == AppLifecycleEvent.EventType.appPostMetamodel) {
-            fixtureScripts.run(new IsisAsciiDocJdoEntityFixture());
-        }
-    }
-
-    @Inject
-    FixtureScripts fixtureScripts;
-
-    static class IsisAsciiDocJdoEntityFixture extends FixtureScript {
-
-        @Override
-        protected void execute(ExecutionContext executionContext) {
-            Stream.of('a', 'b', 'c')
-                    .map(IsisAsciiDocJdo::new)
-                    .forEach(repositoryService::persist);
-        }
-
-        @Inject
-        RepositoryService repositoryService;
-
-    }
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/vm/WrapperCharacterVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/vm/WrapperCharacterVm-description.adoc
deleted file mode 100644
index de82f6a..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/vm/WrapperCharacterVm-description.adoc
+++ /dev/null
@@ -1,13 +0,0 @@
-JAXB supports `Character` out-of-the-box, so no special annotations are required.
-
-[source,java]
-----
-include::IsisAsciiDocVm.java[tags=class]
-----
-<.> a no-arg constructor is required by JAXB
-<.> required property as defined to JAXB
-<.> directly editable property as defined to Apache Isis
-<.> optional property as defined to Apache Isis.
-+
-This is the default for JAXB so no additional annotation required.
-
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/vm/WrapperCharacterVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/vm/WrapperCharacterVm.java
deleted file mode 100644
index 2814ca0..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/vm/WrapperCharacterVm.java
+++ /dev/null
@@ -1,85 +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 demoapp.dom.types.isis.asciidoc.vm;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Nature;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Title;
-import org.apache.isis.applib.annotation.Where;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.isis.asciidoc.holder.IsisAsciiDocHolder;
-
-//tag::class[]
-@XmlRootElement(name = "root")
-@XmlType
-@XmlAccessorType(XmlAccessType.FIELD)
-@DomainObject(
-        nature=Nature.VIEW_MODEL,
-        objectType = "demo.IsisAsciiDocVm"
-)
-@lombok.NoArgsConstructor                                                       // <.>
-public class IsisAsciiDocVm
-        implements HasAsciiDocDescription, IsisAsciiDocHolder {
-
-//end::class[]
-    public IsisAsciiDocVm(Character initialValue) {
-        this.readOnlyProperty = initialValue;
-        this.readWriteProperty = initialValue;
-    }
-
-//tag::class[]
-    @Title(prepend = "Character (wrapper) view model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
-    @XmlElement(required = true)                                                // <.>
-    @Getter @Setter
-    private Character readOnlyProperty;
-
-    @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
-    @XmlElement(required = true)
-    @Getter @Setter
-    private Character readWriteProperty;
-
-    @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
-    @Getter @Setter
-    private Character readOnlyOptionalProperty;
-
-    @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
-    @Getter @Setter
-    private Character readWriteOptionalProperty;
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/vm/WrapperCharacterVm.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/vm/WrapperCharacterVm.layout.xml
deleted file mode 100644
index 777ee39..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/asciidocs/vm/WrapperCharacterVm.layout.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<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="10" unreferencedActions="true">
-			<cpt:domainObject />
-			<cpt:action id="actionReturning"/>
-			<cpt:action id="actionReturningCollection"/>
-			<cpt:action id="rebuildMetamodel"/>
-		</bs3:col>
-		<bs3:col span="2">
-			<cpt:fieldSet name="" id="sources" />
-		</bs3:col>
-	</bs3:row>
-
-	<bs3:row>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Read Only Properties" id="read-only-properties"/>
-			<cpt:fieldSet name="Editable Properties" id="editable-properties"/>
-			<cpt:fieldSet name="Optional Properties" id="optional-properties"/>
-			<cpt:fieldSet name="Label Positions" id="label-positions"/>
-			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
-			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
-		</bs3:col>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Description" id="description" >
-				<cpt:action id="clearHints" position="PANEL" />
-				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
-				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
-				<cpt:property id="description"/>
-			</cpt:fieldSet>
-		</bs3:col>
-	</bs3:row>
-	<bs3:row>
-		<bs3:col span="12" unreferencedCollections="true"/>
-	</bs3:row>
-
-</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobs-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobs-description.adoc
new file mode 100644
index 0000000..67972a4
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobs-description.adoc
@@ -0,0 +1,75 @@
+The framework has built-in support for all of the Wrapper data types, including `Blob`.
+
+From here you can:
+
+* navigate to an entity that uses the `Blob` datatype
+* open a view model that uses the `Blob` datatype
+
+Some properties on these domain objects are mandatory, some optional.
+
+== Common interface
+
+These objects both implement a common interface, `IsisBlobHolder`:
+
+[source,java]
+----
+include::holder/IsisBlobHolder.java[tags=class]
+----
+
+There is also an extension of this interface, `IsisBlobHolder2`, with default methods demonstrating the use of label positions:
+
+[source,java]
+----
+include::holder/IsisBlobHolder2.java[tags=class]
+----
+
+<.> The default methods have annotations that are automatically inherited.
+<.> Using `@MemberOrder` positions the properties into the appropriate `<field-set>` within the `Xxx.layout.xml` layout file.
+
+
+== Mixin actions
+
+A number of mixin actions contribute through this interface, demonstrate the use of `Blob` as a parameter and as a return type.
+For example:
+
+* the `updateReadOnlyProperty` action is:
++
+[source,java]
+----
+include::holder/IsisBlobHolder_updateReadOnlyProperty.java[tags=class]
+----
+
+* the `updateReadOnlyOptionalProperty` action is:
++
+[source,java]
+----
+include::holder/IsisBlobHolder_updateReadOnlyOptionalProperty.java[tags=class]
+----
+
+* the `actionReturning` action is:
++
+[source,java]
+----
+include::holder/IsisBlobHolder_actionReturning.java[tags=class]
+----
+
+
+* the `actionReturningCollection` action is:
++
+[source,java]
+----
+include::holder/IsisBlobHolder_actionReturningCollection.java[tags=class]
+----
+
+== Mixin properties
+
+We also use the interface to contribute a mixin property:
+
+* the `mixinProperty` property:
++
+[source,java]
+----
+include::holder/IsisBlobHolder_mixinProperty.java[tags=class]
+----
+
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobs.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobs.java
new file mode 100644
index 0000000..3174f08
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobs.java
@@ -0,0 +1,81 @@
+/*
+ *  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 demoapp.dom.types.isis.blobs;
+
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.Blob;
+
+import lombok.extern.log4j.Log4j2;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.Samples;
+import demoapp.dom.types.isis.blobs.jdo.IsisBlobJdoEntities;
+import demoapp.dom.types.isis.blobs.jdo.IsisBlobJdo;
+import demoapp.dom.types.isis.blobs.vm.IsisBlobVm;
+
+@XmlRootElement(name = "Demo")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(nature=Nature.VIEW_MODEL, objectType = "demo.IsisBlobs", editing=Editing.ENABLED)
+@Log4j2
+public class IsisBlobs implements HasAsciiDocDescription {
+
+    public String title() {
+        return "Blob data type";
+    }
+
+    @Action(semantics = SemanticsOf.SAFE)
+    @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
+    public IsisBlobVm openViewModel(Blob initialValue) {
+        return new IsisBlobVm(initialValue);
+    }
+    public Blob default0OpenViewModel() {
+        return samples.single();
+    }
+
+    @Collection
+    public List<IsisBlobJdo> getEntities() {
+        return entities.all();
+    }
+
+    @Inject
+    @XmlTransient
+    IsisBlobJdoEntities entities;
+
+    @Inject
+    @XmlTransient
+    Samples<Blob> samples;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/shorts/WrapperShorts.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobs.layout.xml
similarity index 100%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/shorts/WrapperShorts.layout.xml
copy to examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobs.layout.xml
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobsSamples.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobsSamples.java
new file mode 100644
index 0000000..bbc97ff
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobsSamples.java
@@ -0,0 +1,37 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.isis.blobs;
+
+import java.util.stream.Stream;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.value.Blob;
+
+import demoapp.dom.types.Samples;
+
+@Service
+public class IsisBlobsSamples implements Samples<Blob> {
+
+    @Override
+    public Stream<Blob> stream() {
+        return Stream.of();
+    }
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobsStream.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobsStream.java
deleted file mode 100644
index 5b93fad..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobsStream.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.
- */
-package demoapp.dom.types.isis.blobs;
-
-import java.util.stream.Stream;
-
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.value.Blob;
-
-import demoapp.dom.types.Samples;
-
-@Service
-public class IsisBlobsStream implements Samples<Blob> {
-
-    @Override
-    public Stream<Blob> stream() {
-        return Stream.of(null);
-    }
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/WrapperCharacters-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/WrapperCharacters-description.adoc
deleted file mode 100644
index 34367a5..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/WrapperCharacters-description.adoc
+++ /dev/null
@@ -1,75 +0,0 @@
-The framework has built-in support for all of the Wrapper data types, including `Character`.
-
-From here you can:
-
-* navigate to an entity that uses the `Character` datatype
-* open a view model that uses the `Character` datatype
-
-Some properties on these domain objects are mandatory, some optional.
-
-== Common interface
-
-These objects both implement a common interface, `IsisBlobHolder`:
-
-[source,java]
-----
-include::holder/IsisBlobHolder.java[tags=class]
-----
-
-There is also an extension of this interface, `IsisBlobHolder2`, with default methods demonstrating the use of label positions:
-
-[source,java]
-----
-include::holder/IsisBlobHolder2.java[tags=class]
-----
-
-<.> The default methods have annotations that are automatically inherited.
-<.> Using `@MemberOrder` positions the properties into the appropriate `<field-set>` within the `Xxx.layout.xml` layout file.
-
-
-== Mixin actions
-
-A number of mixin actions contribute through this interface, demonstrate the use of `Character` as a parameter and as a return type.
-For example:
-
-* the `updateReadOnlyProperty` action is:
-+
-[source,java]
-----
-include::holder/IsisBlobHolder_updateReadOnlyProperty.java[tags=class]
-----
-
-* the `updateReadOnlyOptionalProperty` action is:
-+
-[source,java]
-----
-include::holder/IsisBlobHolder_updateReadOnlyOptionalProperty.java[tags=class]
-----
-
-* the `actionReturning` action is:
-+
-[source,java]
-----
-include::holder/IsisBlobHolder_actionReturning.java[tags=class]
-----
-
-
-* the `actionReturningCollection` action is:
-+
-[source,java]
-----
-include::holder/IsisBlobHolder_actionReturningCollection.java[tags=class]
-----
-
-== Mixin properties
-
-We also use the interface to contribute a mixin property:
-
-* the `mixinProperty` property:
-+
-[source,java]
-----
-include::holder/IsisBlobHolder_mixinProperty.java[tags=class]
-----
-
-
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/WrapperCharacters.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/WrapperCharacters.java
deleted file mode 100644
index 227cbf0..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/WrapperCharacters.java
+++ /dev/null
@@ -1,76 +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 demoapp.dom.types.isis.blobs;
-
-import java.util.List;
-
-import javax.inject.Inject;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.Collection;
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.Nature;
-import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.extern.log4j.Log4j2;
-
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.isis.blobs.jdo.IsisBlobJdoEntities;
-import demoapp.dom.types.isis.blobs.jdo.IsisBlobJdo;
-import demoapp.dom.types.isis.blobs.vm.IsisBlobVm;
-
-@XmlRootElement(name = "Demo")
-@XmlType
-@XmlAccessorType(XmlAccessType.FIELD)
-@DomainObject(nature=Nature.VIEW_MODEL, objectType = "demo.IsisBlobs", editing=Editing.ENABLED)
-@Log4j2
-public class IsisBlobs implements HasAsciiDocDescription {
-
-    public String title() {
-        return "Character (wrapper) data type";
-    }
-
-    @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public IsisBlobVm openViewModel(Character initialValue) {
-        return new IsisBlobVm(initialValue);
-    }
-    public Character default0OpenViewModel() {
-        return 'a';
-    }
-
-    @Collection
-    public List<IsisBlobJdo> getEntities() {
-        return entities.all();
-    }
-
-    @Inject
-    @XmlTransient
-    IsisBlobJdoEntities entities;
-
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/WrapperCharacters.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/WrapperCharacters.layout.xml
deleted file mode 100644
index 55c5b87..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/WrapperCharacters.layout.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<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="10" unreferencedActions="true">
-			<cpt:domainObject />
-			<cpt:action id="rebuildMetamodel"/>
-		</bs3:col>
-		<bs3:col span="2">
-			<cpt:fieldSet name="" id="sources" />
-		</bs3:col>
-	</bs3:row>
-
-	<bs3:row>
-		<bs3:col span="6">
-			<bs3:row>
-				<bs3:col span="12">
-					<cpt:collection id="entities"/>
-				</bs3:col>
-				<bs3:col span="12">
-					<cpt:action id="openViewModel"/>
-				</bs3:col>
-			</bs3:row>
-			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
-		</bs3:col>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Description" id="description" >
-				<cpt:action id="clearHints" position="PANEL" />
-				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
-				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
-				<cpt:property id="description"/>
-			</cpt:fieldSet>
-		</bs3:col>
-	</bs3:row>
-	<bs3:row>
-		<bs3:col span="12" unreferencedCollections="true"/>
-	</bs3:row>
-
-</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder.java
new file mode 100644
index 0000000..cc4fae9
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder.java
@@ -0,0 +1,39 @@
+/*
+ *  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 demoapp.dom.types.isis.blobs.holder;
+
+import org.apache.isis.applib.value.Blob;
+
+//tag::class[]
+public interface IsisBlobHolder {
+
+    Blob getReadOnlyProperty();
+    void setReadOnlyProperty(Blob c);
+
+    Blob getReadWriteProperty();
+    void setReadWriteProperty(Blob c);
+
+    Blob getReadOnlyOptionalProperty();
+    void setReadOnlyOptionalProperty(Blob c);
+
+    Blob getReadWriteOptionalProperty();
+    void setReadWriteOptionalProperty(Blob c);
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder2.java
new file mode 100644
index 0000000..43e8645
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder2.java
@@ -0,0 +1,77 @@
+/*
+ *  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 demoapp.dom.types.isis.blobs.holder;
+
+import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.value.Blob;
+
+//tag::class[]
+public interface IsisBlobHolder2 extends IsisBlobHolder {
+
+    @Property
+    @PropertyLayout(                                                        // <.>
+            labelPosition = LabelPosition.LEFT,
+            describedAs = "labelPosition=LEFT",
+            hidden = Where.ALL_TABLES
+    )
+    @MemberOrder(name = "label-positions", sequence = "1")                  // <.>
+    default Blob getReadOnlyPropertyDerivedLabelPositionLeft() {
+        return getReadOnlyProperty();
+    }
+
+    @Property
+    @PropertyLayout(
+            labelPosition = LabelPosition.TOP,
+            describedAs = "labelPosition=TOP",
+            hidden = Where.ALL_TABLES
+    )
+    @MemberOrder(name = "label-positions", sequence = "2")
+    default Blob getReadOnlyPropertyDerivedLabelPositionTop() {
+        return getReadOnlyProperty();
+    }
+
+    @Property
+    @PropertyLayout(
+            labelPosition = LabelPosition.RIGHT,    // TODO: not honoured
+            describedAs = "labelPosition=RIGHT",
+            hidden = Where.ALL_TABLES
+    )
+    @MemberOrder(name = "label-positions", sequence = "3")
+    default Blob getReadOnlyPropertyDerivedLabelPositionRight() {
+        return getReadOnlyProperty();
+    }
+
+    @Property
+    @PropertyLayout(
+            labelPosition = LabelPosition.NONE,
+            describedAs = "labelPosition=NONE",
+            hidden = Where.ALL_TABLES
+    )
+    @MemberOrder(name = "label-positions", sequence = "4")
+    default Blob getReadOnlyPropertyDerivedLabelPositionNone() {
+        return getReadOnlyProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_actionReturning.java
new file mode 100644
index 0000000..2ea911e
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_actionReturning.java
@@ -0,0 +1,40 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.isis.blobs.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.Blob;
+
+import lombok.RequiredArgsConstructor;
+
+
+//tag::class[]
+@Action(semantics = SemanticsOf.SAFE)
+@RequiredArgsConstructor
+public class IsisBlobHolder_actionReturning {
+
+    private final IsisBlobHolder holder;
+
+    public Blob act() {
+        return holder.getReadOnlyProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_actionReturningCollection.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_actionReturningCollection.java
new file mode 100644
index 0000000..392a67a
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_actionReturningCollection.java
@@ -0,0 +1,53 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.isis.blobs.holder;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.Blob;
+
+import lombok.RequiredArgsConstructor;
+import lombok.val;
+
+import demoapp.dom.types.Samples;
+
+
+//tag::class[]
+@Action(semantics = SemanticsOf.SAFE)
+@RequiredArgsConstructor
+public class IsisBlobHolder_actionReturningCollection {
+
+    private final IsisBlobHolder holder;
+
+    public Collection<Blob> act() {
+        return samples.stream()
+                .collect(Collectors.toList());
+    }
+
+    @Inject
+    Samples<Blob> samples;
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_mixinProperty.java
new file mode 100644
index 0000000..abc4a11
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_mixinProperty.java
@@ -0,0 +1,46 @@
+/*
+ *  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 demoapp.dom.types.isis.blobs.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.value.Blob;
+
+import lombok.RequiredArgsConstructor;
+
+import demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder;
+
+
+//tag::class[]
+@Property()
+@PropertyLayout(hidden = Where.ALL_TABLES)
+@RequiredArgsConstructor
+public class IsisBlobHolder_mixinProperty {
+
+    private final IsisBlobHolder holder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public Blob prop() {
+        return holder.getReadOnlyProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyOptionalProperty.java
new file mode 100644
index 0000000..d1d29ff
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyOptionalProperty.java
@@ -0,0 +1,56 @@
+/*
+ *  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 demoapp.dom.types.isis.blobs.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Parameter;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.Blob;
+
+import lombok.RequiredArgsConstructor;
+
+
+//tag::class[]
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyOptionalProperty",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update")
+@RequiredArgsConstructor
+public class IsisBlobHolder_updateReadOnlyOptionalProperty {
+
+    private final IsisBlobHolder holder;
+
+    public IsisBlobHolder act(
+            @Parameter(optionality = Optionality.OPTIONAL)              // <.>
+            Blob newValue
+    ) {
+        holder.setReadOnlyOptionalProperty(newValue);
+        return holder;
+    }
+    public Blob default0Act() {
+        return holder.getReadOnlyOptionalProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyProperty.java
new file mode 100644
index 0000000..489b97d
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyProperty.java
@@ -0,0 +1,51 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.isis.blobs.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.Blob;
+
+import lombok.RequiredArgsConstructor;
+
+
+//tag::class[]
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update")
+@RequiredArgsConstructor
+public class IsisBlobHolder_updateReadOnlyProperty {
+
+    private final IsisBlobHolder holder;
+
+    public IsisBlobHolder act(Blob newValue) {
+        holder.setReadOnlyProperty(newValue);
+        return holder;
+    }
+    public Blob default0Act() {
+        return holder.getReadOnlyProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyPropertyWithChoices.java
new file mode 100644
index 0000000..f5c8d2d
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder_updateReadOnlyPropertyWithChoices.java
@@ -0,0 +1,65 @@
+/*
+ *  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 demoapp.dom.types.isis.blobs.holder;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.Blob;
+
+import lombok.RequiredArgsConstructor;
+
+import demoapp.dom.types.Samples;
+
+
+//tag::class[]
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "2"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update with choices")
+@RequiredArgsConstructor
+public class IsisBlobHolder_updateReadOnlyPropertyWithChoices {
+
+    private final IsisBlobHolder holder;
+
+    public IsisBlobHolder act(Blob newValue) {
+        holder.setReadOnlyProperty(newValue);
+        return holder;
+    }
+    public Blob default0Act() {
+        return holder.getReadOnlyProperty();
+    }
+    public List<Blob> choices0Act() {
+        return samples.stream()
+                .collect(Collectors.toList());
+    }
+
+    @Inject
+    Samples<Blob> samples;
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder.java
deleted file mode 100644
index 56574ae..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder.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.
- */
-package demoapp.dom.types.isis.blobs.holder;
-
-//tag::class[]
-public interface IsisBlobHolder {
-
-    Character getReadOnlyProperty();
-    void setReadOnlyProperty(Character c);
-
-    Character getReadWriteProperty();
-    void setReadWriteProperty(Character c);
-
-    Character getReadOnlyOptionalProperty();
-    void setReadOnlyOptionalProperty(Character c);
-
-    Character getReadWriteOptionalProperty();
-    void setReadWriteOptionalProperty(Character c);
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder2.java
deleted file mode 100644
index 50b936c..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder2.java
+++ /dev/null
@@ -1,76 +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 demoapp.dom.types.isis.blobs.holder;
-
-import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Where;
-
-//tag::class[]
-public interface IsisBlobHolder2 extends IsisBlobHolder {
-
-    @Property
-    @PropertyLayout(                                                        // <.>
-            labelPosition = LabelPosition.LEFT,
-            describedAs = "labelPosition=LEFT",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")                  // <.>
-    default Character getReadOnlyPropertyDerivedLabelPositionLeft() {
-        return getReadOnlyProperty();
-    }
-
-    @Property
-    @PropertyLayout(
-            labelPosition = LabelPosition.TOP,
-            describedAs = "labelPosition=TOP",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
-    default Character getReadOnlyPropertyDerivedLabelPositionTop() {
-        return getReadOnlyProperty();
-    }
-
-    @Property
-    @PropertyLayout(
-            labelPosition = LabelPosition.RIGHT,    // TODO: not honoured
-            describedAs = "labelPosition=RIGHT",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
-    default Character getReadOnlyPropertyDerivedLabelPositionRight() {
-        return getReadOnlyProperty();
-    }
-
-    @Property
-    @PropertyLayout(
-            labelPosition = LabelPosition.NONE,
-            describedAs = "labelPosition=NONE",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
-    default Character getReadOnlyPropertyDerivedLabelPositionNone() {
-        return getReadOnlyProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder_actionReturning.java
deleted file mode 100644
index 8510a26..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder_actionReturning.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 demoapp.dom.types.isis.blobs.holder;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-
-
-//tag::class[]
-@Action(semantics = SemanticsOf.SAFE)
-@RequiredArgsConstructor
-public class IsisBlobHolder_actionReturning {
-
-    private final IsisBlobHolder holder;
-
-    public Character act() {
-        return holder.getReadOnlyProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder_actionReturningCollection.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder_actionReturningCollection.java
deleted file mode 100644
index 011d977..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder_actionReturningCollection.java
+++ /dev/null
@@ -1,48 +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 demoapp.dom.types.isis.blobs.holder;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.stream.Stream;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-import lombok.val;
-
-
-//tag::class[]
-@Action(semantics = SemanticsOf.SAFE)
-@RequiredArgsConstructor
-public class IsisBlobHolder_actionReturningCollection {
-
-    private final IsisBlobHolder holder;
-
-    public Collection<Character> act() {
-        final Collection<Character> characters = new ArrayList<>();
-        val initial = holder.getReadOnlyProperty();
-        Stream.of(0, 1, 2, 3).forEach(x ->
-                characters.add((char) (initial + x))
-        );
-        return characters;
-    }
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder_mixinProperty.java
deleted file mode 100644
index ec71d5e..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder_mixinProperty.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 demoapp.dom.types.isis.blobs.holder;
-
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Where;
-
-import lombok.RequiredArgsConstructor;
-
-import demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder;
-
-
-//tag::class[]
-@Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
-@RequiredArgsConstructor
-public class IsisBlobHolder_mixinProperty {
-
-    private final IsisBlobHolder holder;
-
-    @MemberOrder(name = "contributed", sequence = "1")
-    public Character prop() {
-        return holder.getReadOnlyProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java
deleted file mode 100644
index 26fad1e..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java
+++ /dev/null
@@ -1,55 +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 demoapp.dom.types.isis.blobs.holder;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Parameter;
-import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-
-
-//tag::class[]
-@Action(
-        semantics = SemanticsOf.IDEMPOTENT,
-        associateWith = "readOnlyOptionalProperty",
-        associateWithSequence = "1"
-)
-@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update")
-@RequiredArgsConstructor
-public class IsisBlobHolder_updateReadOnlyOptionalProperty {
-
-    private final IsisBlobHolder holder;
-
-    public IsisBlobHolder act(
-            @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            Character newValue
-    ) {
-        holder.setReadOnlyOptionalProperty(newValue);
-        return holder;
-    }
-    public Character default0Act() {
-        return holder.getReadOnlyOptionalProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder_updateReadOnlyProperty.java
deleted file mode 100644
index 8930bf4..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder_updateReadOnlyProperty.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 demoapp.dom.types.isis.blobs.holder;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-
-
-//tag::class[]
-@Action(
-        semantics = SemanticsOf.IDEMPOTENT,
-        associateWith = "readOnlyProperty",
-        associateWithSequence = "1"
-)
-@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update")
-@RequiredArgsConstructor
-public class IsisBlobHolder_updateReadOnlyProperty {
-
-    private final IsisBlobHolder holder;
-
-    public IsisBlobHolder act(Character newValue) {
-        holder.setReadOnlyProperty(newValue);
-        return holder;
-    }
-    public Character default0Act() {
-        return holder.getReadOnlyProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder_updateReadOnlyPropertyWithChoices.java
deleted file mode 100644
index b4056de..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/WrapperCharacterHolder_updateReadOnlyPropertyWithChoices.java
+++ /dev/null
@@ -1,58 +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 demoapp.dom.types.isis.blobs.holder;
-
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-
-
-//tag::class[]
-@Action(
-        semantics = SemanticsOf.IDEMPOTENT,
-        associateWith = "readOnlyProperty",
-        associateWithSequence = "2"
-)
-@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update with choices")
-@RequiredArgsConstructor
-public class IsisBlobHolder_updateReadOnlyPropertyWithChoices {
-
-    private final IsisBlobHolder holder;
-
-    public IsisBlobHolder act(Character newValue) {
-        holder.setReadOnlyProperty(newValue);
-        return holder;
-    }
-    public Character default0Act() {
-        return holder.getReadOnlyProperty();
-    }
-    public List<Character> choices0Act() {
-        return Stream.of('a', 'b', 'c')
-                .collect(Collectors.toList());
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/IsisBlobJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/IsisBlobJdo-description.adoc
new file mode 100644
index 0000000..c130947
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/IsisBlobJdo-description.adoc
@@ -0,0 +1,15 @@
+JDO supports `Blob` out-of-the-box, so no special annotations are required.
+
+[source,java]
+----
+include::IsisBlobJdo.java[tags=class]
+----
+<.> a no-arg constructor is introduced by JDO enhancer
+<.> required property as defined to JDO/DataNucleus.
++
+Apache Isis assumes properties are mandatory, so no additional annotation is required.
+<.> directly editable property as defined to Apache Isis
+<.> optional property as defined to Apache Isis
+<.> optional property as defined to JDO/DataNucleus
+
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/IsisBlobJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/IsisBlobJdo.java
new file mode 100644
index 0000000..4414c1b
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/IsisBlobJdo.java
@@ -0,0 +1,84 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.isis.blobs.jdo;
+
+import javax.jdo.annotations.Column;
+import javax.jdo.annotations.DatastoreIdentity;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.PersistenceCapable;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.value.Blob;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.isis.blobs.holder.IsisBlobHolder;
+
+//tag::class[]
+@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@DomainObject(
+        objectType = "demo.IsisBlobJdo"
+)
+public class IsisBlobJdo                                          // <.>
+        implements HasAsciiDocDescription, IsisBlobHolder {
+
+//end::class[]
+    public IsisBlobJdo(Blob initialValue) {
+        this.readOnlyProperty = initialValue;
+        this.readWriteProperty = initialValue;
+    }
+
+//tag::class[]
+    @Title(prepend = "Blob JDO entity: ")
+    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @Column(allowsNull = "false")                                               // <.>
+    @Getter @Setter
+    private Blob readOnlyProperty;
+
+    @Property(editing = Editing.ENABLED)                                        // <.>
+    @MemberOrder(name = "editable-properties", sequence = "1")
+    @Column(allowsNull = "false")
+    @Getter @Setter
+    private Blob readWriteProperty;
+
+    @Property(optionality = Optionality.OPTIONAL)                               // <.>
+    @MemberOrder(name = "optional-properties", sequence = "1")
+    @Column(allowsNull = "true")                                                // <.>
+    @Getter @Setter
+    private Blob readOnlyOptionalProperty;
+
+    @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
+    @MemberOrder(name = "optional-properties", sequence = "2")
+    @Column(allowsNull = "true")
+    @Getter @Setter
+    private Blob readWriteOptionalProperty;
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/shorts/vm/WrapperShortVm.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/IsisBlobJdo.layout.xml
similarity index 100%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/shorts/vm/WrapperShortVm.layout.xml
copy to examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/IsisBlobJdo.layout.xml
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/IsisBlobJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/IsisBlobJdoEntities.java
new file mode 100644
index 0000000..0afdd80
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/IsisBlobJdoEntities.java
@@ -0,0 +1,27 @@
+package demoapp.dom.types.isis.blobs.jdo;
+
+import java.util.List;
+import java.util.Optional;
+
+import javax.inject.Inject;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.applib.value.Blob;
+
+@Service
+public class IsisBlobJdoEntities {
+
+    public Optional<IsisBlobJdo> find(final Blob readOnlyProperty) {
+        return repositoryService.firstMatch(IsisBlobJdo.class, x -> x.getReadOnlyProperty() == readOnlyProperty);
+    }
+
+    public List<IsisBlobJdo> all() {
+        return repositoryService.allInstances(IsisBlobJdo.class);
+    }
+
+    @Inject
+    RepositoryService repositoryService;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/IsisBlobJdoSeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/IsisBlobJdoSeedService.java
new file mode 100644
index 0000000..81e98ab
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/IsisBlobJdoSeedService.java
@@ -0,0 +1,47 @@
+package demoapp.dom.types.isis.blobs.jdo;
+
+import java.util.stream.Stream;
+
+import javax.inject.Inject;
+
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.applib.value.Blob;
+import org.apache.isis.core.runtime.events.app.AppLifecycleEvent;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
+
+import demoapp.dom.types.Samples;
+
+@Service
+public class IsisBlobJdoSeedService {
+
+    @EventListener(AppLifecycleEvent.class)
+    public void onAppLifecycleEvent(AppLifecycleEvent event) {
+
+        if (event.getEventType() == AppLifecycleEvent.EventType.appPostMetamodel) {
+            fixtureScripts.run(new IsisBlobJdoEntityFixture());
+        }
+    }
+
+    @Inject
+    FixtureScripts fixtureScripts;
+
+    static class IsisBlobJdoEntityFixture extends FixtureScript {
+
+        @Override
+        protected void execute(ExecutionContext executionContext) {
+            samples.stream()
+                    .map(IsisBlobJdo::new)
+                    .forEach(repositoryService::persist);
+        }
+
+        @Inject
+        RepositoryService repositoryService;
+
+        @Inject
+        Samples<Blob> samples;
+    }
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/WrapperCharacterJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/WrapperCharacterJdo-description.adoc
deleted file mode 100644
index 78683ad..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/WrapperCharacterJdo-description.adoc
+++ /dev/null
@@ -1,15 +0,0 @@
-JDO supports `Character` out-of-the-box, so no special annotations are required.
-
-[source,java]
-----
-include::IsisBlobJdo.java[tags=class]
-----
-<.> a no-arg constructor is introduced by JDO enhancer
-<.> required property as defined to JDO/DataNucleus.
-+
-Apache Isis assumes properties are mandatory, so no additional annotation is required.
-<.> directly editable property as defined to Apache Isis
-<.> optional property as defined to Apache Isis
-<.> optional property as defined to JDO/DataNucleus
-
-
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/WrapperCharacterJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/WrapperCharacterJdo.java
deleted file mode 100644
index 50014d2..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/WrapperCharacterJdo.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 demoapp.dom.types.isis.blobs.jdo;
-
-import javax.jdo.annotations.Column;
-import javax.jdo.annotations.DatastoreIdentity;
-import javax.jdo.annotations.IdGeneratorStrategy;
-import javax.jdo.annotations.IdentityType;
-import javax.jdo.annotations.PersistenceCapable;
-
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Title;
-import org.apache.isis.applib.annotation.Where;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.isis.blobs.holder.IsisBlobHolder;
-
-//tag::class[]
-@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
-@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
-@DomainObject(
-        objectType = "demo.IsisBlobJdo"
-)
-public class IsisBlobJdo                                          // <.>
-        implements HasAsciiDocDescription, IsisBlobHolder {
-
-//end::class[]
-    public IsisBlobJdo(Character initialValue) {
-        this.readOnlyProperty = initialValue;
-        this.readWriteProperty = initialValue;
-    }
-
-//tag::class[]
-    @Title(prepend = "Character (wrapper) JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
-    @Column(allowsNull = "false")                                               // <.>
-    @Getter @Setter
-    private Character readOnlyProperty;
-
-    @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
-    @Column(allowsNull = "false")
-    @Getter @Setter
-    private Character readWriteProperty;
-
-    @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
-    @Column(allowsNull = "true")                                                // <.>
-    @Getter @Setter
-    private Character readOnlyOptionalProperty;
-
-    @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
-    @Column(allowsNull = "true")
-    @Getter @Setter
-    private Character readWriteOptionalProperty;
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/WrapperCharacterJdo.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/WrapperCharacterJdo.layout.xml
deleted file mode 100644
index 777ee39..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/WrapperCharacterJdo.layout.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<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="10" unreferencedActions="true">
-			<cpt:domainObject />
-			<cpt:action id="actionReturning"/>
-			<cpt:action id="actionReturningCollection"/>
-			<cpt:action id="rebuildMetamodel"/>
-		</bs3:col>
-		<bs3:col span="2">
-			<cpt:fieldSet name="" id="sources" />
-		</bs3:col>
-	</bs3:row>
-
-	<bs3:row>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Read Only Properties" id="read-only-properties"/>
-			<cpt:fieldSet name="Editable Properties" id="editable-properties"/>
-			<cpt:fieldSet name="Optional Properties" id="optional-properties"/>
-			<cpt:fieldSet name="Label Positions" id="label-positions"/>
-			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
-			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
-		</bs3:col>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Description" id="description" >
-				<cpt:action id="clearHints" position="PANEL" />
-				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
-				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
-				<cpt:property id="description"/>
-			</cpt:fieldSet>
-		</bs3:col>
-	</bs3:row>
-	<bs3:row>
-		<bs3:col span="12" unreferencedCollections="true"/>
-	</bs3:row>
-
-</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/WrapperCharacterJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/WrapperCharacterJdoEntities.java
deleted file mode 100644
index ddb7c01..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/WrapperCharacterJdoEntities.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package demoapp.dom.types.isis.blobs.jdo;
-
-import java.util.List;
-import java.util.Optional;
-
-import javax.inject.Inject;
-
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.services.repository.RepositoryService;
-
-@Service
-public class IsisBlobJdoEntities {
-
-    public Optional<IsisBlobJdo> find(final Character readOnlyProperty) {
-        return repositoryService.firstMatch(IsisBlobJdo.class, x -> x.getReadOnlyProperty() == readOnlyProperty);
-    }
-
-    public List<IsisBlobJdo> all() {
-        return repositoryService.allInstances(IsisBlobJdo.class);
-    }
-
-    @Inject
-    RepositoryService repositoryService;
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/WrapperCharacterJdoSeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/WrapperCharacterJdoSeedService.java
deleted file mode 100644
index cdd0cb3..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/jdo/WrapperCharacterJdoSeedService.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package demoapp.dom.types.isis.blobs.jdo;
-
-import java.util.stream.Stream;
-
-import javax.inject.Inject;
-
-import org.springframework.context.event.EventListener;
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.services.repository.RepositoryService;
-import org.apache.isis.core.runtime.events.app.AppLifecycleEvent;
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
-
-@Service
-public class IsisBlobJdoSeedService {
-
-    @EventListener(AppLifecycleEvent.class)
-    public void onAppLifecycleEvent(AppLifecycleEvent event) {
-
-        if (event.getEventType() == AppLifecycleEvent.EventType.appPostMetamodel) {
-            fixtureScripts.run(new IsisBlobJdoEntityFixture());
-        }
-    }
-
-    @Inject
-    FixtureScripts fixtureScripts;
-
-    static class IsisBlobJdoEntityFixture extends FixtureScript {
-
-        @Override
-        protected void execute(ExecutionContext executionContext) {
-            Stream.of('a', 'b', 'c')
-                    .map(IsisBlobJdo::new)
-                    .forEach(repositoryService::persist);
-        }
-
-        @Inject
-        RepositoryService repositoryService;
-
-    }
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/IsisBlobVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/IsisBlobVm-description.adoc
new file mode 100644
index 0000000..e986270
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/IsisBlobVm-description.adoc
@@ -0,0 +1,13 @@
+JAXB supports `Blob` out-of-the-box, so no special annotations are required.
+
+[source,java]
+----
+include::IsisBlobVm.java[tags=class]
+----
+<.> a no-arg constructor is required by JAXB
+<.> required property as defined to JAXB
+<.> directly editable property as defined to Apache Isis
+<.> optional property as defined to Apache Isis.
++
+This is the default for JAXB so no additional annotation required.
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/IsisBlobVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/IsisBlobVm.java
new file mode 100644
index 0000000..d7b3439
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/IsisBlobVm.java
@@ -0,0 +1,86 @@
+/*
+ *  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 demoapp.dom.types.isis.blobs.vm;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.value.Blob;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.isis.blobs.holder.IsisBlobHolder;
+
+//tag::class[]
+@XmlRootElement(name = "root")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(
+        nature=Nature.VIEW_MODEL,
+        objectType = "demo.IsisBlobVm"
+)
+@lombok.NoArgsConstructor                                                       // <.>
+public class IsisBlobVm
+        implements HasAsciiDocDescription, IsisBlobHolder {
+
+//end::class[]
+    public IsisBlobVm(Blob initialValue) {
+        this.readOnlyProperty = initialValue;
+        this.readWriteProperty = initialValue;
+    }
+
+//tag::class[]
+    @Title(prepend = "Blob view model: ")
+    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @XmlElement(required = true)                                                // <.>
+    @Getter @Setter
+    private Blob readOnlyProperty;
+
+    @Property(editing = Editing.ENABLED)                                        // <.>
+    @MemberOrder(name = "editable-properties", sequence = "1")
+    @XmlElement(required = true)
+    @Getter @Setter
+    private Blob readWriteProperty;
+
+    @Property(optionality = Optionality.OPTIONAL)                               // <.>
+    @MemberOrder(name = "optional-properties", sequence = "1")
+    @Getter @Setter
+    private Blob readOnlyOptionalProperty;
+
+    @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
+    @MemberOrder(name = "optional-properties", sequence = "2")
+    @Getter @Setter
+    private Blob readWriteOptionalProperty;
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/shorts/jdo/WrapperShortJdo.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/IsisBlobVm.layout.xml
similarity index 100%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/shorts/jdo/WrapperShortJdo.layout.xml
copy to examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/IsisBlobVm.layout.xml
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/WrapperCharacterVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/WrapperCharacterVm-description.adoc
deleted file mode 100644
index e31cdb5..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/WrapperCharacterVm-description.adoc
+++ /dev/null
@@ -1,13 +0,0 @@
-JAXB supports `Character` out-of-the-box, so no special annotations are required.
-
-[source,java]
-----
-include::IsisBlobVm.java[tags=class]
-----
-<.> a no-arg constructor is required by JAXB
-<.> required property as defined to JAXB
-<.> directly editable property as defined to Apache Isis
-<.> optional property as defined to Apache Isis.
-+
-This is the default for JAXB so no additional annotation required.
-
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/WrapperCharacterVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/WrapperCharacterVm.java
deleted file mode 100644
index 98538fa..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/WrapperCharacterVm.java
+++ /dev/null
@@ -1,85 +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 demoapp.dom.types.isis.blobs.vm;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Nature;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Title;
-import org.apache.isis.applib.annotation.Where;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.isis.blobs.holder.IsisBlobHolder;
-
-//tag::class[]
-@XmlRootElement(name = "root")
-@XmlType
-@XmlAccessorType(XmlAccessType.FIELD)
-@DomainObject(
-        nature=Nature.VIEW_MODEL,
-        objectType = "demo.IsisBlobVm"
-)
-@lombok.NoArgsConstructor                                                       // <.>
-public class IsisBlobVm
-        implements HasAsciiDocDescription, IsisBlobHolder {
-
-//end::class[]
-    public IsisBlobVm(Character initialValue) {
-        this.readOnlyProperty = initialValue;
-        this.readWriteProperty = initialValue;
-    }
-
-//tag::class[]
-    @Title(prepend = "Character (wrapper) view model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
-    @XmlElement(required = true)                                                // <.>
-    @Getter @Setter
-    private Character readOnlyProperty;
-
-    @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
-    @XmlElement(required = true)
-    @Getter @Setter
-    private Character readWriteProperty;
-
-    @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
-    @Getter @Setter
-    private Character readOnlyOptionalProperty;
-
-    @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
-    @Getter @Setter
-    private Character readWriteOptionalProperty;
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/WrapperCharacterVm.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/WrapperCharacterVm.layout.xml
deleted file mode 100644
index 777ee39..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/vm/WrapperCharacterVm.layout.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<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="10" unreferencedActions="true">
-			<cpt:domainObject />
-			<cpt:action id="actionReturning"/>
-			<cpt:action id="actionReturningCollection"/>
-			<cpt:action id="rebuildMetamodel"/>
-		</bs3:col>
-		<bs3:col span="2">
-			<cpt:fieldSet name="" id="sources" />
-		</bs3:col>
-	</bs3:row>
-
-	<bs3:row>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Read Only Properties" id="read-only-properties"/>
-			<cpt:fieldSet name="Editable Properties" id="editable-properties"/>
-			<cpt:fieldSet name="Optional Properties" id="optional-properties"/>
-			<cpt:fieldSet name="Label Positions" id="label-positions"/>
-			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
-			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
-		</bs3:col>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Description" id="description" >
-				<cpt:action id="clearHints" position="PANEL" />
-				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
-				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
-				<cpt:property id="description"/>
-			</cpt:fieldSet>
-		</bs3:col>
-	</bs3:row>
-	<bs3:row>
-		<bs3:col span="12" unreferencedCollections="true"/>
-	</bs3:row>
-
-</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobs-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobs-description.adoc
new file mode 100644
index 0000000..98c76b2
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobs-description.adoc
@@ -0,0 +1,75 @@
+The framework has built-in support for all of the Wrapper data types, including `Clob`.
+
+From here you can:
+
+* navigate to an entity that uses the `Clob` datatype
+* open a view model that uses the `Clob` datatype
+
+Some properties on these domain objects are mandatory, some optional.
+
+== Common interface
+
+These objects both implement a common interface, `IsisClobHolder`:
+
+[source,java]
+----
+include::holder/IsisClobHolder.java[tags=class]
+----
+
+There is also an extension of this interface, `IsisClobHolder2`, with default methods demonstrating the use of label positions:
+
+[source,java]
+----
+include::holder/IsisClobHolder2.java[tags=class]
+----
+
+<.> The default methods have annotations that are automatically inherited.
+<.> Using `@MemberOrder` positions the properties into the appropriate `<field-set>` within the `Xxx.layout.xml` layout file.
+
+
+== Mixin actions
+
+A number of mixin actions contribute through this interface, demonstrate the use of `Clob` as a parameter and as a return type.
+For example:
+
+* the `updateReadOnlyProperty` action is:
++
+[source,java]
+----
+include::holder/IsisClobHolder_updateReadOnlyProperty.java[tags=class]
+----
+
+* the `updateReadOnlyOptionalProperty` action is:
++
+[source,java]
+----
+include::holder/IsisClobHolder_updateReadOnlyOptionalProperty.java[tags=class]
+----
+
+* the `actionReturning` action is:
++
+[source,java]
+----
+include::holder/IsisClobHolder_actionReturning.java[tags=class]
+----
+
+
+* the `actionReturningCollection` action is:
++
+[source,java]
+----
+include::holder/IsisClobHolder_actionReturningCollection.java[tags=class]
+----
+
+== Mixin properties
+
+We also use the interface to contribute a mixin property:
+
+* the `mixinProperty` property:
++
+[source,java]
+----
+include::holder/IsisClobHolder_mixinProperty.java[tags=class]
+----
+
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobs.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobs.java
new file mode 100644
index 0000000..529bd23
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobs.java
@@ -0,0 +1,81 @@
+/*
+ *  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 demoapp.dom.types.isis.clobs;
+
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.Clob;
+
+import lombok.extern.log4j.Log4j2;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.Samples;
+import demoapp.dom.types.isis.clobs.jdo.IsisClobJdoEntities;
+import demoapp.dom.types.isis.clobs.jdo.IsisClobJdo;
+import demoapp.dom.types.isis.clobs.vm.IsisClobVm;
+
+@XmlRootElement(name = "Demo")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(nature=Nature.VIEW_MODEL, objectType = "demo.IsisClobs", editing=Editing.ENABLED)
+@Log4j2
+public class IsisClobs implements HasAsciiDocDescription {
+
+    public String title() {
+        return "Clob data type";
+    }
+
+    @Action(semantics = SemanticsOf.SAFE)
+    @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
+    public IsisClobVm openViewModel(Clob initialValue) {
+        return new IsisClobVm(initialValue);
+    }
+    public Clob default0OpenViewModel() {
+        return samples.single();
+    }
+
+    @Collection
+    public List<IsisClobJdo> getEntities() {
+        return entities.all();
+    }
+
+    @Inject
+    @XmlTransient
+    IsisClobJdoEntities entities;
+
+    @Inject
+    @XmlTransient
+    Samples<Clob> samples;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/longs/WrapperLongs.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobs.layout.xml
similarity index 100%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/longs/WrapperLongs.layout.xml
copy to examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobs.layout.xml
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobsSamples.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobsSamples.java
new file mode 100644
index 0000000..fce73a6
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobsSamples.java
@@ -0,0 +1,37 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.isis.clobs;
+
+import java.util.stream.Stream;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.value.Clob;
+
+import demoapp.dom.types.Samples;
+
+@Service
+public class IsisClobsSamples implements Samples<Clob> {
+
+    @Override
+    public Stream<Clob> stream() {
+        return Stream.of();
+    }
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobsStream.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobsStream.java
deleted file mode 100644
index 3b1ef63..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobsStream.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.
- */
-package demoapp.dom.types.isis.clobs;
-
-import java.util.stream.Stream;
-
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.value.Clob;
-
-import demoapp.dom.types.Samples;
-
-@Service
-public class IsisClobsStream implements Samples<Clob> {
-
-    @Override
-    public Stream<Clob> stream() {
-        return Stream.of(null);
-    }
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/WrapperCharacters-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/WrapperCharacters-description.adoc
deleted file mode 100644
index 1e59b8d..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/WrapperCharacters-description.adoc
+++ /dev/null
@@ -1,75 +0,0 @@
-The framework has built-in support for all of the Wrapper data types, including `Character`.
-
-From here you can:
-
-* navigate to an entity that uses the `Character` datatype
-* open a view model that uses the `Character` datatype
-
-Some properties on these domain objects are mandatory, some optional.
-
-== Common interface
-
-These objects both implement a common interface, `IsisClobHolder`:
-
-[source,java]
-----
-include::holder/IsisClobHolder.java[tags=class]
-----
-
-There is also an extension of this interface, `IsisClobHolder2`, with default methods demonstrating the use of label positions:
-
-[source,java]
-----
-include::holder/IsisClobHolder2.java[tags=class]
-----
-
-<.> The default methods have annotations that are automatically inherited.
-<.> Using `@MemberOrder` positions the properties into the appropriate `<field-set>` within the `Xxx.layout.xml` layout file.
-
-
-== Mixin actions
-
-A number of mixin actions contribute through this interface, demonstrate the use of `Character` as a parameter and as a return type.
-For example:
-
-* the `updateReadOnlyProperty` action is:
-+
-[source,java]
-----
-include::holder/IsisClobHolder_updateReadOnlyProperty.java[tags=class]
-----
-
-* the `updateReadOnlyOptionalProperty` action is:
-+
-[source,java]
-----
-include::holder/IsisClobHolder_updateReadOnlyOptionalProperty.java[tags=class]
-----
-
-* the `actionReturning` action is:
-+
-[source,java]
-----
-include::holder/IsisClobHolder_actionReturning.java[tags=class]
-----
-
-
-* the `actionReturningCollection` action is:
-+
-[source,java]
-----
-include::holder/IsisClobHolder_actionReturningCollection.java[tags=class]
-----
-
-== Mixin properties
-
-We also use the interface to contribute a mixin property:
-
-* the `mixinProperty` property:
-+
-[source,java]
-----
-include::holder/IsisClobHolder_mixinProperty.java[tags=class]
-----
-
-
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/WrapperCharacters.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/WrapperCharacters.java
deleted file mode 100644
index 65a17a2..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/WrapperCharacters.java
+++ /dev/null
@@ -1,76 +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 demoapp.dom.types.isis.clobs;
-
-import java.util.List;
-
-import javax.inject.Inject;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.Collection;
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.Nature;
-import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.extern.log4j.Log4j2;
-
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.isis.clobs.jdo.IsisClobJdoEntities;
-import demoapp.dom.types.isis.clobs.jdo.IsisClobJdo;
-import demoapp.dom.types.isis.clobs.vm.IsisClobVm;
-
-@XmlRootElement(name = "Demo")
-@XmlType
-@XmlAccessorType(XmlAccessType.FIELD)
-@DomainObject(nature=Nature.VIEW_MODEL, objectType = "demo.IsisClobs", editing=Editing.ENABLED)
-@Log4j2
-public class IsisClobs implements HasAsciiDocDescription {
-
-    public String title() {
-        return "Character (wrapper) data type";
-    }
-
-    @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public IsisClobVm openViewModel(Character initialValue) {
-        return new IsisClobVm(initialValue);
-    }
-    public Character default0OpenViewModel() {
-        return 'a';
-    }
-
-    @Collection
-    public List<IsisClobJdo> getEntities() {
-        return entities.all();
-    }
-
-    @Inject
-    @XmlTransient
-    IsisClobJdoEntities entities;
-
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/WrapperCharacters.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/WrapperCharacters.layout.xml
deleted file mode 100644
index 55c5b87..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/WrapperCharacters.layout.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<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="10" unreferencedActions="true">
-			<cpt:domainObject />
-			<cpt:action id="rebuildMetamodel"/>
-		</bs3:col>
-		<bs3:col span="2">
-			<cpt:fieldSet name="" id="sources" />
-		</bs3:col>
-	</bs3:row>
-
-	<bs3:row>
-		<bs3:col span="6">
-			<bs3:row>
-				<bs3:col span="12">
-					<cpt:collection id="entities"/>
-				</bs3:col>
-				<bs3:col span="12">
-					<cpt:action id="openViewModel"/>
-				</bs3:col>
-			</bs3:row>
-			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
-		</bs3:col>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Description" id="description" >
-				<cpt:action id="clearHints" position="PANEL" />
-				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
-				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
-				<cpt:property id="description"/>
-			</cpt:fieldSet>
-		</bs3:col>
-	</bs3:row>
-	<bs3:row>
-		<bs3:col span="12" unreferencedCollections="true"/>
-	</bs3:row>
-
-</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder.java
new file mode 100644
index 0000000..a08709a
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder.java
@@ -0,0 +1,39 @@
+/*
+ *  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 demoapp.dom.types.isis.clobs.holder;
+
+import org.apache.isis.applib.value.Clob;
+
+//tag::class[]
+public interface IsisClobHolder {
+
+    Clob getReadOnlyProperty();
+    void setReadOnlyProperty(Clob c);
+
+    Clob getReadWriteProperty();
+    void setReadWriteProperty(Clob c);
+
+    Clob getReadOnlyOptionalProperty();
+    void setReadOnlyOptionalProperty(Clob c);
+
+    Clob getReadWriteOptionalProperty();
+    void setReadWriteOptionalProperty(Clob c);
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder2.java
new file mode 100644
index 0000000..f9f7a95
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder2.java
@@ -0,0 +1,77 @@
+/*
+ *  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 demoapp.dom.types.isis.clobs.holder;
+
+import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.value.Clob;
+
+//tag::class[]
+public interface IsisClobHolder2 extends IsisClobHolder {
+
+    @Property
+    @PropertyLayout(                                                        // <.>
+            labelPosition = LabelPosition.LEFT,
+            describedAs = "labelPosition=LEFT",
+            hidden = Where.ALL_TABLES
+    )
+    @MemberOrder(name = "label-positions", sequence = "1")                  // <.>
+    default Clob getReadOnlyPropertyDerivedLabelPositionLeft() {
+        return getReadOnlyProperty();
+    }
+
+    @Property
+    @PropertyLayout(
+            labelPosition = LabelPosition.TOP,
+            describedAs = "labelPosition=TOP",
+            hidden = Where.ALL_TABLES
+    )
+    @MemberOrder(name = "label-positions", sequence = "2")
+    default Clob getReadOnlyPropertyDerivedLabelPositionTop() {
+        return getReadOnlyProperty();
+    }
+
+    @Property
+    @PropertyLayout(
+            labelPosition = LabelPosition.RIGHT,    // TODO: not honoured
+            describedAs = "labelPosition=RIGHT",
+            hidden = Where.ALL_TABLES
+    )
+    @MemberOrder(name = "label-positions", sequence = "3")
+    default Clob getReadOnlyPropertyDerivedLabelPositionRight() {
+        return getReadOnlyProperty();
+    }
+
+    @Property
+    @PropertyLayout(
+            labelPosition = LabelPosition.NONE,
+            describedAs = "labelPosition=NONE",
+            hidden = Where.ALL_TABLES
+    )
+    @MemberOrder(name = "label-positions", sequence = "4")
+    default Clob getReadOnlyPropertyDerivedLabelPositionNone() {
+        return getReadOnlyProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_actionReturning.java
new file mode 100644
index 0000000..5069007
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_actionReturning.java
@@ -0,0 +1,40 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.isis.clobs.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.Clob;
+
+import lombok.RequiredArgsConstructor;
+
+
+//tag::class[]
+@Action(semantics = SemanticsOf.SAFE)
+@RequiredArgsConstructor
+public class IsisClobHolder_actionReturning {
+
+    private final IsisClobHolder holder;
+
+    public Clob act() {
+        return holder.getReadOnlyProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_actionReturningCollection.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_actionReturningCollection.java
new file mode 100644
index 0000000..7e91427
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_actionReturningCollection.java
@@ -0,0 +1,53 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.isis.clobs.holder;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.Clob;
+
+import lombok.RequiredArgsConstructor;
+import lombok.val;
+
+import demoapp.dom.types.Samples;
+
+
+//tag::class[]
+@Action(semantics = SemanticsOf.SAFE)
+@RequiredArgsConstructor
+public class IsisClobHolder_actionReturningCollection {
+
+    private final IsisClobHolder holder;
+
+    public Collection<Clob> act() {
+        return samples.stream()
+                .collect(Collectors.toList());
+    }
+
+    @Inject
+    Samples<Clob> samples;
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_mixinProperty.java
new file mode 100644
index 0000000..b2b746c
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_mixinProperty.java
@@ -0,0 +1,46 @@
+/*
+ *  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 demoapp.dom.types.isis.clobs.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.value.Clob;
+
+import lombok.RequiredArgsConstructor;
+
+import demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder;
+
+
+//tag::class[]
+@Property()
+@PropertyLayout(hidden = Where.ALL_TABLES)
+@RequiredArgsConstructor
+public class IsisClobHolder_mixinProperty {
+
+    private final IsisClobHolder holder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public Clob prop() {
+        return holder.getReadOnlyProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyOptionalProperty.java
new file mode 100644
index 0000000..fe7bfd4
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyOptionalProperty.java
@@ -0,0 +1,56 @@
+/*
+ *  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 demoapp.dom.types.isis.clobs.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Parameter;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.Clob;
+
+import lombok.RequiredArgsConstructor;
+
+
+//tag::class[]
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyOptionalProperty",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update")
+@RequiredArgsConstructor
+public class IsisClobHolder_updateReadOnlyOptionalProperty {
+
+    private final IsisClobHolder holder;
+
+    public IsisClobHolder act(
+            @Parameter(optionality = Optionality.OPTIONAL)              // <.>
+            Clob newValue
+    ) {
+        holder.setReadOnlyOptionalProperty(newValue);
+        return holder;
+    }
+    public Clob default0Act() {
+        return holder.getReadOnlyOptionalProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyProperty.java
new file mode 100644
index 0000000..58e1b52
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyProperty.java
@@ -0,0 +1,51 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.isis.clobs.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.Clob;
+
+import lombok.RequiredArgsConstructor;
+
+
+//tag::class[]
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update")
+@RequiredArgsConstructor
+public class IsisClobHolder_updateReadOnlyProperty {
+
+    private final IsisClobHolder holder;
+
+    public IsisClobHolder act(Clob newValue) {
+        holder.setReadOnlyProperty(newValue);
+        return holder;
+    }
+    public Clob default0Act() {
+        return holder.getReadOnlyProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyPropertyWithChoices.java
new file mode 100644
index 0000000..01a42bd
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder_updateReadOnlyPropertyWithChoices.java
@@ -0,0 +1,65 @@
+/*
+ *  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 demoapp.dom.types.isis.clobs.holder;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.Clob;
+
+import lombok.RequiredArgsConstructor;
+
+import demoapp.dom.types.Samples;
+
+
+//tag::class[]
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "2"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update with choices")
+@RequiredArgsConstructor
+public class IsisClobHolder_updateReadOnlyPropertyWithChoices {
+
+    private final IsisClobHolder holder;
+
+    public IsisClobHolder act(Clob newValue) {
+        holder.setReadOnlyProperty(newValue);
+        return holder;
+    }
+    public Clob default0Act() {
+        return holder.getReadOnlyProperty();
+    }
+    public List<Clob> choices0Act() {
+        return samples.stream()
+                .collect(Collectors.toList());
+    }
+
+    @Inject
+    Samples<Clob> samples;
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder.java
deleted file mode 100644
index db7eb1d..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder.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.
- */
-package demoapp.dom.types.isis.clobs.holder;
-
-//tag::class[]
-public interface IsisClobHolder {
-
-    Character getReadOnlyProperty();
-    void setReadOnlyProperty(Character c);
-
-    Character getReadWriteProperty();
-    void setReadWriteProperty(Character c);
-
-    Character getReadOnlyOptionalProperty();
-    void setReadOnlyOptionalProperty(Character c);
-
-    Character getReadWriteOptionalProperty();
-    void setReadWriteOptionalProperty(Character c);
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder2.java
deleted file mode 100644
index 025760c..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder2.java
+++ /dev/null
@@ -1,76 +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 demoapp.dom.types.isis.clobs.holder;
-
-import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Where;
-
-//tag::class[]
-public interface IsisClobHolder2 extends IsisClobHolder {
-
-    @Property
-    @PropertyLayout(                                                        // <.>
-            labelPosition = LabelPosition.LEFT,
-            describedAs = "labelPosition=LEFT",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")                  // <.>
-    default Character getReadOnlyPropertyDerivedLabelPositionLeft() {
-        return getReadOnlyProperty();
-    }
-
-    @Property
-    @PropertyLayout(
-            labelPosition = LabelPosition.TOP,
-            describedAs = "labelPosition=TOP",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
-    default Character getReadOnlyPropertyDerivedLabelPositionTop() {
-        return getReadOnlyProperty();
-    }
-
-    @Property
-    @PropertyLayout(
-            labelPosition = LabelPosition.RIGHT,    // TODO: not honoured
-            describedAs = "labelPosition=RIGHT",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
-    default Character getReadOnlyPropertyDerivedLabelPositionRight() {
-        return getReadOnlyProperty();
-    }
-
-    @Property
-    @PropertyLayout(
-            labelPosition = LabelPosition.NONE,
-            describedAs = "labelPosition=NONE",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
-    default Character getReadOnlyPropertyDerivedLabelPositionNone() {
-        return getReadOnlyProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder_actionReturning.java
deleted file mode 100644
index 93d1a10..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder_actionReturning.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 demoapp.dom.types.isis.clobs.holder;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-
-
-//tag::class[]
-@Action(semantics = SemanticsOf.SAFE)
-@RequiredArgsConstructor
-public class IsisClobHolder_actionReturning {
-
-    private final IsisClobHolder holder;
-
-    public Character act() {
-        return holder.getReadOnlyProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder_actionReturningCollection.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder_actionReturningCollection.java
deleted file mode 100644
index ea6789d..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder_actionReturningCollection.java
+++ /dev/null
@@ -1,48 +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 demoapp.dom.types.isis.clobs.holder;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.stream.Stream;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-import lombok.val;
-
-
-//tag::class[]
-@Action(semantics = SemanticsOf.SAFE)
-@RequiredArgsConstructor
-public class IsisClobHolder_actionReturningCollection {
-
-    private final IsisClobHolder holder;
-
-    public Collection<Character> act() {
-        final Collection<Character> characters = new ArrayList<>();
-        val initial = holder.getReadOnlyProperty();
-        Stream.of(0, 1, 2, 3).forEach(x ->
-                characters.add((char) (initial + x))
-        );
-        return characters;
-    }
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder_mixinProperty.java
deleted file mode 100644
index f67b89f..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder_mixinProperty.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 demoapp.dom.types.isis.clobs.holder;
-
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Where;
-
-import lombok.RequiredArgsConstructor;
-
-import demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder;
-
-
-//tag::class[]
-@Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
-@RequiredArgsConstructor
-public class IsisClobHolder_mixinProperty {
-
-    private final IsisClobHolder holder;
-
-    @MemberOrder(name = "contributed", sequence = "1")
-    public Character prop() {
-        return holder.getReadOnlyProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java
deleted file mode 100644
index a3753ec..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java
+++ /dev/null
@@ -1,55 +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 demoapp.dom.types.isis.clobs.holder;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Parameter;
-import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-
-
-//tag::class[]
-@Action(
-        semantics = SemanticsOf.IDEMPOTENT,
-        associateWith = "readOnlyOptionalProperty",
-        associateWithSequence = "1"
-)
-@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update")
-@RequiredArgsConstructor
-public class IsisClobHolder_updateReadOnlyOptionalProperty {
-
-    private final IsisClobHolder holder;
-
-    public IsisClobHolder act(
-            @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            Character newValue
-    ) {
-        holder.setReadOnlyOptionalProperty(newValue);
-        return holder;
-    }
-    public Character default0Act() {
-        return holder.getReadOnlyOptionalProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder_updateReadOnlyProperty.java
deleted file mode 100644
index e31d2a3..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder_updateReadOnlyProperty.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 demoapp.dom.types.isis.clobs.holder;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-
-
-//tag::class[]
-@Action(
-        semantics = SemanticsOf.IDEMPOTENT,
-        associateWith = "readOnlyProperty",
-        associateWithSequence = "1"
-)
-@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update")
-@RequiredArgsConstructor
-public class IsisClobHolder_updateReadOnlyProperty {
-
-    private final IsisClobHolder holder;
-
-    public IsisClobHolder act(Character newValue) {
-        holder.setReadOnlyProperty(newValue);
-        return holder;
-    }
-    public Character default0Act() {
-        return holder.getReadOnlyProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder_updateReadOnlyPropertyWithChoices.java
deleted file mode 100644
index 35103fa..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/WrapperCharacterHolder_updateReadOnlyPropertyWithChoices.java
+++ /dev/null
@@ -1,58 +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 demoapp.dom.types.isis.clobs.holder;
-
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-
-
-//tag::class[]
-@Action(
-        semantics = SemanticsOf.IDEMPOTENT,
-        associateWith = "readOnlyProperty",
-        associateWithSequence = "2"
-)
-@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update with choices")
-@RequiredArgsConstructor
-public class IsisClobHolder_updateReadOnlyPropertyWithChoices {
-
-    private final IsisClobHolder holder;
-
-    public IsisClobHolder act(Character newValue) {
-        holder.setReadOnlyProperty(newValue);
-        return holder;
-    }
-    public Character default0Act() {
-        return holder.getReadOnlyProperty();
-    }
-    public List<Character> choices0Act() {
-        return Stream.of('a', 'b', 'c')
-                .collect(Collectors.toList());
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/IsisClobJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/IsisClobJdo-description.adoc
new file mode 100644
index 0000000..1bb415f
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/IsisClobJdo-description.adoc
@@ -0,0 +1,15 @@
+JDO supports `Clob` out-of-the-box, so no special annotations are required.
+
+[source,java]
+----
+include::IsisClobJdo.java[tags=class]
+----
+<.> a no-arg constructor is introduced by JDO enhancer
+<.> required property as defined to JDO/DataNucleus.
++
+Apache Isis assumes properties are mandatory, so no additional annotation is required.
+<.> directly editable property as defined to Apache Isis
+<.> optional property as defined to Apache Isis
+<.> optional property as defined to JDO/DataNucleus
+
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/IsisClobJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/IsisClobJdo.java
new file mode 100644
index 0000000..e34fc87
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/IsisClobJdo.java
@@ -0,0 +1,84 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.isis.clobs.jdo;
+
+import javax.jdo.annotations.Column;
+import javax.jdo.annotations.DatastoreIdentity;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.PersistenceCapable;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.value.Clob;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.isis.clobs.holder.IsisClobHolder;
+
+//tag::class[]
+@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@DomainObject(
+        objectType = "demo.IsisClobJdo"
+)
+public class IsisClobJdo                                          // <.>
+        implements HasAsciiDocDescription, IsisClobHolder {
+
+//end::class[]
+    public IsisClobJdo(Clob initialValue) {
+        this.readOnlyProperty = initialValue;
+        this.readWriteProperty = initialValue;
+    }
+
+//tag::class[]
+    @Title(prepend = "Clob JDO entity: ")
+    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @Column(allowsNull = "false")                                               // <.>
+    @Getter @Setter
+    private Clob readOnlyProperty;
+
+    @Property(editing = Editing.ENABLED)                                        // <.>
+    @MemberOrder(name = "editable-properties", sequence = "1")
+    @Column(allowsNull = "false")
+    @Getter @Setter
+    private Clob readWriteProperty;
+
+    @Property(optionality = Optionality.OPTIONAL)                               // <.>
+    @MemberOrder(name = "optional-properties", sequence = "1")
+    @Column(allowsNull = "true")                                                // <.>
+    @Getter @Setter
+    private Clob readOnlyOptionalProperty;
+
+    @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
+    @MemberOrder(name = "optional-properties", sequence = "2")
+    @Column(allowsNull = "true")
+    @Getter @Setter
+    private Clob readWriteOptionalProperty;
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/longs/vm/WrapperLongVm.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/IsisClobJdo.layout.xml
similarity index 100%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/longs/vm/WrapperLongVm.layout.xml
copy to examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/IsisClobJdo.layout.xml
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/IsisClobJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/IsisClobJdoEntities.java
new file mode 100644
index 0000000..d970bda
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/IsisClobJdoEntities.java
@@ -0,0 +1,27 @@
+package demoapp.dom.types.isis.clobs.jdo;
+
+import java.util.List;
+import java.util.Optional;
+
+import javax.inject.Inject;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.applib.value.Clob;
+
+@Service
+public class IsisClobJdoEntities {
+
+    public Optional<IsisClobJdo> find(final Clob readOnlyProperty) {
+        return repositoryService.firstMatch(IsisClobJdo.class, x -> x.getReadOnlyProperty() == readOnlyProperty);
+    }
+
+    public List<IsisClobJdo> all() {
+        return repositoryService.allInstances(IsisClobJdo.class);
+    }
+
+    @Inject
+    RepositoryService repositoryService;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/IsisClobJdoSeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/IsisClobJdoSeedService.java
new file mode 100644
index 0000000..b3b643e
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/IsisClobJdoSeedService.java
@@ -0,0 +1,47 @@
+package demoapp.dom.types.isis.clobs.jdo;
+
+import java.util.stream.Stream;
+
+import javax.inject.Inject;
+
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.applib.value.Clob;
+import org.apache.isis.core.runtime.events.app.AppLifecycleEvent;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
+
+import demoapp.dom.types.Samples;
+
+@Service
+public class IsisClobJdoSeedService {
+
+    @EventListener(AppLifecycleEvent.class)
+    public void onAppLifecycleEvent(AppLifecycleEvent event) {
+
+        if (event.getEventType() == AppLifecycleEvent.EventType.appPostMetamodel) {
+            fixtureScripts.run(new IsisClobJdoEntityFixture());
+        }
+    }
+
+    @Inject
+    FixtureScripts fixtureScripts;
+
+    static class IsisClobJdoEntityFixture extends FixtureScript {
+
+        @Override
+        protected void execute(ExecutionContext executionContext) {
+            samples.stream()
+                    .map(IsisClobJdo::new)
+                    .forEach(repositoryService::persist);
+        }
+
+        @Inject
+        RepositoryService repositoryService;
+
+        @Inject
+        Samples<Clob> samples;
+    }
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/WrapperCharacterJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/WrapperCharacterJdo-description.adoc
deleted file mode 100644
index 3ca7700..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/WrapperCharacterJdo-description.adoc
+++ /dev/null
@@ -1,15 +0,0 @@
-JDO supports `Character` out-of-the-box, so no special annotations are required.
-
-[source,java]
-----
-include::IsisClobJdo.java[tags=class]
-----
-<.> a no-arg constructor is introduced by JDO enhancer
-<.> required property as defined to JDO/DataNucleus.
-+
-Apache Isis assumes properties are mandatory, so no additional annotation is required.
-<.> directly editable property as defined to Apache Isis
-<.> optional property as defined to Apache Isis
-<.> optional property as defined to JDO/DataNucleus
-
-
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/WrapperCharacterJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/WrapperCharacterJdo.java
deleted file mode 100644
index 975e06c..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/WrapperCharacterJdo.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 demoapp.dom.types.isis.clobs.jdo;
-
-import javax.jdo.annotations.Column;
-import javax.jdo.annotations.DatastoreIdentity;
-import javax.jdo.annotations.IdGeneratorStrategy;
-import javax.jdo.annotations.IdentityType;
-import javax.jdo.annotations.PersistenceCapable;
-
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Title;
-import org.apache.isis.applib.annotation.Where;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.isis.clobs.holder.IsisClobHolder;
-
-//tag::class[]
-@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
-@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
-@DomainObject(
-        objectType = "demo.IsisClobJdo"
-)
-public class IsisClobJdo                                          // <.>
-        implements HasAsciiDocDescription, IsisClobHolder {
-
-//end::class[]
-    public IsisClobJdo(Character initialValue) {
-        this.readOnlyProperty = initialValue;
-        this.readWriteProperty = initialValue;
-    }
-
-//tag::class[]
-    @Title(prepend = "Character (wrapper) JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
-    @Column(allowsNull = "false")                                               // <.>
-    @Getter @Setter
-    private Character readOnlyProperty;
-
-    @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
-    @Column(allowsNull = "false")
-    @Getter @Setter
-    private Character readWriteProperty;
-
-    @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
-    @Column(allowsNull = "true")                                                // <.>
-    @Getter @Setter
-    private Character readOnlyOptionalProperty;
-
-    @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
-    @Column(allowsNull = "true")
-    @Getter @Setter
-    private Character readWriteOptionalProperty;
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/WrapperCharacterJdo.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/WrapperCharacterJdo.layout.xml
deleted file mode 100644
index 777ee39..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/WrapperCharacterJdo.layout.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<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="10" unreferencedActions="true">
-			<cpt:domainObject />
-			<cpt:action id="actionReturning"/>
-			<cpt:action id="actionReturningCollection"/>
-			<cpt:action id="rebuildMetamodel"/>
-		</bs3:col>
-		<bs3:col span="2">
-			<cpt:fieldSet name="" id="sources" />
-		</bs3:col>
-	</bs3:row>
-
-	<bs3:row>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Read Only Properties" id="read-only-properties"/>
-			<cpt:fieldSet name="Editable Properties" id="editable-properties"/>
-			<cpt:fieldSet name="Optional Properties" id="optional-properties"/>
-			<cpt:fieldSet name="Label Positions" id="label-positions"/>
-			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
-			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
-		</bs3:col>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Description" id="description" >
-				<cpt:action id="clearHints" position="PANEL" />
-				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
-				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
-				<cpt:property id="description"/>
-			</cpt:fieldSet>
-		</bs3:col>
-	</bs3:row>
-	<bs3:row>
-		<bs3:col span="12" unreferencedCollections="true"/>
-	</bs3:row>
-
-</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/WrapperCharacterJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/WrapperCharacterJdoEntities.java
deleted file mode 100644
index ca5a605..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/WrapperCharacterJdoEntities.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package demoapp.dom.types.isis.clobs.jdo;
-
-import java.util.List;
-import java.util.Optional;
-
-import javax.inject.Inject;
-
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.services.repository.RepositoryService;
-
-@Service
-public class IsisClobJdoEntities {
-
-    public Optional<IsisClobJdo> find(final Character readOnlyProperty) {
-        return repositoryService.firstMatch(IsisClobJdo.class, x -> x.getReadOnlyProperty() == readOnlyProperty);
-    }
-
-    public List<IsisClobJdo> all() {
-        return repositoryService.allInstances(IsisClobJdo.class);
-    }
-
-    @Inject
-    RepositoryService repositoryService;
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/WrapperCharacterJdoSeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/WrapperCharacterJdoSeedService.java
deleted file mode 100644
index afbdf70..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/jdo/WrapperCharacterJdoSeedService.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package demoapp.dom.types.isis.clobs.jdo;
-
-import java.util.stream.Stream;
-
-import javax.inject.Inject;
-
-import org.springframework.context.event.EventListener;
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.services.repository.RepositoryService;
-import org.apache.isis.core.runtime.events.app.AppLifecycleEvent;
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
-
-@Service
-public class IsisClobJdoSeedService {
-
-    @EventListener(AppLifecycleEvent.class)
-    public void onAppLifecycleEvent(AppLifecycleEvent event) {
-
-        if (event.getEventType() == AppLifecycleEvent.EventType.appPostMetamodel) {
-            fixtureScripts.run(new IsisClobJdoEntityFixture());
-        }
-    }
-
-    @Inject
-    FixtureScripts fixtureScripts;
-
-    static class IsisClobJdoEntityFixture extends FixtureScript {
-
-        @Override
-        protected void execute(ExecutionContext executionContext) {
-            Stream.of('a', 'b', 'c')
-                    .map(IsisClobJdo::new)
-                    .forEach(repositoryService::persist);
-        }
-
-        @Inject
-        RepositoryService repositoryService;
-
-    }
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/IsisClobVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/IsisClobVm-description.adoc
new file mode 100644
index 0000000..2e0aca0
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/IsisClobVm-description.adoc
@@ -0,0 +1,13 @@
+JAXB supports `Clob` out-of-the-box, so no special annotations are required.
+
+[source,java]
+----
+include::IsisClobVm.java[tags=class]
+----
+<.> a no-arg constructor is required by JAXB
+<.> required property as defined to JAXB
+<.> directly editable property as defined to Apache Isis
+<.> optional property as defined to Apache Isis.
++
+This is the default for JAXB so no additional annotation required.
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/IsisClobVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/IsisClobVm.java
new file mode 100644
index 0000000..b17d9c7
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/IsisClobVm.java
@@ -0,0 +1,86 @@
+/*
+ *  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 demoapp.dom.types.isis.clobs.vm;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.value.Clob;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.isis.clobs.holder.IsisClobHolder;
+
+//tag::class[]
+@XmlRootElement(name = "root")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(
+        nature=Nature.VIEW_MODEL,
+        objectType = "demo.IsisClobVm"
+)
+@lombok.NoArgsConstructor                                                       // <.>
+public class IsisClobVm
+        implements HasAsciiDocDescription, IsisClobHolder {
+
+//end::class[]
+    public IsisClobVm(Clob initialValue) {
+        this.readOnlyProperty = initialValue;
+        this.readWriteProperty = initialValue;
+    }
+
+//tag::class[]
+    @Title(prepend = "Clob view model: ")
+    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @XmlElement(required = true)                                                // <.>
+    @Getter @Setter
+    private Clob readOnlyProperty;
+
+    @Property(editing = Editing.ENABLED)                                        // <.>
+    @MemberOrder(name = "editable-properties", sequence = "1")
+    @XmlElement(required = true)
+    @Getter @Setter
+    private Clob readWriteProperty;
+
+    @Property(optionality = Optionality.OPTIONAL)                               // <.>
+    @MemberOrder(name = "optional-properties", sequence = "1")
+    @Getter @Setter
+    private Clob readOnlyOptionalProperty;
+
+    @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
+    @MemberOrder(name = "optional-properties", sequence = "2")
+    @Getter @Setter
+    private Clob readWriteOptionalProperty;
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/longs/jdo/WrapperLongJdo.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/IsisClobVm.layout.xml
similarity index 100%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/longs/jdo/WrapperLongJdo.layout.xml
copy to examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/IsisClobVm.layout.xml
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/WrapperCharacterVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/WrapperCharacterVm-description.adoc
deleted file mode 100644
index 64bdddc..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/WrapperCharacterVm-description.adoc
+++ /dev/null
@@ -1,13 +0,0 @@
-JAXB supports `Character` out-of-the-box, so no special annotations are required.
-
-[source,java]
-----
-include::IsisClobVm.java[tags=class]
-----
-<.> a no-arg constructor is required by JAXB
-<.> required property as defined to JAXB
-<.> directly editable property as defined to Apache Isis
-<.> optional property as defined to Apache Isis.
-+
-This is the default for JAXB so no additional annotation required.
-
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/WrapperCharacterVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/WrapperCharacterVm.java
deleted file mode 100644
index e710c47..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/WrapperCharacterVm.java
+++ /dev/null
@@ -1,85 +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 demoapp.dom.types.isis.clobs.vm;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Nature;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Title;
-import org.apache.isis.applib.annotation.Where;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.isis.clobs.holder.IsisClobHolder;
-
-//tag::class[]
-@XmlRootElement(name = "root")
-@XmlType
-@XmlAccessorType(XmlAccessType.FIELD)
-@DomainObject(
-        nature=Nature.VIEW_MODEL,
-        objectType = "demo.IsisClobVm"
-)
-@lombok.NoArgsConstructor                                                       // <.>
-public class IsisClobVm
-        implements HasAsciiDocDescription, IsisClobHolder {
-
-//end::class[]
-    public IsisClobVm(Character initialValue) {
-        this.readOnlyProperty = initialValue;
-        this.readWriteProperty = initialValue;
-    }
-
-//tag::class[]
-    @Title(prepend = "Character (wrapper) view model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
-    @XmlElement(required = true)                                                // <.>
-    @Getter @Setter
-    private Character readOnlyProperty;
-
-    @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
-    @XmlElement(required = true)
-    @Getter @Setter
-    private Character readWriteProperty;
-
-    @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
-    @Getter @Setter
-    private Character readOnlyOptionalProperty;
-
-    @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
-    @Getter @Setter
-    private Character readWriteOptionalProperty;
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/WrapperCharacterVm.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/WrapperCharacterVm.layout.xml
deleted file mode 100644
index 777ee39..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/vm/WrapperCharacterVm.layout.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<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="10" unreferencedActions="true">
-			<cpt:domainObject />
-			<cpt:action id="actionReturning"/>
-			<cpt:action id="actionReturningCollection"/>
-			<cpt:action id="rebuildMetamodel"/>
-		</bs3:col>
-		<bs3:col span="2">
-			<cpt:fieldSet name="" id="sources" />
-		</bs3:col>
-	</bs3:row>
-
-	<bs3:row>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Read Only Properties" id="read-only-properties"/>
-			<cpt:fieldSet name="Editable Properties" id="editable-properties"/>
-			<cpt:fieldSet name="Optional Properties" id="optional-properties"/>
-			<cpt:fieldSet name="Label Positions" id="label-positions"/>
-			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
-			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
-		</bs3:col>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Description" id="description" >
-				<cpt:action id="clearHints" position="PANEL" />
-				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
-				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
-				<cpt:property id="description"/>
-			</cpt:fieldSet>
-		</bs3:col>
-	</bs3:row>
-	<bs3:row>
-		<bs3:col span="12" unreferencedCollections="true"/>
-	</bs3:row>
-
-</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/IsisImages-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/IsisImages-description.adoc
new file mode 100644
index 0000000..ab5f54f
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/IsisImages-description.adoc
@@ -0,0 +1,75 @@
+The framework has built-in support for all of the Wrapper data types, including `Image`.
+
+From here you can:
+
+* navigate to an entity that uses the `Image` datatype
+* open a view model that uses the `Image` datatype
+
+Some properties on these domain objects are mandatory, some optional.
+
+== Common interface
+
+These objects both implement a common interface, `IsisImageHolder`:
+
+[source,java]
+----
+include::holder/IsisImageHolder.java[tags=class]
+----
+
+There is also an extension of this interface, `IsisImageHolder2`, with default methods demonstrating the use of label positions:
+
+[source,java]
+----
+include::holder/IsisImageHolder2.java[tags=class]
+----
+
+<.> The default methods have annotations that are automatically inherited.
+<.> Using `@MemberOrder` positions the properties into the appropriate `<field-set>` within the `Xxx.layout.xml` layout file.
+
+
+== Mixin actions
+
+A number of mixin actions contribute through this interface, demonstrate the use of `Image` as a parameter and as a return type.
+For example:
+
+* the `updateReadOnlyProperty` action is:
++
+[source,java]
+----
+include::holder/IsisImageHolder_updateReadOnlyProperty.java[tags=class]
+----
+
+* the `updateReadOnlyOptionalProperty` action is:
++
+[source,java]
+----
+include::holder/IsisImageHolder_updateReadOnlyOptionalProperty.java[tags=class]
+----
+
+* the `actionReturning` action is:
++
+[source,java]
+----
+include::holder/IsisImageHolder_actionReturning.java[tags=class]
+----
+
+
+* the `actionReturningCollection` action is:
++
+[source,java]
+----
+include::holder/IsisImageHolder_actionReturningCollection.java[tags=class]
+----
+
+== Mixin properties
+
+We also use the interface to contribute a mixin property:
+
+* the `mixinProperty` property:
++
+[source,java]
+----
+include::holder/IsisImageHolder_mixinProperty.java[tags=class]
+----
+
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/IsisImages.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/IsisImages.java
new file mode 100644
index 0000000..d227605
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/IsisImages.java
@@ -0,0 +1,81 @@
+/*
+ *  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 demoapp.dom.types.isis.images;
+
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.Image;
+
+import lombok.extern.log4j.Log4j2;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.Samples;
+import demoapp.dom.types.isis.images.jdo.IsisImageJdoEntities;
+import demoapp.dom.types.isis.images.jdo.IsisImageJdo;
+import demoapp.dom.types.isis.images.vm.IsisImageVm;
+
+@XmlRootElement(name = "Demo")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(nature=Nature.VIEW_MODEL, objectType = "demo.IsisImages", editing=Editing.ENABLED)
+@Log4j2
+public class IsisImages implements HasAsciiDocDescription {
+
+    public String title() {
+        return "Image data type";
+    }
+
+    @Action(semantics = SemanticsOf.SAFE)
+    @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
+    public IsisImageVm openViewModel(Image initialValue) {
+        return new IsisImageVm(initialValue);
+    }
+    public Image default0OpenViewModel() {
+        return samples.single();
+    }
+
+    @Collection
+    public List<IsisImageJdo> getEntities() {
+        return entities.all();
+    }
+
+    @Inject
+    @XmlTransient
+    IsisImageJdoEntities entities;
+
+    @Inject
+    @XmlTransient
+    Samples<Image> samples;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/integers/WrapperIntegers.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/IsisImages.layout.xml
similarity index 100%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/integers/WrapperIntegers.layout.xml
copy to examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/IsisImages.layout.xml
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/IsisImagesSamples.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/IsisImagesSamples.java
new file mode 100644
index 0000000..3fe6665
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/IsisImagesSamples.java
@@ -0,0 +1,37 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.isis.images;
+
+import java.util.stream.Stream;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.value.Image;
+
+import demoapp.dom.types.Samples;
+
+@Service
+public class IsisImagesSamples implements Samples<Image> {
+
+    @Override
+    public Stream<Image> stream() {
+        return Stream.of();
+    }
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/IsisImagesStream.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/IsisImagesStream.java
deleted file mode 100644
index 04e071c..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/IsisImagesStream.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.
- */
-package demoapp.dom.types.isis.images;
-
-import java.util.stream.Stream;
-
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.value.Image;
-
-import demoapp.dom.types.Samples;
-
-@Service
-public class IsisImagesStream implements Samples<Image> {
-
-    @Override
-    public Stream<Image> stream() {
-        return Stream.of(null);
-    }
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/WrapperCharacters-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/WrapperCharacters-description.adoc
deleted file mode 100644
index aaa93e8..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/WrapperCharacters-description.adoc
+++ /dev/null
@@ -1,75 +0,0 @@
-The framework has built-in support for all of the Wrapper data types, including `Character`.
-
-From here you can:
-
-* navigate to an entity that uses the `Character` datatype
-* open a view model that uses the `Character` datatype
-
-Some properties on these domain objects are mandatory, some optional.
-
-== Common interface
-
-These objects both implement a common interface, `IsisImageHolder`:
-
-[source,java]
-----
-include::holder/IsisImageHolder.java[tags=class]
-----
-
-There is also an extension of this interface, `IsisImageHolder2`, with default methods demonstrating the use of label positions:
-
-[source,java]
-----
-include::holder/IsisImageHolder2.java[tags=class]
-----
-
-<.> The default methods have annotations that are automatically inherited.
-<.> Using `@MemberOrder` positions the properties into the appropriate `<field-set>` within the `Xxx.layout.xml` layout file.
-
-
-== Mixin actions
-
-A number of mixin actions contribute through this interface, demonstrate the use of `Character` as a parameter and as a return type.
-For example:
-
-* the `updateReadOnlyProperty` action is:
-+
-[source,java]
-----
-include::holder/IsisImageHolder_updateReadOnlyProperty.java[tags=class]
-----
-
-* the `updateReadOnlyOptionalProperty` action is:
-+
-[source,java]
-----
-include::holder/IsisImageHolder_updateReadOnlyOptionalProperty.java[tags=class]
-----
-
-* the `actionReturning` action is:
-+
-[source,java]
-----
-include::holder/IsisImageHolder_actionReturning.java[tags=class]
-----
-
-
-* the `actionReturningCollection` action is:
-+
-[source,java]
-----
-include::holder/IsisImageHolder_actionReturningCollection.java[tags=class]
-----
-
-== Mixin properties
-
-We also use the interface to contribute a mixin property:
-
-* the `mixinProperty` property:
-+
-[source,java]
-----
-include::holder/IsisImageHolder_mixinProperty.java[tags=class]
-----
-
-
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/WrapperCharacters.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/WrapperCharacters.java
deleted file mode 100644
index ca4633e..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/WrapperCharacters.java
+++ /dev/null
@@ -1,76 +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 demoapp.dom.types.isis.images;
-
-import java.util.List;
-
-import javax.inject.Inject;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.Collection;
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.Nature;
-import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.extern.log4j.Log4j2;
-
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.isis.images.jdo.IsisImageJdoEntities;
-import demoapp.dom.types.isis.images.jdo.IsisImageJdo;
-import demoapp.dom.types.isis.images.vm.IsisImageVm;
-
-@XmlRootElement(name = "Demo")
-@XmlType
-@XmlAccessorType(XmlAccessType.FIELD)
-@DomainObject(nature=Nature.VIEW_MODEL, objectType = "demo.IsisImages", editing=Editing.ENABLED)
-@Log4j2
-public class IsisImages implements HasAsciiDocDescription {
-
-    public String title() {
-        return "Character (wrapper) data type";
-    }
-
-    @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public IsisImageVm openViewModel(Character initialValue) {
-        return new IsisImageVm(initialValue);
-    }
-    public Character default0OpenViewModel() {
-        return 'a';
-    }
-
-    @Collection
-    public List<IsisImageJdo> getEntities() {
-        return entities.all();
-    }
-
-    @Inject
-    @XmlTransient
-    IsisImageJdoEntities entities;
-
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/WrapperCharacters.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/WrapperCharacters.layout.xml
deleted file mode 100644
index 55c5b87..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/WrapperCharacters.layout.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<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="10" unreferencedActions="true">
-			<cpt:domainObject />
-			<cpt:action id="rebuildMetamodel"/>
-		</bs3:col>
-		<bs3:col span="2">
-			<cpt:fieldSet name="" id="sources" />
-		</bs3:col>
-	</bs3:row>
-
-	<bs3:row>
-		<bs3:col span="6">
-			<bs3:row>
-				<bs3:col span="12">
-					<cpt:collection id="entities"/>
-				</bs3:col>
-				<bs3:col span="12">
-					<cpt:action id="openViewModel"/>
-				</bs3:col>
-			</bs3:row>
-			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
-		</bs3:col>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Description" id="description" >
-				<cpt:action id="clearHints" position="PANEL" />
-				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
-				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
-				<cpt:property id="description"/>
-			</cpt:fieldSet>
-		</bs3:col>
-	</bs3:row>
-	<bs3:row>
-		<bs3:col span="12" unreferencedCollections="true"/>
-	</bs3:row>
-
-</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder.java
new file mode 100644
index 0000000..666a1d1
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder.java
@@ -0,0 +1,39 @@
+/*
+ *  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 demoapp.dom.types.isis.images.holder;
+
+import org.apache.isis.applib.value.Image;
+
+//tag::class[]
+public interface IsisImageHolder {
+
+    Image getReadOnlyProperty();
+    void setReadOnlyProperty(Image c);
+
+    Image getReadWriteProperty();
+    void setReadWriteProperty(Image c);
+
+    Image getReadOnlyOptionalProperty();
+    void setReadOnlyOptionalProperty(Image c);
+
+    Image getReadWriteOptionalProperty();
+    void setReadWriteOptionalProperty(Image c);
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder2.java
new file mode 100644
index 0000000..ac90385
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder2.java
@@ -0,0 +1,77 @@
+/*
+ *  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 demoapp.dom.types.isis.images.holder;
+
+import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.value.Image;
+
+//tag::class[]
+public interface IsisImageHolder2 extends IsisImageHolder {
+
+    @Property
+    @PropertyLayout(                                                        // <.>
+            labelPosition = LabelPosition.LEFT,
+            describedAs = "labelPosition=LEFT",
+            hidden = Where.ALL_TABLES
+    )
+    @MemberOrder(name = "label-positions", sequence = "1")                  // <.>
+    default Image getReadOnlyPropertyDerivedLabelPositionLeft() {
+        return getReadOnlyProperty();
+    }
+
+    @Property
+    @PropertyLayout(
+            labelPosition = LabelPosition.TOP,
+            describedAs = "labelPosition=TOP",
+            hidden = Where.ALL_TABLES
+    )
+    @MemberOrder(name = "label-positions", sequence = "2")
+    default Image getReadOnlyPropertyDerivedLabelPositionTop() {
+        return getReadOnlyProperty();
+    }
+
+    @Property
+    @PropertyLayout(
+            labelPosition = LabelPosition.RIGHT,    // TODO: not honoured
+            describedAs = "labelPosition=RIGHT",
+            hidden = Where.ALL_TABLES
+    )
+    @MemberOrder(name = "label-positions", sequence = "3")
+    default Image getReadOnlyPropertyDerivedLabelPositionRight() {
+        return getReadOnlyProperty();
+    }
+
+    @Property
+    @PropertyLayout(
+            labelPosition = LabelPosition.NONE,
+            describedAs = "labelPosition=NONE",
+            hidden = Where.ALL_TABLES
+    )
+    @MemberOrder(name = "label-positions", sequence = "4")
+    default Image getReadOnlyPropertyDerivedLabelPositionNone() {
+        return getReadOnlyProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder_actionReturning.java
new file mode 100644
index 0000000..302a174
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder_actionReturning.java
@@ -0,0 +1,40 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.isis.images.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.Image;
+
+import lombok.RequiredArgsConstructor;
+
+
+//tag::class[]
+@Action(semantics = SemanticsOf.SAFE)
+@RequiredArgsConstructor
+public class IsisImageHolder_actionReturning {
+
+    private final IsisImageHolder holder;
+
+    public Image act() {
+        return holder.getReadOnlyProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder_actionReturningCollection.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder_actionReturningCollection.java
new file mode 100644
index 0000000..d58dfea
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder_actionReturningCollection.java
@@ -0,0 +1,53 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.isis.images.holder;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.Image;
+
+import lombok.RequiredArgsConstructor;
+import lombok.val;
+
+import demoapp.dom.types.Samples;
+
+
+//tag::class[]
+@Action(semantics = SemanticsOf.SAFE)
+@RequiredArgsConstructor
+public class IsisImageHolder_actionReturningCollection {
+
+    private final IsisImageHolder holder;
+
+    public Collection<Image> act() {
+        return samples.stream()
+                .collect(Collectors.toList());
+    }
+
+    @Inject
+    Samples<Image> samples;
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder_mixinProperty.java
new file mode 100644
index 0000000..c4daac8
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder_mixinProperty.java
@@ -0,0 +1,46 @@
+/*
+ *  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 demoapp.dom.types.isis.images.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.value.Image;
+
+import lombok.RequiredArgsConstructor;
+
+import demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder;
+
+
+//tag::class[]
+@Property()
+@PropertyLayout(hidden = Where.ALL_TABLES)
+@RequiredArgsConstructor
+public class IsisImageHolder_mixinProperty {
+
+    private final IsisImageHolder holder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public Image prop() {
+        return holder.getReadOnlyProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder_updateReadOnlyOptionalProperty.java
new file mode 100644
index 0000000..fb94a6d
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder_updateReadOnlyOptionalProperty.java
@@ -0,0 +1,56 @@
+/*
+ *  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 demoapp.dom.types.isis.images.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Parameter;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.Image;
+
+import lombok.RequiredArgsConstructor;
+
+
+//tag::class[]
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyOptionalProperty",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update")
+@RequiredArgsConstructor
+public class IsisImageHolder_updateReadOnlyOptionalProperty {
+
+    private final IsisImageHolder holder;
+
+    public IsisImageHolder act(
+            @Parameter(optionality = Optionality.OPTIONAL)              // <.>
+            Image newValue
+    ) {
+        holder.setReadOnlyOptionalProperty(newValue);
+        return holder;
+    }
+    public Image default0Act() {
+        return holder.getReadOnlyOptionalProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder_updateReadOnlyProperty.java
new file mode 100644
index 0000000..5b72cf0
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder_updateReadOnlyProperty.java
@@ -0,0 +1,51 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.isis.images.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.Image;
+
+import lombok.RequiredArgsConstructor;
+
+
+//tag::class[]
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update")
+@RequiredArgsConstructor
+public class IsisImageHolder_updateReadOnlyProperty {
+
+    private final IsisImageHolder holder;
+
+    public IsisImageHolder act(Image newValue) {
+        holder.setReadOnlyProperty(newValue);
+        return holder;
+    }
+    public Image default0Act() {
+        return holder.getReadOnlyProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder_updateReadOnlyPropertyWithChoices.java
new file mode 100644
index 0000000..32ac417
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/IsisImageHolder_updateReadOnlyPropertyWithChoices.java
@@ -0,0 +1,65 @@
+/*
+ *  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 demoapp.dom.types.isis.images.holder;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.Image;
+
+import lombok.RequiredArgsConstructor;
+
+import demoapp.dom.types.Samples;
+
+
+//tag::class[]
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "2"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update with choices")
+@RequiredArgsConstructor
+public class IsisImageHolder_updateReadOnlyPropertyWithChoices {
+
+    private final IsisImageHolder holder;
+
+    public IsisImageHolder act(Image newValue) {
+        holder.setReadOnlyProperty(newValue);
+        return holder;
+    }
+    public Image default0Act() {
+        return holder.getReadOnlyProperty();
+    }
+    public List<Image> choices0Act() {
+        return samples.stream()
+                .collect(Collectors.toList());
+    }
+
+    @Inject
+    Samples<Image> samples;
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder.java
deleted file mode 100644
index 0ac6ef3..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder.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.
- */
-package demoapp.dom.types.isis.images.holder;
-
-//tag::class[]
-public interface IsisImageHolder {
-
-    Character getReadOnlyProperty();
-    void setReadOnlyProperty(Character c);
-
-    Character getReadWriteProperty();
-    void setReadWriteProperty(Character c);
-
-    Character getReadOnlyOptionalProperty();
-    void setReadOnlyOptionalProperty(Character c);
-
-    Character getReadWriteOptionalProperty();
-    void setReadWriteOptionalProperty(Character c);
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder2.java
deleted file mode 100644
index 32782ac..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder2.java
+++ /dev/null
@@ -1,76 +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 demoapp.dom.types.isis.images.holder;
-
-import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Where;
-
-//tag::class[]
-public interface IsisImageHolder2 extends IsisImageHolder {
-
-    @Property
-    @PropertyLayout(                                                        // <.>
-            labelPosition = LabelPosition.LEFT,
-            describedAs = "labelPosition=LEFT",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")                  // <.>
-    default Character getReadOnlyPropertyDerivedLabelPositionLeft() {
-        return getReadOnlyProperty();
-    }
-
-    @Property
-    @PropertyLayout(
-            labelPosition = LabelPosition.TOP,
-            describedAs = "labelPosition=TOP",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
-    default Character getReadOnlyPropertyDerivedLabelPositionTop() {
-        return getReadOnlyProperty();
-    }
-
-    @Property
-    @PropertyLayout(
-            labelPosition = LabelPosition.RIGHT,    // TODO: not honoured
-            describedAs = "labelPosition=RIGHT",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
-    default Character getReadOnlyPropertyDerivedLabelPositionRight() {
-        return getReadOnlyProperty();
-    }
-
-    @Property
-    @PropertyLayout(
-            labelPosition = LabelPosition.NONE,
-            describedAs = "labelPosition=NONE",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
-    default Character getReadOnlyPropertyDerivedLabelPositionNone() {
-        return getReadOnlyProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder_actionReturning.java
deleted file mode 100644
index 61739bd..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder_actionReturning.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 demoapp.dom.types.isis.images.holder;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-
-
-//tag::class[]
-@Action(semantics = SemanticsOf.SAFE)
-@RequiredArgsConstructor
-public class IsisImageHolder_actionReturning {
-
-    private final IsisImageHolder holder;
-
-    public Character act() {
-        return holder.getReadOnlyProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder_actionReturningCollection.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder_actionReturningCollection.java
deleted file mode 100644
index c5ae051..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder_actionReturningCollection.java
+++ /dev/null
@@ -1,48 +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 demoapp.dom.types.isis.images.holder;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.stream.Stream;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-import lombok.val;
-
-
-//tag::class[]
-@Action(semantics = SemanticsOf.SAFE)
-@RequiredArgsConstructor
-public class IsisImageHolder_actionReturningCollection {
-
-    private final IsisImageHolder holder;
-
-    public Collection<Character> act() {
-        final Collection<Character> characters = new ArrayList<>();
-        val initial = holder.getReadOnlyProperty();
-        Stream.of(0, 1, 2, 3).forEach(x ->
-                characters.add((char) (initial + x))
-        );
-        return characters;
-    }
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder_mixinProperty.java
deleted file mode 100644
index 8342b4c..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder_mixinProperty.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 demoapp.dom.types.isis.images.holder;
-
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Where;
-
-import lombok.RequiredArgsConstructor;
-
-import demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder;
-
-
-//tag::class[]
-@Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
-@RequiredArgsConstructor
-public class IsisImageHolder_mixinProperty {
-
-    private final IsisImageHolder holder;
-
-    @MemberOrder(name = "contributed", sequence = "1")
-    public Character prop() {
-        return holder.getReadOnlyProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java
deleted file mode 100644
index 38541c1..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder_updateReadOnlyOptionalProperty.java
+++ /dev/null
@@ -1,55 +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 demoapp.dom.types.isis.images.holder;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Parameter;
-import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-
-
-//tag::class[]
-@Action(
-        semantics = SemanticsOf.IDEMPOTENT,
-        associateWith = "readOnlyOptionalProperty",
-        associateWithSequence = "1"
-)
-@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update")
-@RequiredArgsConstructor
-public class IsisImageHolder_updateReadOnlyOptionalProperty {
-
-    private final IsisImageHolder holder;
-
-    public IsisImageHolder act(
-            @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            Character newValue
-    ) {
-        holder.setReadOnlyOptionalProperty(newValue);
-        return holder;
-    }
-    public Character default0Act() {
-        return holder.getReadOnlyOptionalProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder_updateReadOnlyProperty.java
deleted file mode 100644
index 30b46ef..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder_updateReadOnlyProperty.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 demoapp.dom.types.isis.images.holder;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-
-
-//tag::class[]
-@Action(
-        semantics = SemanticsOf.IDEMPOTENT,
-        associateWith = "readOnlyProperty",
-        associateWithSequence = "1"
-)
-@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update")
-@RequiredArgsConstructor
-public class IsisImageHolder_updateReadOnlyProperty {
-
-    private final IsisImageHolder holder;
-
-    public IsisImageHolder act(Character newValue) {
-        holder.setReadOnlyProperty(newValue);
-        return holder;
-    }
-    public Character default0Act() {
-        return holder.getReadOnlyProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder_updateReadOnlyPropertyWithChoices.java
deleted file mode 100644
index d26e601..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/holder/WrapperCharacterHolder_updateReadOnlyPropertyWithChoices.java
+++ /dev/null
@@ -1,58 +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 demoapp.dom.types.isis.images.holder;
-
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-
-
-//tag::class[]
-@Action(
-        semantics = SemanticsOf.IDEMPOTENT,
-        associateWith = "readOnlyProperty",
-        associateWithSequence = "2"
-)
-@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update with choices")
-@RequiredArgsConstructor
-public class IsisImageHolder_updateReadOnlyPropertyWithChoices {
-
-    private final IsisImageHolder holder;
-
-    public IsisImageHolder act(Character newValue) {
-        holder.setReadOnlyProperty(newValue);
-        return holder;
-    }
-    public Character default0Act() {
-        return holder.getReadOnlyProperty();
-    }
-    public List<Character> choices0Act() {
-        return Stream.of('a', 'b', 'c')
-                .collect(Collectors.toList());
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/IsisImageJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/IsisImageJdo-description.adoc
new file mode 100644
index 0000000..8a398b4
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/IsisImageJdo-description.adoc
@@ -0,0 +1,15 @@
+JDO supports `Image` out-of-the-box, so no special annotations are required.
+
+[source,java]
+----
+include::IsisImageJdo.java[tags=class]
+----
+<.> a no-arg constructor is introduced by JDO enhancer
+<.> required property as defined to JDO/DataNucleus.
++
+Apache Isis assumes properties are mandatory, so no additional annotation is required.
+<.> directly editable property as defined to Apache Isis
+<.> optional property as defined to Apache Isis
+<.> optional property as defined to JDO/DataNucleus
+
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/IsisImageJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/IsisImageJdo.java
new file mode 100644
index 0000000..a2ff031
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/IsisImageJdo.java
@@ -0,0 +1,84 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.isis.images.jdo;
+
+import javax.jdo.annotations.Column;
+import javax.jdo.annotations.DatastoreIdentity;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.PersistenceCapable;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.value.Image;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.isis.images.holder.IsisImageHolder;
+
+//tag::class[]
+@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@DomainObject(
+        objectType = "demo.IsisImageJdo"
+)
+public class IsisImageJdo                                          // <.>
+        implements HasAsciiDocDescription, IsisImageHolder {
+
+//end::class[]
+    public IsisImageJdo(Image initialValue) {
+        this.readOnlyProperty = initialValue;
+        this.readWriteProperty = initialValue;
+    }
+
+//tag::class[]
+    @Title(prepend = "Image JDO entity: ")
+    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @Column(allowsNull = "false")                                               // <.>
+    @Getter @Setter
+    private Image readOnlyProperty;
+
+    @Property(editing = Editing.ENABLED)                                        // <.>
+    @MemberOrder(name = "editable-properties", sequence = "1")
+    @Column(allowsNull = "false")
+    @Getter @Setter
+    private Image readWriteProperty;
+
+    @Property(optionality = Optionality.OPTIONAL)                               // <.>
+    @MemberOrder(name = "optional-properties", sequence = "1")
+    @Column(allowsNull = "true")                                                // <.>
+    @Getter @Setter
+    private Image readOnlyOptionalProperty;
+
+    @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
+    @MemberOrder(name = "optional-properties", sequence = "2")
+    @Column(allowsNull = "true")
+    @Getter @Setter
+    private Image readWriteOptionalProperty;
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/integers/vm/WrapperIntegerVm.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/IsisImageJdo.layout.xml
similarity index 100%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/integers/vm/WrapperIntegerVm.layout.xml
copy to examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/IsisImageJdo.layout.xml
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/IsisImageJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/IsisImageJdoEntities.java
new file mode 100644
index 0000000..143a771
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/IsisImageJdoEntities.java
@@ -0,0 +1,27 @@
+package demoapp.dom.types.isis.images.jdo;
+
+import java.util.List;
+import java.util.Optional;
+
+import javax.inject.Inject;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.applib.value.Image;
+
+@Service
+public class IsisImageJdoEntities {
+
+    public Optional<IsisImageJdo> find(final Image readOnlyProperty) {
+        return repositoryService.firstMatch(IsisImageJdo.class, x -> x.getReadOnlyProperty() == readOnlyProperty);
+    }
+
+    public List<IsisImageJdo> all() {
+        return repositoryService.allInstances(IsisImageJdo.class);
+    }
+
+    @Inject
+    RepositoryService repositoryService;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/IsisImageJdoSeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/IsisImageJdoSeedService.java
new file mode 100644
index 0000000..a07eb32
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/IsisImageJdoSeedService.java
@@ -0,0 +1,47 @@
+package demoapp.dom.types.isis.images.jdo;
+
+import java.util.stream.Stream;
+
+import javax.inject.Inject;
+
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.applib.value.Image;
+import org.apache.isis.core.runtime.events.app.AppLifecycleEvent;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
+
+import demoapp.dom.types.Samples;
+
+@Service
+public class IsisImageJdoSeedService {
+
+    @EventListener(AppLifecycleEvent.class)
+    public void onAppLifecycleEvent(AppLifecycleEvent event) {
+
+        if (event.getEventType() == AppLifecycleEvent.EventType.appPostMetamodel) {
+            fixtureScripts.run(new IsisImageJdoEntityFixture());
+        }
+    }
+
+    @Inject
+    FixtureScripts fixtureScripts;
+
+    static class IsisImageJdoEntityFixture extends FixtureScript {
+
+        @Override
+        protected void execute(ExecutionContext executionContext) {
+            samples.stream()
+                    .map(IsisImageJdo::new)
+                    .forEach(repositoryService::persist);
+        }
+
+        @Inject
+        RepositoryService repositoryService;
+
+        @Inject
+        Samples<Image> samples;
+    }
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/WrapperCharacterJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/WrapperCharacterJdo-description.adoc
deleted file mode 100644
index 7d84c6c..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/WrapperCharacterJdo-description.adoc
+++ /dev/null
@@ -1,15 +0,0 @@
-JDO supports `Character` out-of-the-box, so no special annotations are required.
-
-[source,java]
-----
-include::IsisImageJdo.java[tags=class]
-----
-<.> a no-arg constructor is introduced by JDO enhancer
-<.> required property as defined to JDO/DataNucleus.
-+
-Apache Isis assumes properties are mandatory, so no additional annotation is required.
-<.> directly editable property as defined to Apache Isis
-<.> optional property as defined to Apache Isis
-<.> optional property as defined to JDO/DataNucleus
-
-
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/WrapperCharacterJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/WrapperCharacterJdo.java
deleted file mode 100644
index 08fb538..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/WrapperCharacterJdo.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 demoapp.dom.types.isis.images.jdo;
-
-import javax.jdo.annotations.Column;
-import javax.jdo.annotations.DatastoreIdentity;
-import javax.jdo.annotations.IdGeneratorStrategy;
-import javax.jdo.annotations.IdentityType;
-import javax.jdo.annotations.PersistenceCapable;
-
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Title;
-import org.apache.isis.applib.annotation.Where;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.isis.images.holder.IsisImageHolder;
-
-//tag::class[]
-@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
-@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
-@DomainObject(
-        objectType = "demo.IsisImageJdo"
-)
-public class IsisImageJdo                                          // <.>
-        implements HasAsciiDocDescription, IsisImageHolder {
-
-//end::class[]
-    public IsisImageJdo(Character initialValue) {
-        this.readOnlyProperty = initialValue;
-        this.readWriteProperty = initialValue;
-    }
-
-//tag::class[]
-    @Title(prepend = "Character (wrapper) JDO entity: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
-    @Column(allowsNull = "false")                                               // <.>
-    @Getter @Setter
-    private Character readOnlyProperty;
-
-    @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
-    @Column(allowsNull = "false")
-    @Getter @Setter
-    private Character readWriteProperty;
-
-    @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
-    @Column(allowsNull = "true")                                                // <.>
-    @Getter @Setter
-    private Character readOnlyOptionalProperty;
-
-    @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
-    @Column(allowsNull = "true")
-    @Getter @Setter
-    private Character readWriteOptionalProperty;
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/WrapperCharacterJdo.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/WrapperCharacterJdo.layout.xml
deleted file mode 100644
index 777ee39..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/WrapperCharacterJdo.layout.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<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="10" unreferencedActions="true">
-			<cpt:domainObject />
-			<cpt:action id="actionReturning"/>
-			<cpt:action id="actionReturningCollection"/>
-			<cpt:action id="rebuildMetamodel"/>
-		</bs3:col>
-		<bs3:col span="2">
-			<cpt:fieldSet name="" id="sources" />
-		</bs3:col>
-	</bs3:row>
-
-	<bs3:row>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Read Only Properties" id="read-only-properties"/>
-			<cpt:fieldSet name="Editable Properties" id="editable-properties"/>
-			<cpt:fieldSet name="Optional Properties" id="optional-properties"/>
-			<cpt:fieldSet name="Label Positions" id="label-positions"/>
-			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
-			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
-		</bs3:col>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Description" id="description" >
-				<cpt:action id="clearHints" position="PANEL" />
-				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
-				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
-				<cpt:property id="description"/>
-			</cpt:fieldSet>
-		</bs3:col>
-	</bs3:row>
-	<bs3:row>
-		<bs3:col span="12" unreferencedCollections="true"/>
-	</bs3:row>
-
-</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/WrapperCharacterJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/WrapperCharacterJdoEntities.java
deleted file mode 100644
index b7fb9e6..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/WrapperCharacterJdoEntities.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package demoapp.dom.types.isis.images.jdo;
-
-import java.util.List;
-import java.util.Optional;
-
-import javax.inject.Inject;
-
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.services.repository.RepositoryService;
-
-@Service
-public class IsisImageJdoEntities {
-
-    public Optional<IsisImageJdo> find(final Character readOnlyProperty) {
-        return repositoryService.firstMatch(IsisImageJdo.class, x -> x.getReadOnlyProperty() == readOnlyProperty);
-    }
-
-    public List<IsisImageJdo> all() {
-        return repositoryService.allInstances(IsisImageJdo.class);
-    }
-
-    @Inject
-    RepositoryService repositoryService;
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/WrapperCharacterJdoSeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/WrapperCharacterJdoSeedService.java
deleted file mode 100644
index 40cd5a1..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/jdo/WrapperCharacterJdoSeedService.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package demoapp.dom.types.isis.images.jdo;
-
-import java.util.stream.Stream;
-
-import javax.inject.Inject;
-
-import org.springframework.context.event.EventListener;
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.services.repository.RepositoryService;
-import org.apache.isis.core.runtime.events.app.AppLifecycleEvent;
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
-
-@Service
-public class IsisImageJdoSeedService {
-
-    @EventListener(AppLifecycleEvent.class)
-    public void onAppLifecycleEvent(AppLifecycleEvent event) {
-
-        if (event.getEventType() == AppLifecycleEvent.EventType.appPostMetamodel) {
-            fixtureScripts.run(new IsisImageJdoEntityFixture());
-        }
-    }
-
-    @Inject
-    FixtureScripts fixtureScripts;
-
-    static class IsisImageJdoEntityFixture extends FixtureScript {
-
-        @Override
-        protected void execute(ExecutionContext executionContext) {
-            Stream.of('a', 'b', 'c')
-                    .map(IsisImageJdo::new)
-                    .forEach(repositoryService::persist);
-        }
-
-        @Inject
-        RepositoryService repositoryService;
-
-    }
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/vm/IsisImageVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/vm/IsisImageVm-description.adoc
new file mode 100644
index 0000000..304d6c9
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/vm/IsisImageVm-description.adoc
@@ -0,0 +1,13 @@
+JAXB supports `Image` out-of-the-box, so no special annotations are required.
+
+[source,java]
+----
+include::IsisImageVm.java[tags=class]
+----
+<.> a no-arg constructor is required by JAXB
+<.> required property as defined to JAXB
+<.> directly editable property as defined to Apache Isis
+<.> optional property as defined to Apache Isis.
++
+This is the default for JAXB so no additional annotation required.
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/vm/IsisImageVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/vm/IsisImageVm.java
new file mode 100644
index 0000000..e9b5135
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/vm/IsisImageVm.java
@@ -0,0 +1,86 @@
+/*
+ *  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 demoapp.dom.types.isis.images.vm;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.value.Image;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.isis.images.holder.IsisImageHolder;
+
+//tag::class[]
+@XmlRootElement(name = "root")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(
+        nature=Nature.VIEW_MODEL,
+        objectType = "demo.IsisImageVm"
+)
+@lombok.NoArgsConstructor                                                       // <.>
+public class IsisImageVm
+        implements HasAsciiDocDescription, IsisImageHolder {
+
+//end::class[]
+    public IsisImageVm(Image initialValue) {
+        this.readOnlyProperty = initialValue;
+        this.readWriteProperty = initialValue;
+    }
+
+//tag::class[]
+    @Title(prepend = "Image view model: ")
+    @MemberOrder(name = "read-only-properties", sequence = "1")
+    @XmlElement(required = true)                                                // <.>
+    @Getter @Setter
+    private Image readOnlyProperty;
+
+    @Property(editing = Editing.ENABLED)                                        // <.>
+    @MemberOrder(name = "editable-properties", sequence = "1")
+    @XmlElement(required = true)
+    @Getter @Setter
+    private Image readWriteProperty;
+
+    @Property(optionality = Optionality.OPTIONAL)                               // <.>
+    @MemberOrder(name = "optional-properties", sequence = "1")
+    @Getter @Setter
+    private Image readOnlyOptionalProperty;
+
+    @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
+    @MemberOrder(name = "optional-properties", sequence = "2")
+    @Getter @Setter
+    private Image readWriteOptionalProperty;
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/integers/jdo/WrapperIntegerJdo.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/vm/IsisImageVm.layout.xml
similarity index 100%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/integers/jdo/WrapperIntegerJdo.layout.xml
copy to examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/vm/IsisImageVm.layout.xml
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/vm/WrapperCharacterVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/vm/WrapperCharacterVm-description.adoc
deleted file mode 100644
index 7a026be..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/vm/WrapperCharacterVm-description.adoc
+++ /dev/null
@@ -1,13 +0,0 @@
-JAXB supports `Character` out-of-the-box, so no special annotations are required.
-
-[source,java]
-----
-include::IsisImageVm.java[tags=class]
-----
-<.> a no-arg constructor is required by JAXB
-<.> required property as defined to JAXB
-<.> directly editable property as defined to Apache Isis
-<.> optional property as defined to Apache Isis.
-+
-This is the default for JAXB so no additional annotation required.
-
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/vm/WrapperCharacterVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/vm/WrapperCharacterVm.java
deleted file mode 100644
index d1c7451..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/vm/WrapperCharacterVm.java
+++ /dev/null
@@ -1,85 +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 demoapp.dom.types.isis.images.vm;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Nature;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Title;
-import org.apache.isis.applib.annotation.Where;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.isis.images.holder.IsisImageHolder;
-
-//tag::class[]
-@XmlRootElement(name = "root")
-@XmlType
-@XmlAccessorType(XmlAccessType.FIELD)
-@DomainObject(
-        nature=Nature.VIEW_MODEL,
-        objectType = "demo.IsisImageVm"
-)
-@lombok.NoArgsConstructor                                                       // <.>
-public class IsisImageVm
-        implements HasAsciiDocDescription, IsisImageHolder {
-
-//end::class[]
-    public IsisImageVm(Character initialValue) {
-        this.readOnlyProperty = initialValue;
-        this.readWriteProperty = initialValue;
-    }
-
-//tag::class[]
-    @Title(prepend = "Character (wrapper) view model: ")
-    @MemberOrder(name = "read-only-properties", sequence = "1")
-    @XmlElement(required = true)                                                // <.>
-    @Getter @Setter
-    private Character readOnlyProperty;
-
-    @Property(editing = Editing.ENABLED)                                        // <.>
-    @MemberOrder(name = "editable-properties", sequence = "1")
-    @XmlElement(required = true)
-    @Getter @Setter
-    private Character readWriteProperty;
-
-    @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @MemberOrder(name = "optional-properties", sequence = "1")
-    @Getter @Setter
-    private Character readOnlyOptionalProperty;
-
-    @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @MemberOrder(name = "optional-properties", sequence = "2")
-    @Getter @Setter
-    private Character readWriteOptionalProperty;
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/vm/WrapperCharacterVm.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/vm/WrapperCharacterVm.layout.xml
deleted file mode 100644
index 777ee39..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/images/vm/WrapperCharacterVm.layout.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<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="10" unreferencedActions="true">
-			<cpt:domainObject />
-			<cpt:action id="actionReturning"/>
-			<cpt:action id="actionReturningCollection"/>
-			<cpt:action id="rebuildMetamodel"/>
-		</bs3:col>
-		<bs3:col span="2">
-			<cpt:fieldSet name="" id="sources" />
-		</bs3:col>
-	</bs3:row>
-
-	<bs3:row>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Read Only Properties" id="read-only-properties"/>
-			<cpt:fieldSet name="Editable Properties" id="editable-properties"/>
-			<cpt:fieldSet name="Optional Properties" id="optional-properties"/>
-			<cpt:fieldSet name="Label Positions" id="label-positions"/>
-			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
-			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
-		</bs3:col>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Description" id="description" >
-				<cpt:action id="clearHints" position="PANEL" />
-				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
-				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
-				<cpt:property id="description"/>
-			</cpt:fieldSet>
-		</bs3:col>
-	</bs3:row>
-	<bs3:row>
-		<bs3:col span="12" unreferencedCollections="true"/>
-	</bs3:row>
-
-</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePaths-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePaths-description.adoc
new file mode 100644
index 0000000..c9673b7
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePaths-description.adoc
@@ -0,0 +1,75 @@
+The framework has built-in support for all of the Wrapper data types, including `LocalResourcePath`.
+
+From here you can:
+
+* navigate to an entity that uses the `LocalResourcePath` datatype
+* open a view model that uses the `LocalResourcePath` datatype
+
+Some properties on these domain objects are mandatory, some optional.
+
+== Common interface
+
+These objects both implement a common interface, `IsisLocalResourcePathHolder`:
+
+[source,java]
+----
+include::holder/IsisLocalResourcePathHolder.java[tags=class]
+----
+
+There is also an extension of this interface, `IsisLocalResourcePathHolder2`, with default methods demonstrating the use of label positions:
+
+[source,java]
+----
+include::holder/IsisLocalResourcePathHolder2.java[tags=class]
+----
+
+<.> The default methods have annotations that are automatically inherited.
+<.> Using `@MemberOrder` positions the properties into the appropriate `<field-set>` within the `Xxx.layout.xml` layout file.
+
+
+== Mixin actions
+
+A number of mixin actions contribute through this interface, demonstrate the use of `LocalResourcePath` as a parameter and as a return type.
+For example:
+
+* the `updateReadOnlyProperty` action is:
++
+[source,java]
+----
+include::holder/IsisLocalResourcePathHolder_updateReadOnlyProperty.java[tags=class]
+----
+
+* the `updateReadOnlyOptionalProperty` action is:
++
+[source,java]
+----
+include::holder/IsisLocalResourcePathHolder_updateReadOnlyOptionalProperty.java[tags=class]
+----
+
+* the `actionReturning` action is:
++
+[source,java]
+----
+include::holder/IsisLocalResourcePathHolder_actionReturning.java[tags=class]
+----
+
+
+* the `actionReturningCollection` action is:
++
+[source,java]
+----
+include::holder/IsisLocalResourcePathHolder_actionReturningCollection.java[tags=class]
+----
+
+== Mixin properties
+
+We also use the interface to contribute a mixin property:
+
+* the `mixinProperty` property:
++
+[source,java]
+----
+include::holder/IsisLocalResourcePathHolder_mixinProperty.java[tags=class]
+----
+
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePaths.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePaths.java
new file mode 100644
index 0000000..0250e64
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePaths.java
@@ -0,0 +1,81 @@
+/*
+ *  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 demoapp.dom.types.isis.localresourcepaths;
+
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.LocalResourcePath;
+
+import lombok.extern.log4j.Log4j2;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.Samples;
+import demoapp.dom.types.isis.localresourcepaths.jdo.IsisLocalResourcePathJdoEntities;
+import demoapp.dom.types.isis.localresourcepaths.jdo.IsisLocalResourcePathJdo;
+import demoapp.dom.types.isis.localresourcepaths.vm.IsisLocalResourcePathVm;
+
+@XmlRootElement(name = "Demo")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(nature=Nature.VIEW_MODEL, objectType = "demo.IsisLocalResourcePaths", editing=Editing.ENABLED)
+@Log4j2
+public class IsisLocalResourcePaths implements HasAsciiDocDescription {
+
+    public String title() {
+        return "LocalResourcePath data type";
+    }
+
+    @Action(semantics = SemanticsOf.SAFE)
+    @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
+    public IsisLocalResourcePathVm openViewModel(LocalResourcePath initialValue) {
+        return new IsisLocalResourcePathVm(initialValue);
+    }
+    public LocalResourcePath default0OpenViewModel() {
+        return samples.single();
+    }
+
+    @Collection
+    public List<IsisLocalResourcePathJdo> getEntities() {
+        return entities.all();
+    }
+
+    @Inject
+    @XmlTransient
+    IsisLocalResourcePathJdoEntities entities;
+
+    @Inject
+    @XmlTransient
+    Samples<LocalResourcePath> samples;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/floats/WrapperFloats.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePaths.layout.xml
similarity index 100%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/floats/WrapperFloats.layout.xml
copy to examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePaths.layout.xml
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePathsSamples.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePathsSamples.java
new file mode 100644
index 0000000..dd61c92
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePathsSamples.java
@@ -0,0 +1,37 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.isis.localresourcepaths;
+
+import java.util.stream.Stream;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.value.LocalResourcePath;
+
+import demoapp.dom.types.Samples;
+
+@Service
+public class IsisLocalResourcePathsSamples implements Samples<LocalResourcePath> {
+
+    @Override
+    public Stream<LocalResourcePath> stream() {
+        return Stream.of();
+    }
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePathsStream.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePathsStream.java
deleted file mode 100644
index 0503164..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePathsStream.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.
- */
-package demoapp.dom.types.isis.localresourcepaths;
-
-import java.util.stream.Stream;
-
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.value.LocalResourcePath;
-
-import demoapp.dom.types.Samples;
-
-@Service
-public class IsisLocalResourcePathsStream implements Samples<LocalResourcePath> {
-
-    @Override
-    public Stream<LocalResourcePath> stream() {
-        return Stream.of(null);
-    }
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/WrapperCharacters-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/WrapperCharacters-description.adoc
deleted file mode 100644
index 571c860..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/WrapperCharacters-description.adoc
+++ /dev/null
@@ -1,75 +0,0 @@
-The framework has built-in support for all of the Wrapper data types, including `Character`.
-
-From here you can:
-
-* navigate to an entity that uses the `Character` datatype
-* open a view model that uses the `Character` datatype
-
-Some properties on these domain objects are mandatory, some optional.
-
-== Common interface
-
-These objects both implement a common interface, `IsisLocalResourcePathHolder`:
-
-[source,java]
-----
-include::holder/IsisLocalResourcePathHolder.java[tags=class]
-----
-
-There is also an extension of this interface, `IsisLocalResourcePathHolder2`, with default methods demonstrating the use of label positions:
-
-[source,java]
-----
-include::holder/IsisLocalResourcePathHolder2.java[tags=class]
-----
-
-<.> The default methods have annotations that are automatically inherited.
-<.> Using `@MemberOrder` positions the properties into the appropriate `<field-set>` within the `Xxx.layout.xml` layout file.
-
-
-== Mixin actions
-
-A number of mixin actions contribute through this interface, demonstrate the use of `Character` as a parameter and as a return type.
-For example:
-
-* the `updateReadOnlyProperty` action is:
-+
-[source,java]
-----
-include::holder/IsisLocalResourcePathHolder_updateReadOnlyProperty.java[tags=class]
-----
-
-* the `updateReadOnlyOptionalProperty` action is:
-+
-[source,java]
-----
-include::holder/IsisLocalResourcePathHolder_updateReadOnlyOptionalProperty.java[tags=class]
-----
-
-* the `actionReturning` action is:
-+
-[source,java]
-----
-include::holder/IsisLocalResourcePathHolder_actionReturning.java[tags=class]
-----
-
-
-* the `actionReturningCollection` action is:
-+
-[source,java]
-----
-include::holder/IsisLocalResourcePathHolder_actionReturningCollection.java[tags=class]
-----
-
-== Mixin properties
-
-We also use the interface to contribute a mixin property:
-
-* the `mixinProperty` property:
-+
-[source,java]
-----
-include::holder/IsisLocalResourcePathHolder_mixinProperty.java[tags=class]
-----
-
-
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/WrapperCharacters.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/WrapperCharacters.java
deleted file mode 100644
index de81a16..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/WrapperCharacters.java
+++ /dev/null
@@ -1,76 +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 demoapp.dom.types.isis.localresourcepaths;
-
-import java.util.List;
-
-import javax.inject.Inject;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.Collection;
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.Nature;
-import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.extern.log4j.Log4j2;
-
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.isis.localresourcepaths.jdo.IsisLocalResourcePathJdoEntities;
-import demoapp.dom.types.isis.localresourcepaths.jdo.IsisLocalResourcePathJdo;
-import demoapp.dom.types.isis.localresourcepaths.vm.IsisLocalResourcePathVm;
-
-@XmlRootElement(name = "Demo")
-@XmlType
-@XmlAccessorType(XmlAccessType.FIELD)
-@DomainObject(nature=Nature.VIEW_MODEL, objectType = "demo.IsisLocalResourcePaths", editing=Editing.ENABLED)
-@Log4j2
-public class IsisLocalResourcePaths implements HasAsciiDocDescription {
-
-    public String title() {
-        return "Character (wrapper) data type";
-    }
-
-    @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public IsisLocalResourcePathVm openViewModel(Character initialValue) {
-        return new IsisLocalResourcePathVm(initialValue);
-    }
-    public Character default0OpenViewModel() {
-        return 'a';
-    }
-
-    @Collection
-    public List<IsisLocalResourcePathJdo> getEntities() {
-        return entities.all();
-    }
-
-    @Inject
-    @XmlTransient
-    IsisLocalResourcePathJdoEntities entities;
-
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/WrapperCharacters.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/WrapperCharacters.layout.xml
deleted file mode 100644
index 55c5b87..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/WrapperCharacters.layout.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<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="10" unreferencedActions="true">
-			<cpt:domainObject />
-			<cpt:action id="rebuildMetamodel"/>
-		</bs3:col>
-		<bs3:col span="2">
-			<cpt:fieldSet name="" id="sources" />
-		</bs3:col>
-	</bs3:row>
-
-	<bs3:row>
-		<bs3:col span="6">
-			<bs3:row>
-				<bs3:col span="12">
-					<cpt:collection id="entities"/>
-				</bs3:col>
-				<bs3:col span="12">
-					<cpt:action id="openViewModel"/>
-				</bs3:col>
-			</bs3:row>
-			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
-		</bs3:col>
-		<bs3:col span="6">
-			<cpt:fieldSet name="Description" id="description" >
-				<cpt:action id="clearHints" position="PANEL" />
-				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
-				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
-				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
-				<cpt:property id="description"/>
-			</cpt:fieldSet>
-		</bs3:col>
-	</bs3:row>
-	<bs3:row>
-		<bs3:col span="12" unreferencedCollections="true"/>
-	</bs3:row>
-
-</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder.java
new file mode 100644
index 0000000..f6f1586
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder.java
@@ -0,0 +1,39 @@
+/*
+ *  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 demoapp.dom.types.isis.localresourcepaths.holder;
+
+import org.apache.isis.applib.value.LocalResourcePath;
+
+//tag::class[]
+public interface IsisLocalResourcePathHolder {
+
+    LocalResourcePath getReadOnlyProperty();
+    void setReadOnlyProperty(LocalResourcePath c);
+
+    LocalResourcePath getReadWriteProperty();
+    void setReadWriteProperty(LocalResourcePath c);
+
+    LocalResourcePath getReadOnlyOptionalProperty();
+    void setReadOnlyOptionalProperty(LocalResourcePath c);
+
+    LocalResourcePath getReadWriteOptionalProperty();
+    void setReadWriteOptionalProperty(LocalResourcePath c);
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder2.java
new file mode 100644
index 0000000..39fb777
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder2.java
@@ -0,0 +1,77 @@
+/*
+ *  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 demoapp.dom.types.isis.localresourcepaths.holder;
+
+import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.value.LocalResourcePath;
+
+//tag::class[]
+public interface IsisLocalResourcePathHolder2 extends IsisLocalResourcePathHolder {
+
+    @Property
+    @PropertyLayout(                                                        // <.>
+            labelPosition = LabelPosition.LEFT,
+            describedAs = "labelPosition=LEFT",
+            hidden = Where.ALL_TABLES
+    )
+    @MemberOrder(name = "label-positions", sequence = "1")                  // <.>
+    default LocalResourcePath getReadOnlyPropertyDerivedLabelPositionLeft() {
+        return getReadOnlyProperty();
+    }
+
+    @Property
+    @PropertyLayout(
+            labelPosition = LabelPosition.TOP,
+            describedAs = "labelPosition=TOP",
+            hidden = Where.ALL_TABLES
+    )
+    @MemberOrder(name = "label-positions", sequence = "2")
+    default LocalResourcePath getReadOnlyPropertyDerivedLabelPositionTop() {
+        return getReadOnlyProperty();
+    }
+
+    @Property
+    @PropertyLayout(
+            labelPosition = LabelPosition.RIGHT,    // TODO: not honoured
+            describedAs = "labelPosition=RIGHT",
+            hidden = Where.ALL_TABLES
+    )
+    @MemberOrder(name = "label-positions", sequence = "3")
+    default LocalResourcePath getReadOnlyPropertyDerivedLabelPositionRight() {
+        return getReadOnlyProperty();
+    }
+
+    @Property
+    @PropertyLayout(
+            labelPosition = LabelPosition.NONE,
+            describedAs = "labelPosition=NONE",
+            hidden = Where.ALL_TABLES
+    )
+    @MemberOrder(name = "label-positions", sequence = "4")
+    default LocalResourcePath getReadOnlyPropertyDerivedLabelPositionNone() {
+        return getReadOnlyProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_actionReturning.java
new file mode 100644
index 0000000..b54e250
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_actionReturning.java
@@ -0,0 +1,40 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.isis.localresourcepaths.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.LocalResourcePath;
+
+import lombok.RequiredArgsConstructor;
+
+
+//tag::class[]
+@Action(semantics = SemanticsOf.SAFE)
+@RequiredArgsConstructor
+public class IsisLocalResourcePathHolder_actionReturning {
+
+    private final IsisLocalResourcePathHolder holder;
+
+    public LocalResourcePath act() {
+        return holder.getReadOnlyProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_actionReturningCollection.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_actionReturningCollection.java
new file mode 100644
index 0000000..22ab1c6
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_actionReturningCollection.java
@@ -0,0 +1,53 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.isis.localresourcepaths.holder;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.LocalResourcePath;
+
+import lombok.RequiredArgsConstructor;
+import lombok.val;
+
+import demoapp.dom.types.Samples;
+
+
+//tag::class[]
+@Action(semantics = SemanticsOf.SAFE)
+@RequiredArgsConstructor
+public class IsisLocalResourcePathHolder_actionReturningCollection {
+
+    private final IsisLocalResourcePathHolder holder;
+
+    public Collection<LocalResourcePath> act() {
+        return samples.stream()
+                .collect(Collectors.toList());
+    }
+
+    @Inject
+    Samples<LocalResourcePath> samples;
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_mixinProperty.java
new file mode 100644
index 0000000..e3834b7
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_mixinProperty.java
@@ -0,0 +1,46 @@
+/*
+ *  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 demoapp.dom.types.isis.localresourcepaths.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.value.LocalResourcePath;
+
+import lombok.RequiredArgsConstructor;
+
+import demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder;
+
+
+//tag::class[]
+@Property()
+@PropertyLayout(hidden = Where.ALL_TABLES)
+@RequiredArgsConstructor
+public class IsisLocalResourcePathHolder_mixinProperty {
+
+    private final IsisLocalResourcePathHolder holder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public LocalResourcePath prop() {
+        return holder.getReadOnlyProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyOptionalProperty.java
new file mode 100644
index 0000000..e3cb361
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyOptionalProperty.java
@@ -0,0 +1,56 @@
+/*
+ *  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 demoapp.dom.types.isis.localresourcepaths.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Parameter;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.LocalResourcePath;
+
+import lombok.RequiredArgsConstructor;
+
+
+//tag::class[]
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyOptionalProperty",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update")
+@RequiredArgsConstructor
+public class IsisLocalResourcePathHolder_updateReadOnlyOptionalProperty {
+
+    private final IsisLocalResourcePathHolder holder;
+
+    public IsisLocalResourcePathHolder act(
+            @Parameter(optionality = Optionality.OPTIONAL)              // <.>
+            LocalResourcePath newValue
+    ) {
+        holder.setReadOnlyOptionalProperty(newValue);
+        return holder;
+    }
+    public LocalResourcePath default0Act() {
+        return holder.getReadOnlyOptionalProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyProperty.java
new file mode 100644
index 0000000..e1fa260
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyProperty.java
@@ -0,0 +1,51 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.isis.localresourcepaths.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.LocalResourcePath;
+
+import lombok.RequiredArgsConstructor;
+
+
+//tag::class[]
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update")
+@RequiredArgsConstructor
+public class IsisLocalResourcePathHolder_updateReadOnlyProperty {
+
+    private final IsisLocalResourcePathHolder holder;
+
+    public IsisLocalResourcePathHolder act(LocalResourcePath newValue) {
+        holder.setReadOnlyProperty(newValue);
+        return holder;
+    }
+    public LocalResourcePath default0Act() {
+        return holder.getReadOnlyProperty();
+    }
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyPropertyWithChoices.java
new file mode 100644
index 0000000..daa9b1e
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder_updateReadOnlyPropertyWithChoices.java
@@ -0,0 +1,65 @@
+/*
+ *  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 demoapp.dom.types.isis.localresourcepaths.holder;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.value.LocalResourcePath;
+
+import lombok.RequiredArgsConstructor;
+
+import demoapp.dom.types.Samples;
+
+
+//tag::class[]
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "2"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Update with choices")
+@RequiredArgsConstructor
+public class IsisLocalResourcePathHolder_updateReadOnlyPropertyWithChoices {
+
+    private final IsisLocalResourcePathHolder holder;
+
+    public IsisLocalResourcePathHolder act(LocalResourcePath newValue) {
+        holder.setReadOnlyProperty(newValue);
+        return holder;
+    }
+    public LocalResourcePath default0Act() {
+        return holder.getReadOnlyProperty();
+    }
+    public List<LocalResourcePath> choices0Act() {
+        return samples.stream()
+                .collect(Collectors.toList());
+    }
+
+    @Inject
+    Samples<LocalResourcePath> samples;
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/WrapperCharacterHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/WrapperCharacterHolder.java
deleted file mode 100644
index bac3561..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/WrapperCharacterHolder.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.
- */
-package demoapp.dom.types.isis.localresourcepaths.holder;
-
-//tag::class[]
-public interface IsisLocalResourcePathHolder {
-
-    Character getReadOnlyProperty();
-    void setReadOnlyProperty(Character c);
-
-    Character getReadWriteProperty();
-    void setReadWriteProperty(Character c);
-
-    Character getReadOnlyOptionalProperty();
-    void setReadOnlyOptionalProperty(Character c);
-
-    Character getReadWriteOptionalProperty();
-    void setReadWriteOptionalProperty(Character c);
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/WrapperCharacterHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/WrapperCharacterHolder2.java
deleted file mode 100644
index 37dba2f..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/WrapperCharacterHolder2.java
+++ /dev/null
@@ -1,76 +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 demoapp.dom.types.isis.localresourcepaths.holder;
-
-import org.apache.isis.applib.annotation.LabelPosition;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Where;
-
-//tag::class[]
-public interface IsisLocalResourcePathHolder2 extends IsisLocalResourcePathHolder {
-
-    @Property
-    @PropertyLayout(                                                        // <.>
-            labelPosition = LabelPosition.LEFT,
-            describedAs = "labelPosition=LEFT",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "1")                  // <.>
-    default Character getReadOnlyPropertyDerivedLabelPositionLeft() {
-        return getReadOnlyProperty();
-    }
-
-    @Property
-    @PropertyLayout(
-            labelPosition = LabelPosition.TOP,
-            describedAs = "labelPosition=TOP",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "2")
-    default Character getReadOnlyPropertyDerivedLabelPositionTop() {
-        return getReadOnlyProperty();
-    }
-
-    @Property
-    @PropertyLayout(
-            labelPosition = LabelPosition.RIGHT,    // TODO: not honoured
-            describedAs = "labelPosition=RIGHT",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "3")
-    default Character getReadOnlyPropertyDerivedLabelPositionRight() {
-        return getReadOnlyProperty();
-    }
-
-    @Property
-    @PropertyLayout(
-            labelPosition = LabelPosition.NONE,
-            describedAs = "labelPosition=NONE",
-            hidden = Where.ALL_TABLES
-    )
-    @MemberOrder(name = "label-positions", sequence = "4")
-    default Character getReadOnlyPropertyDerivedLabelPositionNone() {
-        return getReadOnlyProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/WrapperCharacterHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/WrapperCharacterHolder_actionReturning.java
deleted file mode 100644
index 7ec69a7..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/WrapperCharacterHolder_actionReturning.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 demoapp.dom.types.isis.localresourcepaths.holder;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-
-
-//tag::class[]
-@Action(semantics = SemanticsOf.SAFE)
-@RequiredArgsConstructor
-public class IsisLocalResourcePathHolder_actionReturning {
-
-    private final IsisLocalResourcePathHolder holder;
-
-    public Character act() {
-        return holder.getReadOnlyProperty();
-    }
-
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/WrapperCharacterHolder_actionReturningCollection.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/WrapperCharacterHolder_actionReturningCollection.java
deleted file mode 100644
index 97e02d5..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/WrapperCharacterHolder_actionReturningCollection.java
+++ /dev/null
@@ -1,48 +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 demoapp.dom.types.isis.localresourcepaths.holder;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.stream.Stream;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-import lombok.val;
-
-
-//tag::class[]
-@Action(semantics = SemanticsOf.SAFE)
-@RequiredArgsConstructor
-public class IsisLocalResourcePathHolder_actionReturningCollection {
-
-    private final IsisLocalResourcePathHolder holder;
-
-    public Collection<Character> act() {
-        final Collection<Character> characters = new ArrayList<>();
-        val initial = holder.getReadOnlyProperty();
-        Stream.of(0, 1, 2, 3).forEach(x ->
-                characters.add((char) (initial + x))
-        );
-        return characters;
-    }
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/WrapperCharacterHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/WrapperCharacterHolder_mixinProperty.java
deleted file mode 100644
index 1c85493..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/WrapperCharacterHolder_mixinProperty.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 demoapp.dom.types.isis.localresourcepaths.holder;
-
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Where;
-
-import lombok.RequiredArgsConstructor;
-
-import demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder;
-
-
-//tag::class[]
-@Property()
-@PropertyLayout(hidden = Where.ALL_TABLES)
-@RequiredArgsConstructor
-public class IsisLocalResourcePathHolder_mixinProperty {
-
-    private final IsisLocalResourcePathHolder holder;
-
-    @MemberOrder(name = "contributed", sequence = "1")
-    public Character prop() {
-        return holder.getReadOnlyProperty();
-    }
-
-}
-//end::class[]
... 49994 lines suppressed ...