public class MismatchedWait {

	public void foo(Object a, Object b) throws InterruptedException {
		synchronized (a) {
			b.wait();
		}
	}

	public void bar(Object a, Object b) throws InterruptedException {
		synchronized (a) {
			b.notify();
			b.notifyAll();
		}
	}
}

@@ -260,11 +260,196 @@
 ;%0A%09%09%7D%0A%09%7D
+%0A%0A%09private Object lock = new Object();%0A%0A%09public void doNotReport() throws InterruptedException %7B%0A%09%09synchronized (lock) %7B%0A%09%09%09while (lock.toString().equals(%22duh%22))%0A%09%09%09%09lock.wait();%0A%09%09%7D%0A%09%7D
 %0A%7D%0A

Added a problematic false positive.