I was going through the example, in this link, I wonder how the class can access the private variable lock, in the code sample. Kindly explain me pros !!. The code is here at, yourLock = bower.lock.tryLock();.
public class Safelock {
static class Friend {
    private final String name;
    private final Lock lock = new ReentrantLock();
    public Friend(String name) {
        this.name = name;
    }
    public String getName() {
        return this.name;
    }
    public boolean impendingBow(Friend bower) {
        Boolean myLock = false;
        Boolean yourLock = false;
        try {
            myLock = lock.tryLock();
            yourLock = bower.lock.tryLock();
        } finally {
            if (! (myLock && yourLock)) {
                if (myLock) {
                    lock.unlock();
                }
                if (yourLock) {
                    bower.lock.unlock();
                }
            }
        }
        return myLock && yourLock;
    }
 
    