The Requires annotation can be used to specify dependencies within a package of
 components. If one component requires the use of another, such as a scene or light
 component needing a transform, this can be a convenient way to specify this
 relationship and reduce the amount of explicit configuration during entity
 initialization.
 
 If a component type extends an additional abstract component type that also is
 annotated with Requires, the union of the required types is the effective set of
 types.
 
 When a component type that has been annotated with this annotation is added to an
 entity, all required component types that are not already attached to the entity are
 added. All newly added components have their owner set to the initial component so that
 when it's removed, the required components are cleaned up as well.