@Override
		public void writeBlock(BufferFileBlock block) throws IOException {
			synchronized (LocalManagedBufferFile.this) {
				int bufferIndex = block.getIndex() - 1;
				if (bufferIndex >= 0) {
					versionBufferIfNeeded(bufferIndex);
				}
				super.writeBlock(block);
				if (changeMap != null && bufferIndex >= 0) {
					// NOTE: versioned empty blocks should not get streamed
					// and will be updated with free list update.  If free
					// buffers are written, the changeMap will get corrected
					// provided the free list is updated after the streaming
					// is complete
					changeMap.bufferChanged(bufferIndex, false);
				}
			}
		}
<code>LocalManagedOutputBlockStream</code> extends <code>LocalOutputBlockStream</code>
for use when updating versioned buffer file.  This implementation causes change
map data to be updated.  It is important that the free list is updated after 
streaming is complete.
Ghidra/Framework/DB/src/main/java/db/buffers/LocalManagedBufferFile.java