private void WriteData(Block block, FileStream fileStream) { // Create back link to previous spilled block. var lastFilePosition = new[] { _filePosition }; _filePosition = (int)fileStream.Position; FastWrite.WriteInts(fileStream.SafeFileHandle, lastFilePosition, 0, 1); // Write one data block. if (typeof(TData) == typeof(short)) { FastWrite.WriteShorts(fileStream.SafeFileHandle, (short[])(object)block._data, 0, _blockSize); } else if (typeof(TData) == typeof(int)) { FastWrite.WriteInts(fileStream.SafeFileHandle, (int[])(object)block._data, 0, _blockSize); } else if (typeof(TData) == typeof(float)) { FastWrite.WriteFloats(fileStream.SafeFileHandle, (float[])(object)block._data, 0, _blockSize); } else { Assume.Fail(); } }