@@ -0,0 +1,3487 @@
+package com.fasterxml.jackson.annotation;%0A%0Aimport java.lang.annotation.ElementType;%0Aimport java.lang.annotation.Retention;%0Aimport java.lang.annotation.RetentionPolicy;%0Aimport java.lang.annotation.Target;%0A%0A/**%0A * Annotation used to indicate when value of the annotated property (when%0A * used for a field, method or constructor parameter), or all %0A * properties of the annotated class, is to be serialized.%0A * Without annotation property values are always included, but by using%0A * this annotation one can specify simple exclusion rules to reduce%0A * amount of properties to write out.%0A * %0A * @since 2.0%0A */%0A@Target(%7BElementType.METHOD, ElementType.FIELD, ElementType.TYPE, ElementType.PARAMETER%7D)%0A@Retention(RetentionPolicy.RUNTIME)%0A@com.fasterxml.jackson.annotation.JacksonAnnotation%0Apublic @interface JsonInclude%0A%7B%0A    /**%0A     * Inclusion rule to use.%0A     */%0A    public Include value() default Include.ALWAYS;%0A    %0A    /*%0A    /**********************************************************%0A    /* Value enumerations needed%0A    /**********************************************************%0A     */%0A%0A    /**%0A     * Enumeration used with %7B@link JsonSerialize#include%7D property%0A     * to define which properties%0A     * of Java Beans are to be included in serialization.%0A     *%3Cp%3E%0A     * Note: Jackson 1.x had similarly named (%22Inclusion%22) enumeration included%0A     * in %3Ccode%3EJsonSerialize%3C/code%3E annotation: it is not deprecated%0A     * and this value used instead.%0A     */%0A    public enum Include%0A    %7B%0A        /**%0A         * Value that indicates that property is to be always included,%0A         * independent of value of the property.%0A         */%0A        ALWAYS,%0A%0A        /**%0A         * Value that indicates that only properties with non-null%0A         * values are to be included.%0A         */%0A        NON_NULL,%0A%0A        /**%0A         * Value that indicates that only properties that have values%0A         * that differ from default settings (meaning values they have%0A         * when Bean is constructed with its no-arguments constructor)%0A         * are to be included. Value is generally not useful with%0A         * %7B@link java.util.Map%7Ds, since they have no default values;%0A         * and if used, works same as %7B@link #ALWAYS%7D.%0A         */%0A        NON_DEFAULT,%0A%0A        /**%0A         * Value that indicates that only properties that have values%0A         * that values that are null or what is considered empty are%0A         * not to be included.%0A         *%3Cp%3E%0A         * Default emptiness is defined for following type:%0A         *%3Cul%3E%0A         * %3Cli%3EFor %7B@link java.util.Collection%7Ds and %7B@link java.util.Map%7Ds,%0A         *    method %3Ccode%3EisEmpty()%3C/code%3E is called;%0A         *   %3C/li%3E%0A         * %3Cli%3EFor Java arrays, empty arrays are ones with length of 0%0A         *   %3C/li%3E%0A         * %3Cli%3EFor Java %7B@link java.lang.String%7Ds, %3Ccode%3Elength()%3C/code%3E is called,%0A         *   and return value of 0 indicates empty String (note that %3Ccode%3EString.isEmpty()%3C/code%3E%0A         *   was added in Java 1.6 and as such can not be used by Jackson%0A         *   %3C/li%3E%0A         * %3Cul%3E%0A         *  and for other types, non-null values are to be included.%0A         *%3Cp%3E%0A         * Note that this default handling can be overridden by custom%0A         * %3Ccode%3EJsonSerializer%3C/code%3E implementation: if method %3Ccode%3EisEmpty()%3C/code%3E%0A         * is overridden, it will be called to see if non-null values are%0A         * considered empty (null is always considered empty).%0A         */%0A        NON_EMPTY%0A        ;%0A    %7D%0A%0A%7D%0A

Add @JsonInclude, for [JACKSON-752]