internal bool RemoveInSubtree (object item)
{
bool removed = false;
if (IsBottomLevel) {
removed |= RemoveItem (item);
} else {
foreach (StandardCollectionViewGroup group in Items) {
if (group.RemoveInSubtree (item)) {
removed = true;
}
}
for (int i = 0; i < ProtectedItems.Count; i ++) {
var g = ProtectedItems [i] as StandardCollectionViewGroup;
if (g != null && g.ProtectedItems.Count == 0) {
ProtectedItems.Remove (g);
i --;
}
}
}
return removed;
}
}