public void WriteDataClusters(NTFSVolume volume, long firstClusterVCN, byte[] data)
        {
            int  count;
            long lastClusterVcnToWrite;

            if (data.Length % volume.BytesPerCluster > 0)
            {
                int paddedLength = (int)Math.Ceiling((double)data.Length / volume.BytesPerCluster) * volume.BytesPerCluster;
                // last cluster could be partial, we must zero-fill it before write
                count = paddedLength / volume.BytesPerCluster;
                lastClusterVcnToWrite = firstClusterVCN + count - 1;
                if (lastClusterVcnToWrite == HighestVCN)
                {
                    byte[] temp = new byte[paddedLength];
                    Array.Copy(data, temp, data.Length);
                    data = temp;
                }
                else
                {
                    // only the last cluster can be partial
                    throw new ArgumentException("Cannot write partial cluster");
                }
            }
            else
            {
                count = data.Length / volume.BytesPerCluster;
                lastClusterVcnToWrite = firstClusterVCN + count - 1;
            }

            if (firstClusterVCN < LowestVCN || lastClusterVcnToWrite > HighestVCN)
            {
                string message = String.Format("Cluster VCN {0}-{1} is not within the valid range ({2}-{3})", firstClusterVCN, firstClusterVCN + count, LowestVCN, HighestVCN);
                throw new ArgumentOutOfRangeException(message);
            }

            KeyValuePairList <long, int> sequence = m_dataRunSequence.TranslateToLCN(firstClusterVCN, count);
            long bytesWritten = 0;

            foreach (KeyValuePair <long, int> run in sequence)
            {
                byte[] clusters = new byte[run.Value * volume.BytesPerCluster];
                Array.Copy(data, bytesWritten, clusters, 0, clusters.Length);
                volume.WriteClusters(run.Key, clusters);
                bytesWritten += clusters.Length;
            }
        }