Show:
                            PieChartLegend = Y.Base.create("pieChartLegend", Y.PieChart, [], {
                                /**
                                 * Redraws the chart instance.
                                 *
                                 * @method _redraw
                                 * @private
                                 */
                                _redraw: function()
                                {
                                    if(this._drawing)
                                    {
                                        this._callLater = true;
                                        return;
                                    }
                                    this._drawing = true;
                                    this._callLater = false;
                                    var graph = this.get("graph"),
                                        w = this.get("width"),
                                        h = this.get("height"),
                                        graphWidth,
                                        graphHeight,
                                        legend = this.get("legend"),
                                        x = 0,
                                        y = 0,
                                        legendX = 0,
                                        legendY = 0,
                                        legendWidth,
                                        legendHeight,
                                        dimension,
                                        gap,
                                        position,
                                        direction;
                                    if(graph)
                                    {
                                        if(legend)
                                        {
                                            position = legend.get("position");
                                            direction = legend.get("direction");
                                            graphWidth = graph.get("width");
                                            graphHeight = graph.get("height");
                                            legendWidth = legend.get("width");
                                            legendHeight = legend.get("height");
                                            gap = legend.get("styles").gap;
                            
                                            if((direction === "vertical" && (graphWidth + legendWidth + gap !== w)) ||
                                                (direction === "horizontal" &&  (graphHeight + legendHeight + gap !== h)))
                                            {
                                                switch(legend.get("position"))
                                                {
                                                    case LEFT :
                                                        dimension = Math.min(w - (legendWidth + gap), h);
                                                        legendHeight = h;
                                                        x = legendWidth + gap;
                                                        legend.set(HEIGHT, legendHeight);
                                                    break;
                                                    case TOP :
                                                        dimension = Math.min(h - (legendHeight + gap), w);
                                                        legendWidth = w;
                                                        y = legendHeight + gap;
                                                        legend.set(WIDTH, legendWidth);
                                                    break;
                                                    case RIGHT :
                                                        dimension = Math.min(w - (legendWidth + gap), h);
                                                        legendHeight = h;
                                                        legendX = dimension + gap;
                                                        legend.set(HEIGHT, legendHeight);
                                                    break;
                                                    case BOTTOM :
                                                        dimension = Math.min(h - (legendHeight + gap), w);
                                                        legendWidth = w;
                                                        legendY = dimension + gap;
                                                        legend.set(WIDTH, legendWidth);
                                                    break;
                                                }
                                                graph.set(WIDTH, dimension);
                                                graph.set(HEIGHT, dimension);
                                            }
                                            else
                                            {
                                                switch(legend.get("position"))
                                                {
                                                    case LEFT :
                                                        x = legendWidth + gap;
                                                    break;
                                                    case TOP :
                                                        y = legendHeight + gap;
                                                    break;
                                                    case RIGHT :
                                                        legendX = graphWidth + gap;
                                                    break;
                                                    case BOTTOM :
                                                        legendY = graphHeight + gap;
                                                    break;
                                                }
                                            }
                                        }
                                        else
                                        {
                                            graph.set(_X, 0);
                                            graph.set(_Y, 0);
                                            graph.set(WIDTH, w);
                                            graph.set(HEIGHT, h);
                                        }
                                    }
                                    this._drawing = false;
                                    if(this._callLater)
                                    {
                                        this._redraw();
                                        return;
                                    }
                                    if(graph)
                                    {
                                        graph.set(_X, x);
                                        graph.set(_Y, y);
                                    }
                                    if(legend)
                                    {
                                        legend.set(_X, legendX);
                                        legend.set(_Y, legendY);
                                    }
                                }
                            }, {
                                ATTRS: {
                                    /**
                                     * The legend for the chart.
                                     *
                                     * @attribute
                                     * @type Legend
                                     */
                                    legend: LEGEND
                                }
                            });
                            Y.PieChart = PieChartLegend;