anchor.diff:      public boolean hiderProp() { /* ... */ }                    // <.>
   }
   ----
  -<.> indicates this is a property mixin
  -<.> mixee is injected into the mixin
  -<.> method (which must be called "prop") must accept no arguments, be query-only, and return a scalar value.
  -<.> supporting methods (discussed in xref:business-rules.adoc[business rules]) follow the usual naming conventions. +
  +<.> indicates this is a property mixin (that contributes its method as an association) with method name 'prop'
  +<.> mixee is injected into the mixin
  +<.> method (which must be called "prop") must accept no arguments, be query-only, and return a scalar value
  +<.> supporting methods (discussed in xref:business-rules.adoc[business rules]) follow the usual naming conventions
   (Because the property is derived/read-only, the only supporting method that is relevant is `hideProp()`).
   
   This contributes a property called "mostRecentDocument".
   
  -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="prop")                                           // <1>
  +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]
  +----
  +@Property                                                       // <.>
  +@DomainObject(nature=MIXIN, mixinMethod="prop")                 // <.>
  +@RequiredArgsConstructor                                        // <.>
   public class DocumentHolder_mostRecentDocument {
   
       private final DocumentHolder holder;
  -    public DocumentHolderDocuments(DocumentHolder holder) {     // <.>
  -        this.holder = holder;
  -    }
  -
  -    @Action(semantics=SemanticsOf.SAFE)                         // <.>
  -    @ActionLayout(contributed = Contributed.AS_ASSOCIATION)     // <.>
  +
       public Document prop() {                                    // <.>
           ...
       }
       public boolean hiderProp() { /* ... */ }                    // <.>
   }
   ----
  -<.> indicates this is a mixin, and in this case nominates the method name. +
  +<.> indicates this is a property mixin (that contributes its method as an association)
  +<.> 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
  -<.> action has no side-effects, and must match `@Mixin#method` above and accept no arguments
  -<.> and should be rendered as an association.
  +<.> method has no side-effects, must match `@DomainObject(mixinMethod=...)` above and accept no arguments
   The mixin is a property rather than a collection because the return type is a scalar.
   <.> supporting methods (discussed in xref:business-rules.adoc[business rules]) follow the usual naming conventions.
   
  
positive.code: 
  Accordingly, a mixin can be defined using the xref:refguide:applib-ant:Action.adoc[`@Action`], xref:refguide:applib-ant:Property.adoc[`@Property`] or xref:refguide:applib-ant:Collection.adoc[`@Collection`] annotations, but defined at the domain class level rather than at the method level.
  
  The older way of declaring a mixin is to use defined using the xref:refguide:applib-ant:Mixin.adoc[`@Mixin`] annotation for the domain class (in fact, `@Action` et al are meta-annotated with `@Mixin`).
  Equivalently, it can be defined using xref:refguide:applib-ant:DomainObject.adoc#nature[`@DomainObject#nature`] attribute (specifying a nature of `Nature.MIXIN`).
  
  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 '_'.
  
  
  //WARNING: TODO: v2: perhaps we should get rid of @DomainObject#nature=MIXIN ?
  
  
  == Contributed Collection
  
  The example below shows how to contribute a collection, using xref:refguide:applib-ant:Collection.adoc[`@Collection`]:
  
negative.code:     public boolean hideColl() { /* ... */ }                     // <.>
  }
  ----
  <.> indicates this is a collection mixin (that contributes its method as an association) with method name 'coll'
  <.> 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 xref:refguide:applib-ant:DomainObject.adoc[`@DomainObject`] annotation, to explicitly specify the method name:
  
  [source,java]
  ----
  @Collection                                                     // <.>
  @DomainObject(nature=MIXIN, mixinMethod="coll")                 // <.>
  @RequiredArgsConstructor                                        // <.>
  public class DocumentHolder_documents {
  
      private final DocumentHolder holder;
  
      public List<Document> coll() {                              // <.>
          ...
      }
      public boolean hideColl() { /* ... */ }                     // <.>
  }
  ----
  <.> indicates this is a collection mixin (that contributes its method as an association)
  <.> 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
  <.> method has no side-effects, must match `@DomainObject(mixinMethod=...)` above and 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.
  
  