synchronized
statement lock expressions
that consist of a non-final
field reference.
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
{ }
}