/// <summary>
        /// Core update routine.
        /// </summary>
        /// <param name="context">The context that holds information about the animation.</param>
        protected override void UpdateAnimationOverride(AnimationContext context)
        {
            context.EnsureDefaultTransforms();
            ScaleTransform transform = context.Target.GetScaleTransform();

            double fromX = this.StartScaleX.HasValue ? this.StartScaleX.Value : transform.ScaleX;
            double toX   = this.EndScaleX.HasValue ? this.EndScaleX.Value : transform.ScaleX;

            double duration = this.Duration.TimeSpan.TotalSeconds;

            context.ScaleX(0, fromX, duration, toX);

            base.UpdateAnimationOverride(context);
        }
        /// <summary>
        /// Core update routine.
        /// </summary>
        /// <param name="context">The context that holds information about the animation.</param>
        protected override void UpdateAnimationOverride(AnimationContext context)
        {
            if (context == null)
            {
                return;
            }

            context.EnsureDefaultTransforms();
            ScaleTransform transform = context.Target.GetScaleTransform();

            double fromX = StartScaleX ?? transform.ScaleX;
            double toX   = EndScaleX ?? transform.ScaleX;

            double duration = this.Duration.TimeSpan.TotalSeconds;

            context.ScaleX(0, fromX, duration, toX);

            base.UpdateAnimationOverride(context);
        }