StartupActivity
@Documented
means that the annotation indicates that elements using this annotation should be documented by JavaDoc.
@Target
specifies where we can use the annotation. If you do not define any Target type that means annotation can be applied to any element.
@Inherited
signals that a custom annotation used in a class should be inherited by all of its sub classes.
@Retention
indicates how long annotations with the annotated type are to be retained. RetentionPolicy.RUNTIME means the annotation should be available at runtime, for inspection via java reflection.