/// <summary>
        /// Makes sure child and link shapes are visible
        /// </summary>
        public virtual void FixupShapeVisibility()
        {
            ReadOnlyCollection <NodeShapeReferencesNestedChildren> linksN = NodeShapeReferencesNestedChildren.GetLinksToNestedChildren(this.ShapeElement);

            foreach (NodeShapeReferencesNestedChildren link in linksN)
            {
                OnNestedChildShapeElementAdded(link);
            }

            ReadOnlyCollection <NodeShapeReferencesRelativeChildren> linksR = NodeShapeReferencesRelativeChildren.GetLinksToRelativeChildren(this.ShapeElement);

            foreach (NodeShapeReferencesRelativeChildren link in linksR)
            {
                OnRelativeChildShapeElementAdded(link);
            }

            foreach (BaseDiagramItemElementViewModel vm in this.NestedChildren)
            {
                vm.FixupShapeVisibility();
            }

            foreach (BaseDiagramItemElementViewModel vm in this.RelativeChildren)
            {
                vm.FixupShapeVisibility();
            }
        }