private void buildBufferIndexList(byte[] changeMapData) {

			ChangeMap changeMap = new ChangeMap(changeMapData);

			bufferIndexList = new ArrayList<>();

			IntSet emptySet = new IntSet(getFreeIndexes());

			for (int bufferIndex = 0; bufferIndex < bufferCount; bufferIndex++) {
				if (!emptySet.contains(bufferIndex) &&
					(changeMap.hasChanged(bufferIndex) || !changeMap.containsIndex(bufferIndex))) {
					// Add block index if block is not empty and block has either been
					// modified in versioned srcFile since checkout to initial destFile, or
					// block was added in most recent version of srcFile
					bufferIndexList.add(bufferIndex);
				}
			}
		}
Construct input block stream for specific block indexes
within the file based upon a changeMap.  The head buffer
will never be included in the transfer.
@param changeMapData ChangeMap data which is used in determining which
buffers should be streamed
@throws IOException if an I/O error occurs
Ghidra/Framework/DB/src/main/java/db/buffers/LocalBufferFile.java