package transaction;

public class ShallowLock<T> extends Lock<T> {

	public ShallowLock(T data) {
		super(data);
	}
	
	@Override
	public T getReadable(Token token) throws LockException {
		if (!canRead(token)) {
			throw new LockException("You do not have a read lock on the item");
		}
		
		// TODO only copy map structure, keep references to vaults
		return lockedData;
	}
}

package transaction;

public class ShallowLock<T> extends Lock<T> {

	public ShallowLock(T data) {
		super(data);
	}
	
	@Override
	public T getReadable(Token token) throws LockException {
		if (!canRead(token)) {
			throw new LockException("You do not have a read lock on the item");
		}
		
		return cloner.shallowClone(lockedData);
	}
}

--- 
+++ 
@@ -12,6 +12,7 @@
 			throw new LockException("You do not have a read lock on the item");
 		}
 		
-		return cloner.shallowClone(lockedData);
+		// TODO only copy map structure, keep references to vaults
+		return lockedData;
 	}
 }
Add temporary fix to shallow copy bug

This results in an unsafe environment, as you will have write access when requesting read only
Added TODO
