docs: function () {
              var series = this,
                pointAttr,
                points = series.points,
                chart = series.chart,
                plotX,
                plotY,
                i,
                point,
                radius,
                symbol,
                isImage,
                graphic,
                options = series.options,
                seriesMarkerOptions = options.marker,
                seriesPointAttr = series.pointAttr[''],
                pointMarkerOptions,
                hasPointMarker,
                enabled,
                isInside,
                markerGroup = series.markerGroup,
                globallyEnabled = pick(
                  seriesMarkerOptions.enabled,
                  !series.requireSorting || series.activePointCount < (0.5 * series.xAxis.len / seriesMarkerOptions.radius)
                );
  
              if (seriesMarkerOptions.enabled !== false || series._hasPointMarkers) {
  
                  i = points.length;
                  while (i--) {
                      point = points[i];
                      plotX = mathFloor(point.plotX); // #1843
                      plotY = point.plotY;
                      graphic = point.graphic;
                      pointMarkerOptions = point.marker || {};
                      hasPointMarker = !!point.marker;
                      enabled = (globallyEnabled && pointMarkerOptions.enabled === UNDEFINED) || pointMarkerOptions.enabled;
                      isInside = chart.isInsidePlot(mathRound(plotX), plotY, chart.inverted); // #1858
  
                      // only draw the point if y is defined
                      if (enabled && plotY !== UNDEFINED && !isNaN(plotY) && point.y !== null) {
  
                          // shortcuts
                          pointAttr = point.pointAttr[point.selected ? SELECT_STATE : NORMAL_STATE] || seriesPointAttr;
                          radius = pointAttr.r;
                          symbol = pick(pointMarkerOptions.symbol, series.symbol);
                          isImage = symbol.indexOf('url') === 0;
  
                          if (graphic) { // update
                              graphic[isInside ? 'show' : 'hide'](true) // Since the marker group isn't clipped, each individual marker must be toggled
                                .animate(extend({
                                    x: plotX - radius,
                                    y: plotY - radius
                                }, graphic.symbolName ? { // don't apply to image symbols #507
                                    width: 2 * radius,
                                    height: 2 * radius
                                } : {}));
                          } else if (isInside && (radius > 0 || isImage)) {
                              point.graphic = graphic = chart.renderer.symbol(
                                symbol,
                                  plotX - radius,
                                  plotY - radius,
                                  2 * radius,
                                  2 * radius,
                                hasPointMarker ? pointMarkerOptions : seriesMarkerOptions
                                )
                                .attr(pointAttr)
                                .add(markerGroup);
                          }
  
                      } else if (graphic) {
                          point.graphic = graphic.destroy(); // #1269
                      }
                  }
              }
  
          }