@Override public boolean equals(Object o) { // assume that subclasses have performed instanceof checks already Lock l = (Lock) o; return isWrite() == l.isWrite() && isThreadLocal() == l.isThreadLocal() && isInstanceLocal() == l.isInstanceLocal() && isDominated() == l.isDominated() && isDuplicate() == l.isDuplicate() && isClassLocal() == l.isClassLocal() && isReadOnly() == l.isReadOnly() && isMethodLocal() == l.isMethodLocal(); }