@Override
 public <A> void update(long recid, A value, Serializer<A> serializer) {
   commitLock.readLock().lock();
   try {
     uncommitedData = true;
     Lock lock = locks[Store.lockPos(recid)].writeLock();
     lock.lock();
     try {
       Object old = get(recid, serializer);
       for (Reference<Tx> txr : txs) {
         Tx tx = txr.get();
         if (tx == null) continue;
         tx.old.putIfAbsent(recid, old);
       }
       super.update(recid, value, serializer);
     } finally {
       lock.unlock();
     }
   } finally {
     commitLock.readLock().unlock();
   }
 }
 protected <A> void superUpdate(long recid, A value, Serializer<A> serializer) {
   assert (commitLock.isWriteLockedByCurrentThread());
   super.update(recid, value, serializer);
 }