@Override public void close() { log.sharedLock.lock(); try { delegate.close(); log.unregisterCursor(this); } finally { log.sharedLock.unlock(); } }