anchor.diff:          };
       }
   
  -    public static class PropertyDomainEvent<S,T>        //<!--4-->
  +    public static class PropertyDomainEvent<S,T>                            //<!--4-->
       extends org.apache.isis.applib.events.domain.PropertyDomainEvent<S,T> {}
   
       public static class CollectionDomainEvent<S,T>
  
positive.code: package domainapp.modules.simple;
  ... imports omitted ...
  @Configuration
  @Import({})                                             //<!--1-->
  @ComponentScan                                          //<!--2-->
  public class SimpleModule
                  implements ModuleWithFixtures {         //<!--3-->
  
      @Override
      public FixtureScript getTeardownFixture() {
  
negative.code: 
      public static class ActionDomainEvent<S> extends
      org.apache.isis.applib.events.domain.ActionDomainEvent<S> {}
  
      @ConfigurationProperties("app.simple-module")                           //<!--5-->
      @Data
      @Validated
      public static class Configuration {
          private final Types types = new Types();
          @Data
          public static class Types {
              private final Name name = new Name();
              @Data
              public static class Name {
                  private final Validation validation = new Validation();
                  @Data
                  public static class Validation {
                      private char[] prohibitedCharacters = "!&%$".toCharArray();
                      private String message = "Character '{}' is not allowed";
                  }
              }
          }
      }
  
  }
  ----
  <.> This module has no dependencies.
  If there were, these would be expressed in terms of module classes (each being a Spring `@Configuration`)
  <.> specifies this class' package as a root to scan for Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/stereotype/Component.html[@Component]s.
  <.> Optionally, modules can implement the testing's `ModuleWithFixtures` interface.
  Through this, they can provide a fixture script which can be used to teardown all entities that are "owned" by the module.
  Since the module dependency graph is known, this allows all data to be removed, useful for prototyping and sometimes for integration tests.
  <.> The actions for the domain objects and domain services all emit domain events, ultimately inheriting from xref:refguide:applib-cm:classes/domainevent/ActionDomainEvent.adoc[ActionDomainEvent].
  By convention, this inheritance hierarchy includes classes defined at the module level.
  This then allows subscribes to subscribe to all actions emitted by anything within the module. +
  Events can also be emitted for xref:refguide:applib-cm:classes/domainevent/PropertyDomainEvent.adoc[properties] and xref:refguide:applib-cm:classes/domainevent/CollectionDomainEvent.adoc[collections].
  <.> Spring Boot link:https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config-typesafe-configuration-properties[type-safe configuration], as per link:https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/context/properties/ConfigurationProperties.html[@ConfigurationProperties] annotation.
  This Spring Boot feature is used by the framework, but can equally easily be used by application code.
  The `@Name.Specification` class uses this configuration property.
  
  The scanning mechanism is leveraged by Apache Isis to pick up three types of classes:
  
  