public MenuItem[] Find (string key, bool searchAllChildren)
{
if (string.IsNullOrEmpty (key))
throw new ArgumentNullException ("key");
List<MenuItem> list = new List<MenuItem> ();
foreach (MenuItem m in items)
if (string.Compare (m.Name, key, true) == 0)
list.Add (m);
if (searchAllChildren)
foreach (MenuItem m in items)
list.AddRange (m.MenuItems.Find (key, true));
return list.ToArray ();
}