void FlattenContainersIn (Runtime.Container container)
{
// Need to create a collection to hold the inner containers
// because otherwise we'd end up modifying during iteration
var innerContainers = new HashSet<Runtime.Container> ();
foreach (var c in container.content) {
var innerContainer = c as Runtime.Container;
if (innerContainer)
innerContainers.Add (innerContainer);
}
// Can't flatten the named inner containers, but we can at least
// iterate through their children
if (container.namedContent != null) {
foreach (var keyValue in container.namedContent) {
var namedInnerContainer = keyValue.Value as Runtime.Container;
if (namedInnerContainer)
innerContainers.Add (namedInnerContainer);
}
}
foreach (var innerContainer in innerContainers) {
TryFlattenContainer (innerContainer);
FlattenContainersIn (innerContainer);
}
}