/// <summary>
        /// Implementation of <see cref="System.Windows.Freezable.GetCurrentValueAsFrozenCore(Freezable)">Freezable.GetCurrentValueAsFrozenCore</see>.
        /// </summary>
        /// <param name="sourceFreezable"></param>
        protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable)
        {
            GeneralTransform3DTo2DTo3D transform = (GeneralTransform3DTo2DTo3D)sourceFreezable;

            base.GetCurrentValueAsFrozenCore(sourceFreezable);
            CopyCommon(transform);
        }
        /// <summary>
        /// Implementation of <see cref="System.Windows.Freezable.CloneCurrentValueCore(Freezable)">Freezable.CloneCurrentValueCore</see>.
        /// </summary>
        /// <param name="sourceFreezable"></param>
        protected override void CloneCurrentValueCore(Freezable sourceFreezable)
        {
            GeneralTransform3DTo2DTo3D transform = (GeneralTransform3DTo2DTo3D)sourceFreezable;

            base.CloneCurrentValueCore(sourceFreezable);
            CopyCommon(transform);
        }
 /// <summary> 
 /// Clones values that do not have corresponding DPs 
 /// </summary>
 /// <param name="transform"></param> 
 private void CopyCommon(GeneralTransform3DTo2DTo3D transform)
 {
     _transform3DTo2D = transform._transform3DTo2D;
     _transform2DTo3D = transform._transform2DTo3D; 
 }
 /// <summary>
 /// Clones values that do not have corresponding DPs
 /// </summary>
 /// <param name="transform"></param>
 private void CopyCommon(GeneralTransform3DTo2DTo3D transform)
 {
     _transform3DTo2D = transform._transform3DTo2D;
     _transform2DTo3D = transform._transform2DTo3D;
 }