import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
public @interface Marker {
    enum Kind {
        FIRST,
        SECOND
    }

    String name();

    String label() default "label";

    byte byteValue() default 1;

    char charValue() default 'x';

    double doubleValue() default -0.0;

    float floatValue() default Float.NaN;

    int intValue() default Integer.MIN_VALUE;

    long longValue() default Long.MAX_VALUE;

    short shortValue() default -2;

    boolean booleanValue() default true;

    int[] numbers() default {};

    Kind kind() default Kind.FIRST;

    Class<?> type() default String.class;

    NestedMarker nested() default @NestedMarker;
}
