001    package org.bukkit.configuration.serialization;
002    
003    import java.lang.annotation.ElementType;
004    import java.lang.annotation.Retention;
005    import java.lang.annotation.RetentionPolicy;
006    import java.lang.annotation.Target;
007    
008    /**
009     * Applies to a {@link ConfigurationSerializable} that will delegate all
010     * deserialization to another {@link ConfigurationSerializable}.
011     */
012    @Retention(RetentionPolicy.RUNTIME)
013    @Target(ElementType.TYPE)
014    public @interface DelegateDeserialization {
015        /**
016         * Which class should be used as a delegate for this classes
017         * deserialization
018         *
019         * @return Delegate class
020         */
021        public Class<? extends ConfigurationSerializable> value();
022    }