private Accessible FindDescendantDepthFirst(FindPredicate d, object [] args)
{
if (StateSet.Contains (StateType.ManagesDescendants))
return null;
Accessible [] childrenCopy = new Accessible [Children.Count];
children.CopyTo (childrenCopy, 0);
foreach (Accessible a in childrenCopy) {
if (d (a, args))
return a;
Accessible ret = a.FindDescendantDepthFirst (d, args);
if (ret != null)
return ret;
}
return null;
}