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);
	}
}

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;
	}
}

Add temporary fix to shallow copy bug
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
