/*
 * test that caught null pointers exceptions in finalizers work correctly
 * and that local variables are accessible in null pointer exception handlers.
 */
import java.io.*;

public class NullPointerTest {

    static String s;

    public static void main(String[] args) {
	  System.out.println(tryfinally() + s);
    }

    public static String tryfinally() {
	String yuck = null;
	String local_s = null;

	try {
	    return "This is ";
	} finally {
	    try {
		local_s = "Perfect";
		/* trigger null pointer exception */
		String x = yuck.toLowerCase();
	    } catch (Exception _) {
		/* 
		 * when the null pointer exception is caught, we must still
		 * be able to access local_s.
		 * Our return address for the finally clause must also still
		 * be intact.
		 */
		s = local_s;
	    }
	}
    }
}


/* Expected Output:
This is Perfect
*/

@@ -312,16 +312,233 @@
 ) + s);%0A
+%09  try %7B%0A%09%09// Note: String.concat(%22%22) will not dereference 'this'%0A%09%09((String)null).concat(%22%22);%0A%09  %09System.out.println(%22FAILED!%22);%0A%09  %7D catch (NullPointerException e) %7B%0A%09  %09System.out.println(%22This is good too%22);%0A%09  %7D%0A
     %7D%0A%0A 
@@ -1057,11 +1057,28 @@
 Perfect%0A
+This is good too%0A
 */%0A

Check that kaffe doesn't allow invocation of a null pointer.