Static utility methods and generators used internally by the MAJ API that may also be useful to applications using the API. Also included in this package is a {@linkplain tv.amwa.maj.util.LookupTable lookup table} mapping AAF type names to their respective Java type names and a description of the four {@linkplain tv.amwa.maj.util.LookupTable.Strategy strategies} used to achieve this mapping.

## External generators

The auto and test generators are provided as bootstrap facilities for the MAJ API as independent code from the core API. This is deliberate so the code generation and testing is not polluted by implicit behaviour of the API being tested.

### Auto generation

The {@linkplain tv.amwa.maj.util.AutoGeneration MAJ auto generator} takes the XML description of a meta dictionary and generates source code for classes and interfaces that, when compiled, can be used to extend the runtime data model supported by MAJ.

### Test generation

The {@linkplain tv.amwa.maj.util.TestGeneration MAJ test generator} takes the XML description of a meta dictionary and generates JUnit tests for all the expected classes and interfaces that it describes. The test generator has been used to generate over 25,000 tests for the MAJ API baseline AAF data model.

## Internal generators

Other generation capability is provided within the core API as it can be assumed that the data model is clean and safe once the external tests have been run. These include:

- Generation of a meta dictionary from in-memory definitions;
- {@linkplain tv.amwa.maj.industry.JPAGenerator Generation of JPA-compliant persistent mappings}.