private IEnumerable<IModelNode> FlattenChildren(IEnumerable<IModelNode> vertices) { foreach (var node in vertices) { yield return node; if (node != null) { foreach (var child in FlattenChildren(node.Children)) { yield return child; } } } } }