import java.util.*; public class LongRangeMod { void test(int[] arr, int x) { if(arr.length % x < 0) { System.out.println("Impossible"); } } void test(int x) { for (int i = 0; i < 10; i++) { if(i % x > 10) { System.out.println("impossible"); } } } // IDEA-113410 void test() { List someList = new LinkedList<>(); someList.add("foo"); int i = 0; Object something = null; for (String s : someList) { if(i % 2 == 0) { something = new Object(); } else { something.toString(); // <== No warning here: // now we know that i = 0 on the first iteration, thus // i % 2 == 0 is true, thus something always points to an Object after first iteration } i++; } } }