private void UpdatePen(Brush brush)
        {
            Pen result;

            switch (Type)
            {
            case EdgeType.ConditionalFlow:
            case EdgeType.DefaultFlow:
            case EdgeType.SequenceFlow:
            default:
                result = new Pen(brush, 1);
                break;

            case EdgeType.Association:
            case EdgeType.DirectedAssociation:
            case EdgeType.BidirectedAssociation:
                result = new Pen {
                    Brush = brush, DashStyle = DashStyles.Dot, DashCap = PenLineCap.Round
                };
                break;

            case EdgeType.MessageFlow:
                result = new Pen {
                    Brush = brush, DashStyle = DashStyles.Dash
                };
                break;

            case EdgeType.Conversation:
                result = new Pen {
                    Brush = brush, Thickness = 3, LineJoin = PenLineJoin.Round
                };
                break;
            }
            delegateStyle.Pen = (Pen)result.GetAsFrozen();
        }