Please review: http://cr.openjdk.java.net/~lagergren/8016235/ , Jean-Francois's bug when a catch block uses something that need not necessarily have been defined in the try block, causing illegal bytecode to be generated /M