Description: Add the checkerframework annotations (not yet packaged in Debian)
Author: Emmanuel Bourg <ebourg@apache.org>
Forwarded: not-needed
--- /dev/null
+++ b/guava/src/org/checkerframework/checker/nullness/qual/Nullable.java
@@ -0,0 +1,26 @@
+package org.checkerframework.checker.nullness.qual;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * {@link Nullable} is a type annotation that indicates that the value is not
+ * known to be non-null (see {@link NonNull}). Only if an expression has a
+ * {@link Nullable} type may it be assigned {@code null}.
+ *
+ * <p>
+ * This annotation is associated with the {@link AbstractNullnessChecker}.
+ *
+ * @see NonNull
+ * @see MonotonicNonNull
+ * @see AbstractNullnessChecker
+ * @checker_framework.manual #nullness-checker Nullness Checker
+ */
+@Documented
+@Retention(RetentionPolicy.SOURCE)
+@Target({ ElementType.TYPE_USE, ElementType.TYPE_PARAMETER })
+public @interface Nullable {
+}
--- /dev/null
+++ b/guava/src/org/checkerframework/checker/nullness/qual/MonotonicNonNull.java
@@ -0,0 +1,56 @@
+package org.checkerframework.checker.nullness.qual;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Indicates that a field (or variable) is lazily initialized to a non-null
+ * value.  Once the field becomes non-null, it never becomes null again.
+ * There is no guarantee that the field ever becomes non-null, but if it
+ * does, it will stay non-null.
+ * <p>
+ *
+ * A monotonically non-null field has these two properties:
+ * <ol>
+ * <li>The field may be assigned only non-null values.</li>
+ * <li>The field may be re-assigned as often as desired.</li>
+ * </ol>
+ * <p>
+ *
+ * When the field is first read within a method, the field cannot be
+ * assumed to be non-null.  After a check that a {@code MonotonicNonNull} field
+ * holds a non-null value, all subsequent accesses <em>within that
+ * method</em> can be assumed to be non-null, even after arbitrary external
+ * method calls that might access the field.
+ * <p>
+ *
+ * {@code MonotonicNonNull} gives stronger guarantees than {@link Nullable}.
+ * After a check that a {@link Nullable} field holds a non-null value, only
+ * accesses until the next non-{@link org.checkerframework.dataflow.qual.SideEffectFree} method is called can be assumed
+ * to be non-null.
+ * <p>
+ *
+ * To indicate that a {@code MonotonicNonNull} or {@code Nullable} field is
+ * non-null whenever a particular method is called, use
+ * {@link RequiresNonNull}.
+ * <p>
+ *
+ * Final fields are treated as MonotonicNonNull by default.
+ * <p>
+ *
+ * This annotation is associated with the {@link AbstractNullnessChecker}.
+ *
+ * @see EnsuresNonNull
+ * @see RequiresNonNull
+ * @see MonotonicQualifier
+ * @see AbstractNullnessChecker
+ * @checker_framework.manual #nullness-checker Nullness Checker
+ */
+@Documented
+@Target(ElementType.TYPE_USE)
+@Retention(RetentionPolicy.SOURCE)
+public @interface MonotonicNonNull {
+}
--- /dev/null
+++ b/guava/src/org/checkerframework/checker/nullness/qual/NonNull.java
@@ -0,0 +1,41 @@
+package org.checkerframework.checker.nullness.qual;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.lang.model.type.TypeKind;
+
+/**
+ * {@link NonNull} is a type annotation that indicates that an expression is
+ * never {@code null}.
+ *
+ * <p>
+ * For fields of a class, the {@link NonNull} annotation indicates that this
+ * field is never {@code null}
+ * <em>after the class has been fully initialized</em>. Class initialization is
+ * controlled by the Freedom Before Commitment type system, see
+ * {@link InitializationChecker} for more details.
+ *
+ * <p>
+ * For static fields, the {@link NonNull} annotation indicates that this field
+ * is never {@code null} <em>after the containing class is initialized</em>.
+ *
+ * <p>
+ * This annotation is rarely written in source code, because it is the default.
+ *
+ * <p>
+ * This annotation is associated with the {@link AbstractNullnessChecker}.
+ *
+ * @see Nullable
+ * @see MonotonicNonNull
+ * @see AbstractNullnessChecker
+ * @checker_framework.manual #nullness-checker Nullness Checker
+ */
+@Documented
+@Retention(RetentionPolicy.SOURCE)
+@Target({ ElementType.TYPE_USE, ElementType.TYPE_PARAMETER })
+public @interface NonNull {
+}
