/// <summary>
        /// Add nested children.
        /// </summary>
        /// <param name="con"></param>
        protected override void OnNestedChildShapeElementAdded(NodeShapeReferencesNestedChildren con)
        {
            DomainClassInfo info = con.ChildShape.GetDomainClass();
            if (info.Id != NodeShape.DomainClassId)
            {
                DiagramItemElementViewModel elementVM = this.ViewModelStore.Factory.CreateDiagramItemViewModel(
                    info.Id, this.Diagram, con.ChildShape);

                if (elementVM != null)
                {
                    this.Diagram.AddElement(elementVM);
                    return;
                }
            }

            GraphicalDependencyItemViewModel vm = new GraphicalDependencyItemViewModel(
                                    this.ViewModelStore, this.Diagram, con.ChildShape);
            this.Diagram.AddElement(vm);
        }
        /// <summary>
        /// Called whenever a relationship of type NodeShapeReferencesNestedChildren is added and
        /// the element hosted by this model is the source.
        /// </summary>
        /// <param name="con"></param>
        protected virtual void OnNestedChildShapeElementAdded(NodeShapeReferencesNestedChildren con)
        {
            if (IsDisplayingNodeShape(con.ChildShape))
                return;

            DiagramItemElementViewModel vm = this.ViewModelStore.Factory.CreateDiagramItemViewModel(con.ChildShape.GetDomainClassId(), this.Diagram, con.ChildShape);
            this.AddNestedChild(vm);
        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="con"></param>
 protected override void OnNestedChildShapeElementAdded(NodeShapeReferencesNestedChildren con)
 {
     throw new NotSupportedException();
 }