public void Dispose()
        {
            m_Initialized = false;
            m_Disposing   = true;
            if (m_NorthWestChild != null)
            {
                m_NorthWestChild.Dispose();
            }

            if (m_NorthEastChild != null)
            {
                m_NorthEastChild.Dispose();
            }

            if (m_SouthWestChild != null)
            {
                m_SouthWestChild.Dispose();
            }

            if (m_SouthEastChild != null)
            {
                m_SouthEastChild.Dispose();
            }

            if (m_NwImageLayer != null)
            {
                m_NwImageLayer.Dispose();
                m_NwImageLayer = null;
            }

            if (m_NeImageLayer != null)
            {
                m_NeImageLayer.Dispose();
                m_NeImageLayer = null;
            }

            if (m_SwImageLayer != null)
            {
                m_SwImageLayer.Dispose();
                m_SwImageLayer = null;
            }

            if (m_SeImageLayer != null)
            {
                m_SeImageLayer.Dispose();
                m_SeImageLayer = null;
            }

            if (m_ImageStream != null)
            {
                m_ImageStream.Close();
            }

            if (!m_Initializing)
            {
                m_Disposing = false;
            }
        }