Show:
                            /**
                             * Adds support for the <code>transform</code> attribute of <code>Graphic</code>
                             * <code>Shape</code> instances.
                             * @module anim
                             * @submodule anim-shape-transform
                             * @deprecated Use anim-shape instead.
                             */
                            /**
                             * Adds support for the <code>transform</code> and <code>fill</code> attributes of <code>Graphic</code>
                             * and <code>Shape</code> instances. The <code>anim-shape</code> submodule can be used for all animations
                             * involving <code>Graphic</code> <code>Shape</code> attributes.
                             *
                             * @module anim
                             * @submodule anim-shape
                             */
                                var NUM = Number,
                                TO,
                                TOSTRING,
                                COLOR = "color",
                                STOPS = "stops",
                                TYPE = "type",
                                GETUPDATEDSTOPS = function(anim, from, to, elapsed, duration, fn)
                                {
                                    var i = 0,
                                        getUpdatedColorValue = Y.Anim.getUpdatedColorValue,
                                        toStop,
                                        fromStop,
                                        prop,
                                        len = to.length,
                                        stops = [],
                                        stop;
                                    for(; i < len; i = i + 1)
                                    {
                                        toStop = to[i];
                                        fromStop = from[i];
                                        stop = {};
                                        for(prop in toStop)
                                        {
                                            if(toStop.hasOwnProperty(prop))
                                            {
                                                if(prop === COLOR)
                                                {
                                                    stop[prop] = Y.Color.toHex(getUpdatedColorValue(
                                                        Y.Color.toHex(fromStop[prop]),
                                                        Y.Color.toHex(toStop[prop]),
                                                        elapsed,
                                                        duration,
                                                        fn
                                                    ));
                                                }
                                                else
                                                {
                                                    stop[prop] = fn(elapsed, NUM(fromStop[prop]), NUM(toStop[prop]) - NUM(fromStop[prop]), duration);
                                                }
                                            }
                                        }
                                        stops.push(stop);
                                    }
                                    return stops;
                                },
                                FILLANDSTROKEBEHAVIOR = {
                                    set: function(anim, att, from, to, elapsed, duration, fn) {
                                        var i,
                                        updated = {},
                                        getUpdatedColorValue = Y.Anim.getUpdatedColorValue,
                                        getUpdatedStops = GETUPDATEDSTOPS;
                                        for(i in to)
                                        {
                                            if(to.hasOwnProperty(i) && i !== TYPE)
                                            {
                                                switch(i)
                                                {
                                                    case COLOR :
                                                        updated[i] = getUpdatedColorValue(from[i], to[i], elapsed, duration, fn);
                                                    break;
                                                    case STOPS :
                                                        updated[i] = getUpdatedStops(anim, from[i], to[i], elapsed, duration, fn);
                                                    break;
                                                    default :
                                                        updated[i] = fn(elapsed, NUM(from[i]), NUM(to[i]) - NUM(from[i]), duration);
                                                    break;
                                                }
                                            }
                                        }
                                        anim._node.set(att, updated);
                                    }
                                };
                                Y.Anim.behaviors.fill = FILLANDSTROKEBEHAVIOR;
                                Y.Anim.behaviors.stroke = FILLANDSTROKEBEHAVIOR;
                            
                                Y.Anim.behaviors.transform = {
                                    set: function(anim, att, from, to, elapsed, duration, fn) {
                                        var node = anim._node,
                                            transform = "",
                                            transformTo,
                                            transformFrom,
                                            toArgs,
                                            fromArgs,
                                            i = 0,
                                            j,
                                            argLen,
                                            len;
                                        to = TO;
                                        len = TO.length;
                                        for(; i < len; ++i)
                                        {
                                            toArgs = to[i].concat();
                                            fromArgs = from[i].concat();
                                            transformTo = toArgs.shift();
                                            transformFrom = fromArgs.shift();
                                            argLen = toArgs.length;
                                            transform += transformTo + "(";
                                            for(j = 0; j < argLen; ++j)
                                            {
                                                transform += fn(elapsed, NUM(fromArgs[j]), NUM(toArgs[j]) - NUM(fromArgs[j]), duration);
                                                if(j < argLen - 1)
                                                {
                                                    transform += ", ";
                                                }
                                            }
                                            transform += ");";
                                        }
                                        if(transform)
                                        {
                                            node.set('transform', transform);
                                        }
                                        node._transform = TOSTRING;
                                    },
                            
                                    get: function(anim) {
                                        var node = anim._node,
                                            fromMatrix = node.matrix,
                                            toString = anim.get("to").transform,
                                            fromString = node.get("transform"),
                                            toArray = Y.MatrixUtil.getTransformArray(toString),
                                            fromArray = fromString ? Y.MatrixUtil.getTransformArray(fromString) : null,
                                            toMatrix,
                                            i,
                                            len,
                                            transformFunction,
                                            from;
                                        if(toArray)
                                        {
                                            if(!fromArray || fromArray.length < 1)
                                            {
                                                fromArray = [];
                                                len = toArray.length;
                                                for(i = 0; i < len; ++i)
                                                {
                                                    transformFunction = toArray[i][0];
                                                    fromArray[i] = Y.MatrixUtil.getTransformFunctionArray(transformFunction);
                                                }
                                                TO = toArray;
                                                from = fromArray;
                                            }
                                            else if(Y.MatrixUtil.compareTransformSequence(toArray, fromArray))
                                            {
                                                TO = toArray;
                                                from = fromArray;
                                            }
                                            else
                                            {
                                                toMatrix = new Y.Matrix();
                                                len = toArray.length;
                                                for(i = 0; i < len; ++i)
                                                {
                                                    transformFunction = toArray[i].shift();
                                                    transformFunction = transformFunction === "matrix" ? "multiply" : transformFunction;
                                                    toMatrix[transformFunction].apply(toMatrix, toArray[i]);
                                                }
                            
                                                TO = toMatrix.decompose();
                                                from = fromMatrix.decompose();
                                            }
                                        }
                                        TOSTRING = toString;
                                        return from;
                                    }
                                };