Correct. However, if the same thread acquires the same lock down-stack (reentrant) he needs to get the same instance so we can maintain the `relock` count. That's why we need the `ThreadLocal` here. A different thread getting the same 'lock" gets a different instance (when he eventually gets the lock).