anchor.diff:      public boolean hideAct() { /* ... */ }                      // <.>
   }
   ----
  -<.> indicates this is an action mixin.
  -<.> mixee is injected into the mixin
  -<3> method must be called "act". +
  +<.> indicates this is an action mixin (that contributes its method as an action) with method name 'act'
  +<.> mixee is injected into the mixin
  +<.> method must be called "act"
   Unlike contributed properties and collections, contributed actions can accept parameters, and have any semantics.
  -<4> xref:business-rules.adoc[supporting methods] follow the usual naming conventions.
  +<.> xref:business-rules.adoc[supporting methods] follow the usual naming conventions
   
   This contributes an action called "addDocument".
   
  -The following does the same thing, but using the (more flexible but more verbose) xref:refguide:applib-ant:Mixin.adoc[`@Mixin`] annotation:
  -
  -[source,java]
  -----
  -@Mixin(method="act")                                            // <.>
  +The following does the same thing, but using the xref:refguide:applib-ant:DomainObject.adoc[`@DomainObject`] annotation, to explicitly specify the method name:
  +
  +[source,java]
  +----
  +@Action                                                         // <.>
  +@DomainObject(nature=MIXIN, mixinMethod="act")                  // <.>
  +@RequiredArgsConstructor                                        // <.>
   public class DocumentHolder_addDocument {
   
       private final DocumentHolder holder;
  -    public DocumentHolderDocuments(DocumentHolder holder) {     // <.>
  -        this.holder = holder;
  -    }
  -
  -    @Action()
  -    @ActionLayout(contributed = Contributed.AS_ACTION)          // <.>
  +
       public Document> act(Document doc) {                        // <.>
           ...
       }
       public boolean hideAct() { /* ... */ }                      // <.>
   }
   ----
  -<.> indicates this is a mixin, and in this case nominates the method name. +
  -The recommended name for properties is "prop" (if none is specified the default name is "$$").
  -<.> mixee is injected into the mixin
  -<.> recommended
  -<.> method must match `@Mixin#method` above.
  +<.> indicates this is an action mixin (that contributes its method as an action)
  +<.> nominates the method name
  +<.> mixee is injected into the mixin
  +<.> method must match `@DomainObject(mixinMethod=...)` above
   Unlike contributed properties and collections, contributed actions can accept parameters.
  -<.> xref:business-rules.adoc[supporting methods] follow the usual naming conventions.
  +<.> xref:business-rules.adoc[supporting methods] follow the usual naming conventions
   
   
   [[mixins-as-nested-classes]]
  
positive.code:     public boolean hideColl() { /* ... */ }                     // <.>
  }
  ----
  <.> indicates this is a collection mixin.
  <.> mixee is injected into the mixin
  <.> method (which must be called "coll") must accept no arguments, be query-only, and return a collection.
  <.> supporting methods (discussed in xref:business-rules.adoc[business rules]) follow the usual naming conventions. +
  (Because the collection is derived/read-only, the only supporting method that is relevant is `hideColl()`).
  
  The above will result in a contributed collection "documents" for all types that implement/extend from `DocumentHolder`.
  
  The following does the same thing, but using the (more flexible but more verbose) xref:refguide:applib-ant:Mixin.adoc[`@Mixin`] annotation:
  
  [source,java]
  ----
  @Mixin(method="coll")                                           // <.>
  public class DocumentHolder_documents {
  
      private final DocumentHolder holder;
      public DocumentHolderDocuments(DocumentHolder holder) {     // <.>
          this.holder = holder;
      }
  
      @Action(semantics=SemanticsOf.SAFE)                         // <.>
      @ActionLayout(contributed = Contributed.AS_ASSOCIATION)     // <.>
      @CollectionLayout(defaultView="table")
      public List<Document> coll() {                              // <.>
          ...
      }
      public boolean hideColl() { /* ... */ }                     // <.>
  }
  ----
  <.> indicates this is a mixin, and in this case nominates the method name.
  The recommended name for collections is "coll" (if none is specified the default name is "$$").
  <.> mixee is injected into the mixin
  <.> required; actions that have side-effects cannot be contributed as collections
  <.> required; otherwise the mixin will default to being rendered as an action
  <.> method (which must match `@Mixin#method` above), must accept no arguments.
  The mixin is a collection rather than a property because the return type is a collection, not a scalar.
  <.> supporting methods (discussed in xref:business-rules.adoc[business rules]) follow the usual naming conventions.
  
  
negative.code: [source,java]
  ----
  @Action                                                         // <.>
  @RequiredArgsConstructor                                        // <.>
  public class DocumentHolder_addDocument {
  
      private final DocumentHolder holder;
  
      public Document> act(Document doc) {                        // <.>
          ...
  