import org.checkerframework.checker.index.qual.*; class IntroAnd { void test() { @NonNegative int a = 1 & 0; @NonNegative int b = a & 5; //:: error: (assignment.type.incompatible) @Positive int c = a & b; @NonNegative int d = a & b; @NonNegative int e = b & a; } void test_ubc_and( @IndexFor("#2") int i, int[] a, @LTLengthOf("#2") int j, int k, @NonNegative int m) { int x = a[i & k]; int x1 = a[k & i]; //:: error: (array.access.unsafe.low) :: error: (array.access.unsafe.high) int y = a[j & k]; if (j > -1) { int z = a[j & k]; } //:: error: (array.access.unsafe.high) int w = a[m & k]; if (m < a.length) { int u = a[m & k]; } } void two_arrays(int[] a, int[] b, @IndexFor("#1") int i, @IndexFor("#2") int j) { int l = a[i & j]; l = b[i & j]; } void test_pos(@Positive int x, @Positive int y) { //:: error: (assignment.type.incompatible) @Positive int z = x & y; } }