public virtual IList <SceneNode> CreateNodeTreeOnInsertion(SceneNode node) { List <SceneNode> list = new List <SceneNode>(); list.Add(node); if (ProjectNeutralTypes.TabControl.IsAssignableFrom((ITypeId)node.Type)) { ItemsControlElement itemsControlElement = (ItemsControlElement)node; SceneElement sceneElement1 = (SceneElement)node.ViewModel.CreateSceneNode(ProjectNeutralTypes.TabItem); itemsControlElement.Items.Add((SceneNode)sceneElement1); list.AddRange((IEnumerable <SceneNode>) this.CreateNodeTreeOnInsertion((SceneNode)sceneElement1)); SceneElement sceneElement2 = (SceneElement)node.ViewModel.CreateSceneNode(ProjectNeutralTypes.TabItem); itemsControlElement.Items.Add((SceneNode)sceneElement2); list.AddRange((IEnumerable <SceneNode>) this.CreateNodeTreeOnInsertion((SceneNode)sceneElement2)); } else if (PlatformTypes.Popup.IsAssignableFrom((ITypeId)node.Type) || ProjectNeutralTypes.Expander.IsAssignableFrom((ITypeId)node.Type) || ProjectNeutralTypes.TabItem.IsAssignableFrom((ITypeId)node.Type)) { GridElement gridElement = (GridElement)node.ViewModel.CreateSceneNode(PlatformTypes.Grid); SolidColorBrushNode solidColorBrushNode = (SolidColorBrushNode)node.ViewModel.CreateSceneNode(PlatformTypes.SolidColorBrush); solidColorBrushNode.SetValueAsWpf(SolidColorBrushNode.ColorProperty, (object)Color.FromArgb(byte.MaxValue, (byte)229, (byte)229, (byte)229)); gridElement.SetValueAsSceneNode(PanelElement.BackgroundProperty, (SceneNode)solidColorBrushNode); SceneElement sceneElement = (SceneElement)node; if (sceneElement.DefaultInsertionPoint != null) { sceneElement.DefaultInsertionPoint.Insert((SceneNode)gridElement); list.Add((SceneNode)gridElement); IExpandable expandable = node as IExpandable; if (expandable != null) { expandable.EnsureExpandable(); if (sceneElement.ProjectContext.ResolveProperty(expandable.DesignTimeExpansionProperty) != null) { node.SetLocalValue(expandable.DesignTimeExpansionProperty, (object)true); } } } } return((IList <SceneNode>)list); }