anchor.diff:  public class SimpleObject /* ... */ {
   
       // ...
  -    public static class UpdateNameActionDomainEvent extends
  +
  +    @Action(semantics = IDEMPOTENT,
  +            commandPublishing = Publishing.ENABLED,
  +            executionPublishing = Publishing.ENABLED,
  +            associateWith = "name",
  +            domainEvent = updateName.DomainEvent.class)                 // <2>
  +    public class updateName {                                           // <.>
  +
  +        public class DomainEvent extends
               SimpleModule.ActionDomainEvent<SimpleObject.updateName> {}  // <.>
   
  -    @Action(semantics = IDEMPOTENT,
  -	        commandPublishing = Publishing.ENABLED,
  -	        executionPublishing = Publishing.ENABLED,
  -	        associateWith = "name",
  -	        domainEvent = UpdateNameActionDomainEvent.class)
  -    public class updateName {                                           // <.>
           public SimpleObject act(@Name final String name) {
               setName(name);                                              // <.>
               return SimpleObject.this;
  
positive.code: 
  Accordingly, a mixin can be defined using the xref:refguide:applib:index/annotation/Action.adoc[@Action], xref:refguide:applib:index/annotation/Property.adoc[@Property] or xref:refguide:applib:index/annotation/Collection.adoc[@Collection] annotations, but defined at the domain class level rather than at the method level.
  
  Using xref:refguide:applib:index/annotation/DomainObject.adoc#nature[@DomainObject#nature] attribute (specifying a nature of `Nature.MIXIN`), in combination with the above allows for more fine grained control, eg. nominating the mixin's method name.
  
  When the mixin follows the naming convention `SomeType_mixinName` then the method name can be abbreviated, and the name of the member being contributed is inferred from the name of the class itself, being everything after the last '_'.
  
  == Contributed Collection
  
  The example below shows how to contribute a collection, using xref:refguide:applib:index/annotation/Collection.adoc[@Collection].
  The method is expected to be called "coll":
  
  [source,java]
  
negative.code: ----
  
  Alternatively, you can use xref:refguide:applib:index/services/inject/ServiceInjector.adoc[ServiceInjector] to inject domain services after the mixin has been instantiated.
  You'll need to use this method if using nested non-`static` mixins:
  
  
  [source,java]
  