Reports calls to wait() not made inside a corresponding synchronized
statement or synchronized method. Calling wait() on an object
without holding a lock on that object will result in an IllegalMonitorStateException being thrown.
Such a construct is not necessarily an error, as the necessary lock may be acquired before
the containing method is called, but its worth looking at.