If a group is selected, CtrlShiftG should eliminate the group and put its former children in the location where the group sat in the tree. If multiple groups are selected, it should do the same for each group. However if any of the multiple selected groups are descendants of a parent one, only ungroup the eldest parent. (If this behavior is too had to implement, alternate behaviors may be acceptable so don't put too much time into making this edge case work precisely as described.)
If a group is selected, CtrlShiftG should eliminate the group and put its former children in the location where the group sat in the tree. If multiple groups are selected, it should do the same for each group. However if any of the multiple selected groups are descendants of a parent one, only ungroup the eldest parent. (If this behavior is too had to implement, alternate behaviors may be acceptable so don't put too much time into making this edge case work precisely as described.)