package npe;


public class GuaranteedDereferenceInteractionWithAssertionMethods {

	public Object x;

	public boolean b;

	public int falsePositive() {

		if (x == null)
			System.out.println("x is null");
		if (b) {
			x = bar();
			checkForError();
		}

		return x.hashCode();
	}

	public void checkForError() {

	}
	public void reportError() {

	}
	public Object bar() {
		return new Object();
	}

	public int report(Object x, Object y, Object z) {
		if (x == null && y == null) 
			reportError();
			
		if (z == null)
			z = new Object();
		return x.hashCode() + z.hashCode();
	}
	
	public int report2(Object x, Object y, Object z) {
		if (x == null && y == null) 
			reportError();
			
		if (z == null)
			z = new Object();
		int result = x.hashCode() + z.hashCode();
		checkForError();
		return result;
	}
}

@@ -269,32 +269,132 @@
 hashCode();%0A%09%7D%0A%0A
+%09int falsePositive2(Object x) %7B%0A%09%09if (x == null) %0A%09%09%09reportError();%0A%09%09return x.hashCode();%0A%09%09%0A%09%09%0A%09%7D%0A
 %09public void che

Add another false positive test case