@Documented @SubtypeOf(value=Nullable.class) @Target(value=TYPE_USE) @Retention(value=RUNTIME) public @interface MonotonicNonNull
A monotonically non-null field has these two properties:
When the field is first read within a method, the field cannot be assumed to be non-null.
 After a check that a MonotonicNonNull field holds a non-null value, all subsequent
 accesses within that method can be assumed to be non-null, even after arbitrary external
 method calls that might access the field.
 
MonotonicNonNull gives stronger guarantees than Nullable. After a check that a
 Nullable field holds a non-null value, only accesses until the next non-SideEffectFree method is called can be assumed to be
 non-null.
 
To indicate that a MonotonicNonNull or Nullable field is non-null whenever a
 particular method is called, use RequiresNonNull.
 
Final fields are treated as MonotonicNonNull by default.
This annotation is associated with the AbstractNullnessChecker.
EnsuresNonNull, 
RequiresNonNull, 
MonotonicQualifier, 
AbstractNullnessChecker