| ArrayType | 
 Describes an XMP array property. 
 | 
| PropertyDescription | 
 Describes an XMP property that can live either in an SchemaDescription
 as top-level property or or in an StructType as a struct field. 
 When added to a schema description it has to be in the same namespace as the parent schema. 
 | 
| PropertyType | 
 The base interface for all XMP property types, which are
 
                SimpleType (describes simple properties),
                ArrayType (describes array properties),
                StructType (describes struct properties),
                UnspecifiedType (this is only used during schema parsing)
  
 | 
| SchemaDescription | 
 Describes a single XMP namespace. 
 | 
| SchemaVisitor | 
  | 
| SimpleType | 
 Describes a simple XMP type. 
 | 
| StructType | 
 Describes an XMP array property. 
 | 
| TypeRegistry | 
 The type registry serves two purposes:
 
 1. 
 | 
| TypeRule | 
 Marker Interface for all property rules. 
 | 
| UnspecifiedType | 
 Interface for a type which type is not defined yet,
 but which can already be registered with the TypeRegistry. 
 |