void AddInSubtree (StandardCollectionViewGroup group, object item, CultureInfo culture, IList<GroupDescription> descriptions, bool allowSorting)
{
int depth = group.Depth;
if (group.IsBottomLevel) {
group.AddItem (item, allowSorting);
CollectionChanged.Raise (this, new NotifyCollectionChangedEventArgs (NotifyCollectionChangedAction.Add, item, IndexOfSubtree (item)));
} else {
var desc = descriptions [group.Depth];
var groupNames = desc.GroupNameFromItem (item, group.Depth, culture);
if (groupNames is IList) {
foreach (var name in (IList) groupNames)
AddInSubtree (group, item, culture, descriptions, allowSorting, name);
} else {
AddInSubtree (group, item, culture, descriptions, allowSorting, groupNames);
}
}
}