@Documented @Retention(value=RUNTIME) @Target(value={TYPE_USE,TYPE_PARAMETER}) public @interface IndexOrLow
The 
 String.indexOf(String) method is declared as
 
   class String {
     @IndexOrLow("this") int indexOf(String str) { ... }
   }
 Writing @IndexOrLow("arr") is equivalent to writing @GTENegativeOne @LTLengthOf("arr"), and that is how it is
 treated internally by the checker. Thus, if you write an @IndexOrLow("arr") annotation,
 you might see warnings about @GTENegativeOne or @LTLengthOf.
GTENegativeOne, 
LTLengthOfpublic abstract String[] value