public void Dispose()
 {
     if (m_snapshot != null)
     {
         m_snapshot.Dispose();
         m_snapshot = null;
     }
 }
 /// <summary>
 /// Releases the unmanaged resources used by the <see cref="ArchiveTreeStreamWrapper{TKey,TValue}"/> object and optionally releases the managed resources.
 /// </summary>
 /// <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
 protected override void Dispose(bool disposing)
 {
     if (!m_disposed)
     {
         try
         {
             // This will be done regardless of whether the object is finalized or disposed.
             if (disposing)
             {
                 // This will be done only when the object is disposed by calling Dispose().
                 m_snapshot.Dispose();
                 m_snapshot = null;
             }
         }
         finally
         {
             m_disposed = true;          // Prevent duplicate dispose.
             base.Dispose(disposing);    // Call base class Dispose().
         }
     }
 }