public void RemoveAllManagers <T>()
     where T : class
 {
     for (int index = m_managers_size - 1; index >= 0; index--)
     {
         if (m_managers[index] is T)
         {
             ArrayEx.RemoveAt(m_managers, ref m_managers_size, index);
         }
     }
     ArrayEx.Trim(ref m_managers, ref m_managers_size);
 }