Implementations of classes used to package up collections of values as an argument to a method of the MAJ API. These classes are not themselves persistent objects. Packaging up property values into classes allows related values to be managed together. This approach is useful when:

- ensuring conditional rules of the AAF specification are adhered to;
- enabling a method to return a collection of related values.

All classes in this package override the {@link java.lang.Object#equals(Object)}, {@link java.lang.Object#clone()}, {@link java.lang.Object#toString()} and {@link java.lang.Object#hashCode()} methods. They are all {@linkplain java.lang.Cloneable cloneable} and {@linkplain java.lang.Serializable serializable}.

## Heritage

Many of the classes in this package implement the search criteria specified in the union package. For more information on their heritage, see the heritage of the union package.

Classes starting with the word multi are used to manage interleaved essence and these classes are used as array elements in the method signatures of {@link tv.amwa.maj.model.EssenceMultiAccess}.

The {@link tv.amwa.maj.argument.Fade Fade} class collects together and manages {@linkplain tv.amwa.maj.model.SourceClip source clip} fade properties as a single item.

The {@link tv.amwa.maj.argument.DefaultFade DefaultFade} and {@link tv.amwa.maj.argument.SourceReferenceValue} classes implement interfaces specified to ensure rules of the AAF object specification v1.1 are met. Similar structures were defined in the existing C-based reference implementation in file "`AAFTypes.h`" and used to ensure specified rules are complied with as indicated in the methods in "`AAF.idl`".