@Target(ElementType.TYPE) 
@Retention(RetentionPolicy.RUNTIME)
public @interface Sequence
{
    /** The symbolic name of the datastore sequence. 
     * @return the name of the sequence
     */
    String name();

    /** Strategy for the sequence. 
     * @return the strategy for the sequence
     */
    SequenceStrategy strategy();

    /** Name of the sequence in the datastore. 
     * @return the name of the datastore sequence
     */
    String datastoreSequence() default "";

    /** Name of a factory class for generating the sequence values. 
     * @return the name of the factory class for the sequence
     */
    Class factoryClass() default void.class;

    /** Vendor extensions for this sequence. 
     * @return vendor extensions
     */
    Extension[] extensions() default {};
}
