SPI can be
segmented into three parts. Interfaces like Bean, Interceptor and
Decorator model container meta-data (there are a few other meta-data interfaces such as
ObserverMethod, Producer, InjectionTarget, InjectionPoint,
AnnotatedType, AnnotatedMethod, etc). Each meta-data object encapsulates
everything that the CDI container needs to know about the meta-data type