public virtual void AddRSShapesForElement(DomainModelLink modelElement)
            {
                if (modelElement == null)
                {
                    return;
                }

                DiagramDomainDataDirectory data = modelElement.Store.DomainDataAdvDirectory.ResolveExtensionDirectory <DiagramDomainDataDirectory>();

                if (data == null)
                {
                    throw new ArgumentNullException("DiagramDomainDataDirectory");
                }

                List <Guid> shapes = data.GetShapeTypesForElement(modelElement.GetDomainClassId());

                if (shapes != null)
                {
                    if (shapes.Count > 0)
                    {
                        DomainModelElement source = DomainRoleInfo.GetSourceRolePlayer(modelElement) as DomainModelElement;
                        DomainModelElement target = DomainRoleInfo.GetTargetRolePlayer(modelElement) as DomainModelElement;
                        foreach (Guid shape in shapes)
                        {
                            AddRSShapesForElement(source, target, modelElement, shape);
                        }
                    }
                }
            }
            public void DeleteShapesForElement(DomainModelLink element)
            {
                if (element == null)
                {
                    return;
                }

                DomainModelLink            link = element;
                DiagramDomainDataDirectory data = link.Store.DomainDataAdvDirectory.ResolveExtensionDirectory <DiagramDomainDataDirectory>();

                if (data.HasShapeForElement(link.GetDomainClassId()))
                {
                    this.DeleteShapesForElement(link.Store, link.Id);
                }
            }
            public virtual void AddRSShapesForElement(DomainModelLink modelElement)
            {
                if (modelElement == null)
                    return;

                DiagramDomainDataDirectory data = modelElement.Store.DomainDataAdvDirectory.ResolveExtensionDirectory<DiagramDomainDataDirectory>();
                if (data == null)
                    throw new ArgumentNullException("DiagramDomainDataDirectory");

                List<Guid> shapes = data.GetShapeTypesForElement(modelElement.GetDomainClassId());
                if( shapes != null )
                    if (shapes.Count > 0)
                    {
                        DomainModelElement source = DomainRoleInfo.GetSourceRolePlayer(modelElement) as DomainModelElement;
                        DomainModelElement target = DomainRoleInfo.GetTargetRolePlayer(modelElement) as DomainModelElement;
                        foreach (Guid shape in shapes)
                        {
                            AddRSShapesForElement(source, target, modelElement, shape);
                        }
                    }
            }