internal static Transform CloneTransform(Transform transform)
        {
            if (transform == null)
            {
                return(null);
            }
            transform.GetType();
            ScaleTransform scaleTransform;

            if ((scaleTransform = (transform as ScaleTransform)) != null)
            {
                return(new ScaleTransform
                {
                    CenterX = scaleTransform.CenterX,
                    CenterY = scaleTransform.CenterY,
                    ScaleX = scaleTransform.ScaleX,
                    ScaleY = scaleTransform.ScaleY
                });
            }
            RotateTransform rotateTransform;

            if ((rotateTransform = (transform as RotateTransform)) != null)
            {
                return(new RotateTransform
                {
                    Angle = rotateTransform.Angle,
                    CenterX = rotateTransform.CenterX,
                    CenterY = rotateTransform.CenterY
                });
            }
            SkewTransform skewTransform;

            if ((skewTransform = (transform as SkewTransform)) != null)
            {
                return(new SkewTransform
                {
                    AngleX = skewTransform.AngleX,
                    AngleY = skewTransform.AngleY,
                    CenterX = skewTransform.CenterX,
                    CenterY = skewTransform.CenterY
                });
            }
            TranslateTransform translateTransform;

            if ((translateTransform = (transform as TranslateTransform)) != null)
            {
                return(new TranslateTransform
                {
                    X = translateTransform.X,
                    Y = translateTransform.Y
                });
            }
            MatrixTransform matrixTransform;

            if ((matrixTransform = (transform as MatrixTransform)) != null)
            {
                return(new MatrixTransform
                {
                    Matrix = matrixTransform.Matrix
                });
            }
            TransformGroup transformGroup;

            if ((transformGroup = (transform as TransformGroup)) != null)
            {
                TransformGroup transformGroup2 = new TransformGroup();
                foreach (Transform current in transformGroup.Children)
                {
                    transformGroup2.Children.Add(MouseDragElementBehavior.CloneTransform(current));
                }
                return(transformGroup2);
            }
            return(null);
        }