private void ApplyNewStyle <T>(string propertyName, T newStyle, AnnotaionStyleType annotationStyleType = AnnotaionStyleType.LayerStyle) where T : Styles.Style
        {
            ValueItem valueItem = layerStyle.ValueItems.LastOrDefault().CloneDeep();

            if (annotationStyleType == AnnotaionStyleType.FileLinkStyle)
            {
                valueItem     = fileLinkStyle.ValueItems.LastOrDefault().CloneDeep();
                newStyle.Name = "FileLinkStyle";
            }
            valueItem.Value = RandomString();
            valueItem.GetType().GetProperty(propertyName).GetSetMethod().Invoke(valueItem, new object[] { newStyle });
            TextStyle textStyle = newStyle as TextStyle;

            if (textStyle != null)
            {
                switch (annotationStyleType)
                {
                case AnnotaionStyleType.LayerStyle:
                default:
                    valueItem.DefaultTextStyle.PointPlacement = PointPlacement.LowerRight;
                    break;

                case AnnotaionStyleType.FileLinkStyle:
                    valueItem.DefaultTextStyle.PointPlacement = PointPlacement.LowerCenter;
                    break;
                }
            }

            switch (annotationStyleType)
            {
            case AnnotaionStyleType.FileLinkStyle:
                fileLinkStyle.ValueItems.Add(valueItem);
                break;

            case AnnotaionStyleType.LayerStyle:
            default:
                layerStyle.ValueItems.Add(valueItem);
                break;
            }
        }