private void ForceChildrenCaching(CollectionViewGroup[] groups)
        {
            List <AutomationPeer> subAutomationPeers = this.GetChildren();

            foreach (CollectionViewGroup group in groups)
            {
                Debug.Assert(!(group is DataGridCollectionViewGroupRoot));
                bool groupFound = false;

                foreach (AutomationPeer automationPeer in subAutomationPeers)
                {
                    DataGridGroupAutomationPeer groupAutomationPeer = automationPeer as DataGridGroupAutomationPeer;

                    if (groupAutomationPeer == null)
                    {
                        continue;
                    }

                    if (groupAutomationPeer.Owner.CollectionViewGroup == group)
                    {
                        subAutomationPeers = groupAutomationPeer.GetChildren();
                        groupFound         = true;
                        break;
                    }
                }

                if (!groupFound)
                {
                    break;
                }
            }
        }