public void Dispose()
        {
            if (!m_Disposed)
            {
                GC.SuppressFinalize(this);
                m_Disposed = true;
                Allocator.Cleanup();
                NodePool.Cleanup();

                Allocator = null;
                NodePool  = null;
            }
        }