public void Insert(SceneNode nodeToInsert)
        {
            ISceneNodeCollection <SceneNode> collectionForProperty = this.SceneNode.GetCollectionForProperty((IPropertyId)this.Property);

            if (collectionForProperty.FixedCapacity.HasValue && collectionForProperty.Count >= collectionForProperty.FixedCapacity.Value)
            {
                PropertySceneInsertionPoint.Cleanup(collectionForProperty[collectionForProperty.Count - 1]);
            }
            collectionForProperty.Add(nodeToInsert);
            ControlTemplateElement controlTemplateElement = this.SceneNode as ControlTemplateElement;

            if (controlTemplateElement == null)
            {
                return;
            }
            ITypeId templateTargetTypeId = controlTemplateElement.ControlTemplateTargetTypeId;

            VisualStateManagerSceneNode.AddDefaultStates(nodeToInsert, (SceneNode)controlTemplateElement, templateTargetTypeId);
        }