@@ -0,0 +1,886 @@
+/*%0A * To change this license header, choose License Headers in Project Properties.%0A * To change this template file, choose Tools %7C Templates%0A * and open the template in the editor.%0A */%0Apackage doublex.lib.locks;%0A%0A/**%0A *%0A * @author DoubleX%0A * @param %3CK%3E%0A */%0Apublic class SyncMutableLock%3CK%3E implements IMutableLockable%3CK%3E %7B%0A%0A    private final IMutableLockable%3CK%3E mMutableLock;%0A%0A    public SyncMutableLock(final IMutableLockable%3CK%3E mutableLock) %7B%0A        mMutableLock = mutableLock;%0A    %7D%0A%0A    @Override%0A    public synchronized void tryChangeKey(K oldKey, K newKey) %7B%0A        mMutableLock.tryChangeKey(oldKey, newKey);%0A    %7D%0A%0A    @Override%0A    public boolean isLocked() %7B%0A        return mMutableLock.isLocked();%0A    %7D%0A%0A    @Override%0A    public void lock() %7B%0A        mMutableLock.lock();%0A    %7D%0A%0A    @Override%0A    public void tryUnlock(K key) %7B%0A        mMutableLock.tryUnlock(key);%0A    %7D%0A%0A%7D%0A

Create SyncMutableLock.java