There's more than obfuscation behind using array[133] instead of 5. Check out this code:<br><br>Integer[] array = (Integer[]) c.get(cache);<br>array[132] = 5;<br>array[132] = 4;<br>System.out.printf("%d%n", 2 + 2);<br><br>It prints... 5.,(reply>), @Richard Brewster  It will surely be surprising to some, but that's beside my point, which is that using array[133] in this context is a more direct way of referencing it than using the literal 5, which then goes through several layers of language rules, in the end referring to the same array field.,(reply>), This is not surprising, because:<br>array[132] = 5; // references array[133] to get 5 and assign to array[132]<br>array[132] = 4; // references array[132], which now has the value 5, so it isn't changed