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.