code: private void initFileSize(FileChannel ciphertextFileChannel) throws IOException {
  		if (fileSize.get() == -1l) {
  			LOG.trace("First channel for this openFile. Initializing file size...");
  			long cleartextSize = 0l;
  			try {
  				long ciphertextSize = ciphertextFileChannel.size();
  				if (ciphertextSize > 0l) {
  					cleartextSize = Cryptors.cleartextSize(ciphertextSize - cryptor.fileHeaderCryptor().headerSize(), cryptor);
  				}
  			} catch (IllegalArgumentException e) {
  				LOG.warn("Invalid cipher text file size. Assuming empty file.", e);
  				assert cleartextSize == 0l;
  			}
  			fileSize.compareAndSet(-1l, cleartextSize);
  		}
  	}
docs: Called by {@link #newFileChannel(EffectiveOpenOptions)} to determine the fileSize.
  <p>
  Before the size is initialized (i.e. before a channel has been created), {@link #size()} must not be called.
  <p>
  Initialization happens at most once per open file. Subsequent invocations are no-ops.