/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package doublex.lib.locks;

/**
 *
 * @author DoubleX
 * @param <K>
 */
public class SyncMutableLock<K> implements IMutableLockable<K> {

    private final IMutableLockable<K> mMutableLock;

    public SyncMutableLock(final IMutableLockable<K> mutableLock) {
        mMutableLock = mutableLock;
    }

    @Override
    public synchronized void tryChangeKey(K oldKey, K newKey) {
        mMutableLock.tryChangeKey(oldKey, newKey);
    }

    @Override
    public boolean isLocked() {
        return mMutableLock.isLocked();
    }

    @Override
    public void lock() {
        mMutableLock.lock();
    }

    @Override
    public void tryUnlock(K key) {
        mMutableLock.tryUnlock(key);
    }

}

@@ -203,18 +203,125 @@
 ib.locks
+.lock;%0A%0Aimport doublex.lib.locks.IMutableLockable;%0Aimport doublex.lib.locks.exceptions.KeyMismatchException
 ;%0A
-
 %0A/**%0A *%0A
@@ -643,16 +643,22 @@
 angeKey(
+final 
 K oldKey
@@ -658,16 +658,22 @@
  oldKey,
+ final
  K newKe
@@ -671,24 +671,65 @@
 l K newKey) 
+%0A            throws KeyMismatchException 
 %7B%0A        mM
@@ -965,24 +965,37 @@
 %0A    public 
+synchronized 
 void tryUnlo
@@ -1003,16 +1003,44 @@
 k(K key)
+ throws KeyMismatchException
  %7B%0A     

Update SyncMutableLock.java