public SnapshotWriter(Win32SnapshotFile file, int levels, int pageSize, int bufferSize)
		{
			Contract.Requires(file != null && levels >= 0 && pageSize >= 0 && bufferSize >= pageSize); //TODO: && file.CanRead ?
			m_file = file;
			m_pageSize = pageSize;
			m_bufferSize = bufferSize;
			//TODO: verify pageSize is a power of two, and bufferSize is a multiple of pageSize!
			Contract.Assert(bufferSize % pageSize == 0);

			m_writer = new SliceWriter(bufferSize);
			m_levels = levels;

			m_jumpTable = new KeyValuePair<ulong, ulong>[levels];
			for (int i = 0; i < levels; i++)
			{
				m_jumpTable[i] = new KeyValuePair<ulong, ulong>(0, 0);
			}
		}
        public SnapshotWriter(Win32SnapshotFile file, int levels, int pageSize, int bufferSize)
        {
            Contract.Requires(file != null && levels >= 0 && pageSize >= 0 && bufferSize >= pageSize);             //TODO: && file.CanRead ?
            m_file       = file;
            m_pageSize   = pageSize;
            m_bufferSize = bufferSize;
            //TODO: verify pageSize is a power of two, and bufferSize is a multiple of pageSize!
            Contract.Assert(bufferSize % pageSize == 0);

            m_writer = new SliceWriter(bufferSize);
            m_levels = levels;

            m_jumpTable = new KeyValuePair <ulong, ulong> [levels];
            for (int i = 0; i < levels; i++)
            {
                m_jumpTable[i] = new KeyValuePair <ulong, ulong>(0, 0);
            }
        }