synchronized
statements where the lock expression
is a reference to a non-final
field.
Such statements are unlikely to have useful semantics, as different threads may acquire different locks even when operating on the same object.
Example:
private Object o; public void foo() { synchronized (o) // synchronization on a non-final field { } }