/// <summary>
        /// Called on a role player changing.
        /// </summary>
        /// <param name="args"></param>
        private void OnReferenceChanged(RolePlayerChangedEventArgs args)
        {
            SpecificElementsDiagramReferencesDomainClasses con = args.ElementLink as SpecificElementsDiagramReferencesDomainClasses;

            if (con != null)
            {
                if (args.DomainRole.Id == SpecificElementsDiagramReferencesDomainClasses.SpecificElementsDiagramDomainRoleId)
                {
                    if (args.OldRolePlayerId == this.DiagramClassView.DiagramClass.Id)
                    {
                        RemoveReference(con.DomainClass);
                    }

                    if (args.NewRolePlayerId == this.DiagramClassView.DiagramClass.Id)
                    {
                        AddReference(con.DomainClass);
                    }
                }
                else if (args.DomainRole.Id == SpecificElementsDiagramReferencesDomainClasses.DomainClassId)
                {
                    if (args.OldRolePlayer != null)
                    {
                        RemoveReference(args.OldRolePlayer as DomainClass);
                    }

                    if (args.NewRolePlayer != null)
                    {
                        AddReference(args.NewRolePlayer as DomainClass);
                    }
                }
            }
        }
        /// <summary>
        /// Called whenever a relationship of type SpecificElementsDiagramReferencesDomainClasses is deleted and
        /// the element hosted by this model is the source.
        /// </summary>
        /// <param name="args"></param>
        private void OnReferenceRemoved(ElementDeletedEventArgs args)
        {
            SpecificElementsDiagramReferencesDomainClasses con = args.ModelElement as SpecificElementsDiagramReferencesDomainClasses;

            if (con != null)
            {
                RemoveReference(con.DomainClass);
            }
        }