{@code @Documented} means that the annotation indicates that elements using this annotation should be documented by JavaDoc.
{@code @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.
{@code @Inherited} signals that a custom annotation used in a class should be inherited by all of its sub classes.
{@code @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.