docs: function (width, height, animation) {
              var chart = this,
                chartWidth,
                chartHeight,
                fireEndResize;
  
              // Handle the isResizing counter
              chart.isResizing += 1;
              fireEndResize = function () {
                  if (chart) {
                      fireEvent(chart, 'endResize', null, function () {
                          chart.isResizing -= 1;
                      });
                  }
              };
  
              // set the animation for the current process
              setAnimation(animation, chart);
  
              chart.oldChartHeight = chart.chartHeight;
              chart.oldChartWidth = chart.chartWidth;
              if (defined(width)) {
                  chart.chartWidth = chartWidth = mathMax(0, mathRound(width));
                  chart.hasUserSize = !!chartWidth;
              }
              if (defined(height)) {
                  chart.chartHeight = chartHeight = mathMax(0, mathRound(height));
              }
  
              // Resize the container with the global animation applied if enabled (#2503)
              (globalAnimation ? animate : css)(chart.container, {
                  width: chartWidth + PX,
                  height: chartHeight + PX
              }, globalAnimation);
  
              chart.setChartSize(true);
              chart.renderer.setSize(chartWidth, chartHeight, animation);
  
              // handle axes
              chart.maxTicks = null;
              each(chart.axes, function (axis) {
                  axis.isDirty = true;
                  axis.setScale();
              });
  
              // make sure non-cartesian series are also handled
              each(chart.series, function (serie) {
                  serie.isDirty = true;
              });
  
              chart.isDirtyLegend = true; // force legend redraw
              chart.isDirtyBox = true; // force redraw of plot and chart border
  
              chart.layOutTitles(); // #2857
              chart.getMargins();
  
              chart.redraw(animation);
  
  
              chart.oldChartHeight = null;
              fireEvent(chart, 'resize');
  
              // fire endResize and set isResizing back
              // If animation is disabled, fire without delay
              if (globalAnimation === false) {
                  fireEndResize();
              } else { // else set a timeout with the animation duration
                  setTimeout(fireEndResize, (globalAnimation && globalAnimation.duration) || 500);
              }
          }