@Nonnull @Target(value=TYPE) @Inherited @Documented @Retention(value=RUNTIME) public @interface CatalogedBy
CatalogType class to specify a set of special catalog
 classes which act as the catalog for the annotated type. The annotated class
 must extend CatalogType, and the specified catalog classes should be
 queryable or otherwise serve constant instances of the cataloged type.
 All Classes mentioned in the CatalogedBy annotation must meet the following requirements:
| Modifier and Type | Required Element and Description | 
|---|---|
Class<?>[] | 
value
Gets the class that is the catalog for this  
CatalogedBy type. | 
public abstract Class<?>[] value
CatalogedBy type.
 Since the type class annotated with CatalogedBy knows what the
 catalog class is, we can safely rely on the value to get all known
 instances of the CatalogedBy.
 This is similar to knowing at runtime that all available "EntityType"(s) are cataloged in the "EntityTypes" class.