@Override
  public boolean tryFlush() throws IOException {
    if (!isDirty()) {
      return true;
    }

    final ReentrantReadWriteLock.ReadLock readLock = contentProtectingLock.readLock();
    if (!readLock.tryLock()) {
      return false;
    }
    try {
      flushImpl();
      return true;
    }
    finally {
      readLock.unlock();
    }
  }
@Override
  public boolean tryFlush()